├── .gitattributes
├── .gitignore
├── META-INF
└── com
│ └── google
│ └── android
│ ├── update-binary
│ └── updater-script
├── README.md
├── common
├── post-fs-data.sh
├── service.sh
└── system.prop
├── install.sh
└── module.prop
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Declare files that will always have LF line endings on checkout.
2 | META-INF/** text eol=lf
3 | *.prop text eol=lf
4 | *.sh text eol=lf
5 | *.md text eol=lf
6 |
7 | # Denote all files that are truly binary and should not be modified.
8 | system/** binary
9 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | /output
2 |
--------------------------------------------------------------------------------
/META-INF/com/google/android/update-binary:
--------------------------------------------------------------------------------
1 | #!/sbin/sh
2 |
3 | TMPDIR=/dev/tmp
4 | MOUNTPATH=/dev/magisk_img
5 |
6 | # Default permissions
7 | umask 022
8 |
9 | # Initial cleanup
10 | rm -rf $TMPDIR 2>/dev/null
11 | mkdir -p $TMPDIR
12 |
13 | # echo before loading util_functions
14 | ui_print() { echo "$1"; }
15 |
16 | require_new_magisk() {
17 | ui_print "***********************************"
18 | ui_print " Please install the latest Magisk! "
19 | ui_print "***********************************"
20 | exit 1
21 | }
22 |
23 | imageless_magisk() {
24 | [ $MAGISK_VER_CODE -gt 18100 ]
25 | return $?
26 | }
27 |
28 | ##########################################################################################
29 | # Environment
30 | ##########################################################################################
31 |
32 | OUTFD=$2
33 | ZIPFILE=$3
34 |
35 | mount /data 2>/dev/null
36 |
37 | # Load utility functions
38 | if [ -f /data/adb/magisk/util_functions.sh ]; then
39 | . /data/adb/magisk/util_functions.sh
40 | NVBASE=/data/adb
41 | else
42 | require_new_magisk
43 | fi
44 |
45 | # Preperation for flashable zips
46 | setup_flashable
47 |
48 | # Mount partitions
49 | mount_partitions
50 |
51 | # Detect version and architecture
52 | api_level_arch_detect
53 |
54 | # Setup busybox and binaries
55 | $BOOTMODE && boot_actions || recovery_actions
56 |
57 | ##########################################################################################
58 | # Preparation
59 | ##########################################################################################
60 |
61 | # Extract common files
62 | unzip -oj "$ZIPFILE" module.prop install.sh uninstall.sh 'common/*' -d $TMPDIR >&2
63 |
64 | [ ! -f $TMPDIR/install.sh ] && abort "! Unable to extract zip file!"
65 | # Load install script
66 | . $TMPDIR/install.sh
67 |
68 | if imageless_magisk; then
69 | $BOOTMODE && MODDIRNAME=modules_update || MODDIRNAME=modules
70 | MODULEROOT=$NVBASE/$MODDIRNAME
71 | else
72 | $BOOTMODE && IMGNAME=magisk_merge.img || IMGNAME=magisk.img
73 | IMG=$NVBASE/$IMGNAME
74 | request_zip_size_check "$ZIPFILE"
75 | mount_magisk_img
76 | MODULEROOT=$MOUNTPATH
77 | fi
78 |
79 | MODID=`grep_prop id $TMPDIR/module.prop`
80 | MODPATH=$MODULEROOT/$MODID
81 |
82 | print_modname
83 |
84 | ui_print "******************************"
85 | ui_print "Powered by Magisk (@topjohnwu)"
86 | ui_print "******************************"
87 |
88 | ##########################################################################################
89 | # Install
90 | ##########################################################################################
91 |
92 | # Create mod paths
93 | rm -rf $MODPATH 2>/dev/null
94 | mkdir -p $MODPATH
95 |
96 | on_install
97 |
98 | # Remove placeholder
99 | rm -f $MODPATH/system/placeholder 2>/dev/null
100 |
101 | # Custom uninstaller
102 | [ -f $TMPDIR/uninstall.sh ] && cp -af $TMPDIR/uninstall.sh $MODPATH/uninstall.sh
103 |
104 | # Auto Mount
105 | if imageless_magisk; then
106 | $SKIPMOUNT && touch $MODPATH/skip_mount
107 | else
108 | $SKIPMOUNT || touch $MODPATH/auto_mount
109 | fi
110 |
111 | # prop files
112 | $PROPFILE && cp -af $TMPDIR/system.prop $MODPATH/system.prop
113 |
114 | # Module info
115 | cp -af $TMPDIR/module.prop $MODPATH/module.prop
116 | if $BOOTMODE; then
117 | # Update info for Magisk Manager
118 | if imageless_magisk; then
119 | mktouch $NVBASE/modules/$MODID/update
120 | cp -af $TMPDIR/module.prop $NVBASE/modules/$MODID/module.prop
121 | else
122 | mktouch /sbin/.magisk/img/$MODID/update
123 | cp -af $TMPDIR/module.prop /sbin/.magisk/img/$MODID/module.prop
124 | fi
125 | fi
126 |
127 | # post-fs-data mode scripts
128 | $POSTFSDATA && cp -af $TMPDIR/post-fs-data.sh $MODPATH/post-fs-data.sh
129 |
130 | # service mode scripts
131 | $LATESTARTSERVICE && cp -af $TMPDIR/service.sh $MODPATH/service.sh
132 |
133 | # Handle replace folders
134 | for TARGET in $REPLACE; do
135 | mktouch $MODPATH$TARGET/.replace
136 | done
137 |
138 | ui_print "- Setting permissions"
139 | set_permissions
140 |
141 | ##########################################################################################
142 | # Finalizing
143 | ##########################################################################################
144 |
145 | cd /
146 | imageless_magisk || unmount_magisk_img
147 | $BOOTMODE || recovery_cleanup
148 | rm -rf $TMPDIR $MOUNTPATH
149 |
150 | ui_print "- Done"
151 | exit 0
152 |
--------------------------------------------------------------------------------
/META-INF/com/google/android/updater-script:
--------------------------------------------------------------------------------
1 | #MAGISK
2 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ## System-less De-bloater
2 |
3 | by sunilpaulmathew@xda-developers.com
4 |
5 | Version: 2.1
6 |
7 | ### De-bloat the following system apps on Lineage and Oxygen-OS
8 | * /system/app/Duo
9 | * /system/app/Music2
10 | * /system/app/Photos
11 | * /system/app/Videos
12 | * /system/app/Jelly
13 | * /system/app/crDroidMusic
14 | * /system/app/Email
15 | * /system/priv-app/FlipFlap
16 | * /system/priv-app/Eleven
17 |
18 | ### Disclaimer
19 |
20 | This module is made for personal use only.
21 |
--------------------------------------------------------------------------------
/common/post-fs-data.sh:
--------------------------------------------------------------------------------
1 | #!/system/bin/sh
2 | # Do NOT assume where your module will be located.
3 | # ALWAYS use $MODDIR if you need to know where this script
4 | # and module is placed.
5 | # This will make sure your module will still work
6 | # if Magisk change its mount point in the future
7 | MODDIR=${0%/*}
8 |
9 | # This script will be executed in post-fs-data mode
10 |
--------------------------------------------------------------------------------
/common/service.sh:
--------------------------------------------------------------------------------
1 | #!/system/bin/sh
2 | # Do NOT assume where your module will be located.
3 | # ALWAYS use $MODDIR if you need to know where this script
4 | # and module is placed.
5 | # This will make sure your module will still work
6 | # if Magisk change its mount point in the future
7 | MODDIR=${0%/*}
8 |
9 | # This script will be executed in late_start service mode
10 |
--------------------------------------------------------------------------------
/common/system.prop:
--------------------------------------------------------------------------------
1 | # This file will be read by resetprop
2 | # Example: Change dpi
3 | # ro.sf.lcd_density=320
4 |
--------------------------------------------------------------------------------
/install.sh:
--------------------------------------------------------------------------------
1 | ##########################################################################################
2 | #
3 | # Magisk Module Installer Script
4 | #
5 | ##########################################################################################
6 | ##########################################################################################
7 | #
8 | # Instructions:
9 | #
10 | # 1. Place your files into system folder (delete the placeholder file)
11 | # 2. Fill in your module's info into module.prop
12 | # 3. Configure and implement callbacks in this file
13 | # 4. If you need boot scripts, add them into common/post-fs-data.sh or common/service.sh
14 | # 5. Add your additional or modified system properties into common/system.prop
15 | #
16 | ##########################################################################################
17 |
18 | ##########################################################################################
19 | # Config Flags
20 | ##########################################################################################
21 |
22 | # Set to true if you do *NOT* want Magisk to mount
23 | # any files for you. Most modules would NOT want
24 | # to set this flag to true
25 | SKIPMOUNT=false
26 |
27 | # Set to true if you need to load system.prop
28 | PROPFILE=false
29 |
30 | # Set to true if you need post-fs-data script
31 | POSTFSDATA=false
32 |
33 | # Set to true if you need late_start service script
34 | LATESTARTSERVICE=false
35 |
36 | ##########################################################################################
37 | # Replace list
38 | ##########################################################################################
39 |
40 | # List all directories you want to directly replace in the system
41 | # Check the documentations for more info why you would need this
42 |
43 | # Construct your list in the following format
44 | # This is an example
45 | REPLACE_EXAMPLE="
46 | /system/app/Youtube
47 | /system/priv-app/SystemUI
48 | /system/priv-app/Settings
49 | /system/framework
50 | "
51 |
52 | # Construct your own list here
53 | REPLACE="
54 | /system/app/Duo
55 | /system/app/Music2
56 | /system/app/Photos
57 | /system/app/Videos
58 | /system/app/Jelly
59 | /system/app/crDroidMusic
60 | /system/app/Email
61 | /system/priv-app/FlipFlap
62 | /system/priv-app/Eleven
63 | "
64 |
65 | ##########################################################################################
66 | #
67 | # Function Callbacks
68 | #
69 | # The following functions will be called by the installation framework.
70 | # You do not have the ability to modify update-binary, the only way you can customize
71 | # installation is through implementing these functions.
72 | #
73 | # When running your callbacks, the installation framework will make sure the Magisk
74 | # internal busybox path is *PREPENDED* to PATH, so all common commands shall exist.
75 | # Also, it will make sure /data, /system, and /vendor is properly mounted.
76 | #
77 | ##########################################################################################
78 | ##########################################################################################
79 | #
80 | # The installation framework will export some variables and functions.
81 | # You should use these variables and functions for installation.
82 | #
83 | # ! DO NOT use any Magisk internal paths as those are NOT public API.
84 | # ! DO NOT use other functions in util_functions.sh as they are NOT public API.
85 | # ! Non public APIs are not guranteed to maintain compatibility between releases.
86 | #
87 | # Available variables:
88 | #
89 | # MAGISK_VER (string): the version string of current installed Magisk
90 | # MAGISK_VER_CODE (int): the version code of current installed Magisk
91 | # BOOTMODE (bool): true if the module is currently installing in Magisk Manager
92 | # MODPATH (path): the path where your module files should be installed
93 | # TMPDIR (path): a place where you can temporarily store files
94 | # ZIPFILE (path): your module's installation zip
95 | # ARCH (string): the architecture of the device. Value is either arm, arm64, x86, or x64
96 | # IS64BIT (bool): true if $ARCH is either arm64 or x64
97 | # API (int): the API level (Android version) of the device
98 | #
99 | # Availible functions:
100 | #
101 | # ui_print
102 | # print to console
103 | # Avoid using 'echo' as it will not display in custom recovery's console
104 | #
105 | # abort
106 | # print error message to console and terminate installation
107 | # Avoid using 'exit' as it will skip the termination cleanup steps
108 | #
109 | # set_perm [context]
110 | # if [context] is empty, it will default to "u:object_r:system_file:s0"
111 | # this function is a shorthand for the following commands
112 | # chown owner.group target
113 | # chmod permission target
114 | # chcon context target
115 | #
116 | # set_perm_recursive [context]
117 | # if [context] is empty, it will default to "u:object_r:system_file:s0"
118 | # for all files in , it will call:
119 | # set_perm file owner group filepermission context
120 | # for all directories in (including itself), it will call:
121 | # set_perm dir owner group dirpermission context
122 | #
123 | ##########################################################################################
124 | ##########################################################################################
125 | # If you need boot scripts, DO NOT use general boot scripts (post-fs-data.d/service.d)
126 | # ONLY use module scripts as it respects the module status (remove/disable) and is
127 | # guaranteed to maintain the same behavior in future Magisk releases.
128 | # Enable boot scripts by setting the flags in the config section above.
129 | ##########################################################################################
130 |
131 | # Set what you want to display when installing your module
132 |
133 | print_modname() {
134 | ui_print "******************************"
135 | ui_print " System-less De-bloater v2.1 "
136 | ui_print "******************************"
137 | }
138 |
139 | # Copy/extract your module files into $MODPATH in on_install.
140 |
141 | on_install() {
142 | # The following is the default implementation: extract $ZIPFILE/system to $MODPATH
143 | # Extend/change the logic to whatever you want
144 | ui_print "- Extracting module files"
145 | unzip -o "$ZIPFILE" 'system/*' -d $MODPATH >&2
146 | }
147 |
148 | # Only some special files require specific permissions
149 | # This function will be called after on_install is done
150 | # The default permissions should be good enough for most cases
151 |
152 | set_permissions() {
153 | # The following is the default rule, DO NOT remove
154 | set_perm_recursive $MODPATH 0 0 0755 0644
155 |
156 | # Here are some examples:
157 | # set_perm_recursive $MODPATH/system/lib 0 0 0755 0644
158 | # set_perm $MODPATH/system/bin/app_process32 0 2000 0755 u:object_r:zygote_exec:s0
159 | # set_perm $MODPATH/system/bin/dex2oat 0 2000 0755 u:object_r:dex2oat_exec:s0
160 | # set_perm $MODPATH/system/lib/libart.so 0 0 0644
161 | }
162 |
163 | # You can add more functions to assist your custom script code
164 |
--------------------------------------------------------------------------------
/module.prop:
--------------------------------------------------------------------------------
1 | id=De-bloater
2 | name=System-less De-bloater
3 | version=v2.1
4 | versionCode=2
5 | author=sunilpaulmathew@xda-developers.com
6 | description=De-bloat System Apps Systemless-ly
7 |
--------------------------------------------------------------------------------