├── .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 | --------------------------------------------------------------------------------