Compare commits

...

24 commits

Author SHA1 Message Date
w1nst0n 316b01b5ee
This project is no longer maintained! 2021-10-07 22:09:40 +02:00
w1nst0n 0b98f69fde
Add EOL warning 2021-09-09 18:05:04 +02:00
Ryan Fransen-Pruden 6c6b63e33c Update Carriers.sh (I narrowed down hotspot issue to com.verizon.mips.services) 2021-07-29 20:46:55 +00:00
hakerdefo bfdbf13442 Update AOSP.sh with some information related to "com.android.wallpaper.livepicker". 2021-05-25 17:17:34 +00:00
w1nst0n 480b292bd9
Add "com.google.mainline.telemetry" (address #27) 2021-04-04 23:52:45 +02:00
w1nst0n f4d4744398
New package + description update (adress #71, #64) 2021-04-04 23:45:32 +02:00
w1nst0n 51e22ac254
Support for poco phones (xiaomi sub-brand) 2021-03-30 19:11:57 +02:00
w1nst0n 7ded3301e4 New Version (2.9.1) 2021-03-05 23:49:40 +01:00
w1nst0n 76a3035fa2 UX improvement + bugfixes (includes #78) 2021-03-05 23:49:26 +01:00
w1nst0n f09dfe8fe7 Improve documentation 2021-03-05 23:24:28 +01:00
w1nst0n ff66e774b2 New packages 2021-03-05 22:55:21 +01:00
w1nst0n 6c4e819275 Add zip as a dependency + Bash doesn't need to be the default shell on MacOS 2021-03-03 20:02:22 +01:00
Max Overmeyer ff05dd35b2 Added some more Samsung apps (Galaxy A9 2018, Android 10, Europe, not branded) 2021-02-24 20:12:14 +00:00
Waryle W 6c6798fd04 Update Samsung.sh - fix Easy One Hand mode description 2021-02-23 14:13:28 +00:00
Elges István 8e35a1d104 Updates on some Xiaomi Advanced Debloat options 2021-02-22 21:16:00 +00:00
w1nst0n e410b3d9fe Better bash version check (#60) 2021-02-22 20:57:20 +00:00
Max Overmeyer 39d6ab29d6 Update Samsung.sh, typo in package name 2021-02-22 20:06:47 +00:00
w1nst0n 38d216688f New Version (v2.9) 2021-01-30 01:54:31 +01:00
w1nst0n d0d73a2c2d Systemless debloat support for all android version 2021-01-30 01:54:26 +01:00
w1nst0n 4a6ae80380 Add new packages (cherry pick !10) 2021-01-30 01:54:02 +01:00
w1nst0n 5573f5c701 Adress #49 + #51 2021-01-27 22:55:59 +01:00
w1nst0n 53357d76dc Partial Android 10 support + fix #48 2021-01-27 22:27:43 +01:00
w1nst0n 3d24cc2f49 Fix parsing issue (package / path) 2021-01-19 22:16:48 +01:00
w1nst0n 9e40855840 Hotfix (v2.8.4) 2021-01-17 04:48:30 +01:00
10 changed files with 517 additions and 114 deletions

View file

@ -1,3 +1,60 @@
# New Version (v2.9.1)
## New packages added
- **AOSP** : 1
- **Asus** : 2
- **Google** : 1
- **Carriers** : 3 (AT&T)
- **OnePlus**: 1
- **Pending**: 24
- **Samsung** : 9
- **Xiaomi** : 1
## Bugfixes
- Bash version check not working as expected (#60)
- Debloating/restoring not working if the script was run from the recovery
- Package name typo (!3) (thanks @maximilian.overmeyer!)
- "pm: command not found" when disabling packages (Android 7 [Nougat] and below) (#78)
## Miscellaneous
- Documentation improvement/update for many apps.
- UI/UX improvement for the recovery version of the script
# New Version (v2.9)
**Note:** The `debloat_script.sh` is now in maintenance mode and won't receive any more features. The focus is on the developement of a GUI.
### Magisk module and root support for Android 10+
Root users can now systemlessly debloat their device. The script will create a flashable Magisk zip you'll need to flash from **TWRP** or **Magisk Manager** (recommended). Once installed the module will, on boot, replace the APKs folders with an empty folder (only containing a `.replace` file).
Systemless debloat is the only solution for Android 10+ users because *system* can't be mounted in read-write anymore.
## New packages added
- **Samsung** : 5 (thanks @j0taz)
## Bugfixes
- **Debloated packages (non root) reappear after a reboot (#48)**
- Bad apks names when using root features (parsing issue)
- Connection preferences settings won't open (AOSP list, Pixel 4a / Android 11) (#49)
- Impossible to use a non-root feature after having used a root feature
# Miscellaneous
- App data is now cleared (`pm clear $package`) before root debloat
# Hotfix (v2.8.4)
- Error when remounting `/system` as read-only after a restore/debloat action (#46)
- Package search feature now displays APK path along with the package name
- The APK was not backed-up when you use the manual root debloat feature (`1 - debloat a package`)
- `deleted_apks.txt` not found
- Mounting error on Android 9+ (only fixed for Android 9)
# IMPORTANT NOTE
**Root features do currently not work for Android 10+**. Android 10 has introduced a new dynamic partitioning system
which, in short, prevent to easily mount system filesystem in read-write (use of EXT4 dedup filesystem, which is not writable).
Fortunately, the awesome @topjohnwu (developer of Magisk) found a solution. I'll try to update my script to use the Magisk magic.
# Hotfix (v2.8.3)
- Fix a bug (bad variable name) which basically broke all the non root debloat/restore features.

View file

@ -1,6 +1,10 @@
# This project is no longer maintained!
The whole project has been rewritten in Rust. The Universal Android Debloat is now a real software with a cross-platform GUI. It is still in a early stage of developpement but most features are there. Please do not open new merge requests and issues on this repo.<br>
===> [The new Universal Android Debloat](https://github.com/0x192/universal-android-debloater)
# Universal Android Debloater
**DISCLAIMER**: Use this script at your own risk. I am not responsible for anything that could happen to your phone.
**DISCLAIMER**: Use this script at your own risk. I am not responsible for anything that could happen to your phone.
## Summary
I try to maintain a universal tool which removes bloatwares on any Android phones by using ADB.
@ -74,15 +78,15 @@ NB : The non-root method is NOT a real uninstallation for system apps (see the [
Debian Base:
```bash
$ sudo apt install android-sdk-platform-tools qpdf
$ sudo apt install android-sdk-platform-tools qpdf zip
```
Arch-Linux Base:
```bash
$ sudo pacman -S android-tools qpdf
$ sudo pacman -S android-tools qpdf zip
```
Red Hat Base:
```bash
$ sudo yum install android-tools qpdf
$ sudo yum install android-tools qpdf zip
```
</details>
</p>
@ -99,18 +103,6 @@ You will also need to upgrade bash because Apple ships a very old bash version (
```bash
$ brew install android-platform-tools qpdf bash
```
You have to make the new bash version your default:
```bash
$ sudo echo "/usr/local/bin/bash" >> /etc/shells
$ chsh -s /usr/local/bin/bash
```
Check if it works:
```bash
$ echo $BASH_VERSION
```
</details>
</p>
@ -141,7 +133,7 @@ For now, there is no USB support in the WSL. This means you need to install both
- Install *Android platform tools* and *qpdf* from the Debian/Ubuntu shell
```bash
$ sudo apt update && sudo apt upgrade
$ sudo apt install android-sdk-platform-tools qpdf
$ sudo apt install android-sdk-platform-tools qpdf zip
```
- Check the version of ADB on Linux & Windows
```bash
@ -172,9 +164,9 @@ Note: You can access your Windows files under `/mnt/c/`
</p>
- Download [the lastest release of Android Universal Debloater](https://gitlab.com/W1nst0n/universal-android-debloater/-/releases)
- Download [the lastest release of Android Universal Debloater](https://gitlab.com/W1nst0n/universal-android-debloater/-/releases).
- Browse through the debloat lists to be sure the default selection suits you.
- Run `debloat_script.sh` from a Unix terminal
- Run `debloat_script.sh` from a Unix terminal.
```bash
$ bash debloat_script.sh
```

302
debloat_script.sh Executable file → Normal file
View file

@ -1,7 +1,9 @@
#!/usr/bin/env bash
# BASH 4.4 or newer is needed!
if (( "${BASH_VERSINFO[0]}" < 5 )); then printf "\n%s\n\n" "Please upgrade to a bash version >= 4.4" && exit 1; fi
if (( "${BASH_VERSINFO[0]}" < 4 || ("${BASH_VERSINFO[0]}" == 4 && "${BASH_VERSINFO[1]}" < 4) )); then
printf "\n%s\n\n" "Please upgrade to a bash version >= 4.4" && exit 1;
fi
if ! adb get-state &>/dev/null; then printf "\n%s\n\n" "Your phone is not detected by ADB." && exit 1; fi
@ -33,7 +35,7 @@ done
############################################### MAIN SCRIPT ##########################################################
main() {
readonly VERSION="v2.8.3 (January 12th 2021)"
readonly VERSION="v2.9.2 (March 30th 2021)"
readonly PAD=$(((48-${#VERSION})/2))
readonly BRAND="$(get_brand)"
@ -41,12 +43,15 @@ main() {
readonly OLDER_THAN_ANDROID_8=$(( $(adb shell getprop ro.build.version.sdk | tr -d '\r') < 26 ))
readonly OLDER_THAN_ANDROID_5=$(( $(adb shell getprop ro.build.version.sdk | tr -d '\r') < 21 ))
readonly NEWER_THAN_ANDROID_9=$(( $(adb shell getprop ro.build.version.sdk | tr -d '\r') >= 29 ))
declare -a CUSTOM_LIST=() # Trimed APK/package list from the debloat lists only containing packages/APK on the device (populated by generate_custom_list())
readonly SYSTEM_MOUNT_POINT=$(adb shell getprop ro.build.system_root_image | grep "true" && echo "/system_root" || echo "/system")
declare -a CUSTOM_LIST=() # Trimed APK/package list only containing packages/APK on the device (populated by generate_custom_list())
declare -a EXTERNAL_LIST=() # APK/package list provided by the user (populated by import_external_list())
declare -a USERS=() # User list (populated by debloat_or_restore())
declare -ra LISTS=(us_carriers french_carrier german_carriers "$BRAND" google facebook amazon microsoft \
qualcomm mediatek misc aosp pending)
qualcomm mediatek misc aosp pending EXTERNAL_LIST)
declare -i FORCE_UNINSTALL=0
declare -i RESTORE=0
@ -73,7 +78,7 @@ main() {
clear
printf "\n${BRED}%s " "WARNING : Your android version is too old (< 8.0)."
printf "%s${NC}\n\n" "Uninstalled packages can't be restored."
printf "%s" "The script will force-disable the apps instead of uninstalling them"
printf "%s" "The script will force-disable the apps instead of uninstalling them "
printf "%s\n\n" "so that you can restore them if needed"
printf "%s " "If you still want to force-uninstall the apps, type '1' ('0' otherwise):"
@ -81,7 +86,6 @@ main() {
fi
while true; do
adb shell 'pm list packages -s' | sed 's/package://g' > remaining_packages.txt &
clear -x
@ -110,32 +114,47 @@ main() {
elif [[ $REPLY = 2 || $REPLY = 3 || $REPLY = 4 || $REPLY = 5 ]]; then
clear -x
(( !BRAND_SUPPORTED )) && printf "\n${BRED}%s\n" "No $BRAND debloat list found. Feel free to contribute ! :)"
(( !BRAND_SUPPORTED )) && printf "\n${BRED}%s${NC}\n" "No $BRAND debloat list found. Feel free to contribute ! :)"
case $REPLY in
2) { title="RESTORE"; RESTORE=1; };;
3) { title="DEBLOAT"; RESTORE=0; };;
4) { title="RESTORE"; RESTORE=1; ROOT=1;};;
5) { title="DEBLOAT"; RESTORE=0; ROOT=1;};;
2) { title="RESTORE"; RESTORE=1; ROOT=0; };;
3) { title="DEBLOAT"; RESTORE=0; ROOT=0; };;
4) { title="RESTORE"; RESTORE=1; ROOT=1; };;
5) { title="DEBLOAT"; RESTORE=0; ROOT=1; };;
esac
if (( ROOT && NEWER_THAN_ANDROID_9 )); then
magisk_module
continue
fi
if (( ROOT )); then
printf "\n%s\n" "The script will physically $title the apks from your phone"
printf "%s${BBLUE}%s${NC}%s\n" "Do you prefer to use a " "Magisk " "module for a systemless $title instead? [y/n]"
read -r
if [[ $REPLY =~ [Yy] ]]; then
magisk_module
continue
fi
fi
((!ROOT)) && printf "\n${BORANGE}%s\n" "=================== $title ==================="
(( ROOT )) && printf "\n${BORANGE}%s\n" "================ $title (ROOT) ==============="
printf "%s\n" "# #"
printf "%-12s${NC}%s${BORANGE}%14s\n" "#" "1 - $title a package" "#" | awk '{print tolower($0)}'
(( BRAND_SUPPORTED )) && printf "#${NC}%8s 2 - ${BRAND} %$((25-${#BRAND}))s ${BORANGE} #\n"
(( BRAND_SUPPORTED )) && printf "#${NC}%7s 2 - ${BRAND} %$((25-${#BRAND}))s ${BORANGE} #\n"
printf "%-12s${NC}%s${BORANGE}%27s\n" "#" "3 - GFAM" "#"
printf "%-12s${NC}%s${BORANGE}%23s\n" "#" "4 - Carriers" "#"
printf "%-12s${NC}%s${BORANGE}%25s\n" "#" "5 - Others" "#"
printf "%-12s${NC}%s${BORANGE}%27s\n" "#" "6 - AOSP" "#"
printf "%-12s${NC}%s${BORANGE}%18s\n" "#" "7 - External list" "#"
(( ROOT && !RESTORE )) && printf "#${NC}%7s 8 - Create a flashable zip${BORANGE}%7s #\n"
printf "%s\n" "# #"
printf "%s\n" "# #"
printf "%-12s${NC}%s${BORANGE}%15s\n" "#" "0 - Pending list /!\\" "#"
printf "%s\n" "# #"
printf "%s\n${NC}\n" "================================================="
read -r -p "Your selection (e.g: 2 3 4 5): "
read -r -p "Your selection (e.g: 2 3 4 5): "
if [[ "$REPLY" =~ 7 ]]; then import_external_list && debloat_or_restore EXTERNAL_LIST; fi
if [[ "$REPLY" =~ 4 ]]; then lists_selection us_carriers french_carriers german_carriers; fi
@ -147,7 +166,6 @@ main() {
if [[ "$REPLY" =~ 8 ]]; then create_flashable_zip; fi
if [[ "$REPLY" =~ 0 ]]; then debloat_or_restore pending; fi
elif [[ "$REPLY" =~ [Xx] ]]; then adb reboot && exit 0;
fi
@ -165,13 +183,17 @@ import_external_list() {
done
for i in "${EXTERNAL_LIST[@]}"; do
if [[ ROOT -eq 1 && $i =~ ^/.*\.apk$ ]]; then
if [[ $ROOT -eq 1 && $RESTORE -eq 0 && $i =~ ^/.*\.apk$ ]]; then
printf "\n${BRED}%s${NC}\n\n" "Please use a package list, not an APK list"
exit 1
elif [[ ROOT -eq 0 && ! $i =~ ^[a-z][a-zA-Z0-9_]*(\.[a-zA-Z0-9_]+)+[0-9a-zA-Z_]$ ]]; then
elif [[ $ROOT -eq 0 && ! $i =~ ^[a-z][a-zA-Z0-9_]*(\.[a-zA-Z0-9_]+)+[0-9a-zA-Z_]$ ]]; then
printf "\n${BRED}%s${NC}%s${BRED}%s${NC}%s\n\n" "$i" " is not a package (format is" " com.android.bips" ")"
exit 1
elif [[ $ROOT -eq 1 && $RESTORE -eq 1 && ! $i =~ ^/.*\.apk$ ]]; then
printf "\n${BRED}%s${NC}\n\n" "Please use an APK list"
exit 1
fi
done
}
@ -181,11 +203,12 @@ associate_path_with_package() {
readarray -t PACKAGES < <(adb shell 'pm list packages -s -u -f' | sed -r 's/package://g' | sort -i)
for i in "${PACKAGES[@]}"; do
ASSOCIATE["${i##*=}"]="${i%%=*}"
ASSOCIATE["${i##*=}"]="${i%=*}"
done
}
generate_custom_list() {
clear -x
local -n list="$1"
[[ $# -eq 2 ]] && local user_id="$2"
CUSTOM_LIST=()
@ -198,21 +221,35 @@ generate_custom_list() {
readarray -t TEMP < <(comm -12 <(for p in "${list[@]}"; do echo "${p}"; done|sort -i) \
<(for p in "${!PACKAGE_AND_PATH[@]}"; do echo "$p"; done|sort -i))
for p in "${TEMP[@]}"; do
[[ RESTORE -ne 1 ]] && printf "\n${BGREEN}%s${NC}\n\n" "Clearing app data..."
for p in "${TEMP[@]}"; do
[[ RESTORE -ne 1 ]] && printf "${BBLUE}%s${NC}" "$p --> " && adb shell "pm clear $p"
CUSTOM_LIST+=("${PACKAGE_AND_PATH[$p]}")
done
[[ RESTORE -eq 1 ]] && readarray -t CUSTOM_LIST < <(comm -12 <(for p in "${CUSTOM_LIST[@]}"; do echo "${p}"; done|sort -i) \
<(sort -i deleted_apks.txt))
if [[ $RESTORE -eq 1 ]]; then
if [[ ${#CUSTOM_LIST[@]} -eq 0 ]]; then
readarray -t CUSTOM_LIST <(sort -i deleted_apks.txt)
else
readarray -t CUSTOM_LIST < <(comm -12 <(for p in "${CUSTOM_LIST[@]}"; do echo "${p}"; done|sort -i) \
<(sort -i deleted_apks.txt))
fi
fi
else
if (( RESTORE )); then
readarray -t CUSTOM_LIST < <(comm -12 <(for p in "${list[@]}"; do echo "${p}"; done|sort -i) \
<(adb shell "pm list packages -s -u $user_id" | sed -r 's/package://g' | sort -i))
<(adb shell "pm list packages -s -u $user_id" | sed 's/package://g' | sort -i))
else
readarray -t CUSTOM_LIST < <(comm -12 <(for p in "${list[@]}"; do echo "${p}"; done|sort -i) \
<(adb shell "pm list packages -s $user_id" | sed 's/package://g' | sort -i))
fi
fi
return 0
}
@ -225,9 +262,14 @@ debloat_or_restore() {
# Android 7.1 and older can't reinstall packages
if (( OLDER_THAN_ANDROID_8 )); then
(( RESTORE && FORCE_UNINSTALL != 1 )) && action='pm enable $package' || action='am force-stop $package && pm disable-user $package && pm clear $package'
fi
if (( RESTORE )); then
action='pm enable $package'
elif (( !FORCE_UNINSTALL )); then
action='am force-stop $package && pm disable-user $package && pm clear $package'
fi
fi
# parse user list on the phone
readarray -t USERS < <(adb shell pm list users | grep -o "{[0-9]*" | grep -o "[0-9]*")
@ -238,6 +280,7 @@ debloat_or_restore() {
printf "\n${BORANGE}%s${NC}\n" "==== $list debloat list ===="
if (( ROOT )); then
touch -a deleted_apks.txt
generate_custom_list "$list"
if (( RESTORE )); then restore_apks "$list"; else root_debloat "$list"; fi
return
@ -252,13 +295,14 @@ debloat_or_restore() {
fi
for package in "${CUSTOM_LIST[@]}"; do
do_package_action_and_log "$package" "$action" "$user"
do_package_action_and_log
done
done
sleep 1
else
if (( ROOT )); then
touch -a deleted_apks.txt
if (( RESTORE )); then restore_apks; else root_debloat; fi
return
fi
@ -267,18 +311,15 @@ debloat_or_restore() {
read -r package
for u_num in "${USERS[@]}"; do
local user=$( ((OLDER_THAN_ANDROID_5)) && echo "" || echo "--user $u_num" )
do_package_action_and_log "$package" "$action" "$user"
do_package_action_and_log
done
sleep 1
fi
}
do_package_action_and_log() {
local package="$1"
local action="$2"
local user="$3"
printf "${BBLUE}%s${BRED}%s${NC}%s" "[user $u_num] " "$package --> "
output="$(eval adb shell "$action")" && echo "$output"
output="$(eval adb shell "\"$action\"")" && echo "$output"
if [[ ! "$output" =~ Failure|Error ]]; then
if [[ $RESTORE -eq 0 ]]; then
@ -294,9 +335,12 @@ backup_apks() {
local -n apks="$1"
mkdir -p apks_backup
for apk in "${apks[@]}"; do
adb pull "$apk" apks_backup/
if ! adb pull "$apk" apks_backup/; then
printf "\n${BRED}%s${NC}%s\n" "$apk" " cannot be found on the phone!"
printf "\n${BRED}%s${NC}\n\n" "APKs backup failed" && exit 1
fi
done
printf "\n${BRED}%s${NC}\n\n" "Backup done!"
printf "\n${BGREEN}%s${NC}\n\n" "Backup done!"
}
create_flashable_zip() {
@ -312,20 +356,30 @@ create_flashable_zip() {
printf "\n${BRED}%s${NC} " "Your choice (e.g 1 2 3) :"
read -r -a selection
for i in "${selection[@]}"; do
if [[ "${LISTS[$i]}" == EXTERNAL_LIST ]]; then
import_external_list
fi
done
mkdir -p META-INF/com/google/android/
echo "#!/sbin/sh" > "$UPDATE_BINARY"
echo "echo 'ui_print --- Universal Android Debloater ---' > /proc/self/fd/\$2" >> "$UPDATE_BINARY"
echo "mount /system" >> "$UPDATE_BINARY"
echo "mount $SYSTEM_MOUNT_POINT" >> "$UPDATE_BINARY"
declare -i is_empty=1
for list in "${selection[@]}"; do
if (( list > ${#LISTS[@]} )) || (( list < 1 )); then continue; fi
generate_custom_list "${LISTS[$list]}"
backup_apks CUSTOM_LIST
for package in "${CUSTOM_LIST[@]}"; do
echo "rm -rf $package" >> "$UPDATE_BINARY"
done
[[ $is_empty -eq 1 && ${#CUSTOM_LIST[@]} -gt 0 ]] && is_empty=0
done
@ -333,11 +387,10 @@ create_flashable_zip() {
printf "\n${BRED}%s${NC}\n" "Nothing to debloat!"
rm -rf META-INF/
else
echo "umount /system" >> "$UPDATE_BINARY"
echo "umount $SYSTEM_MOUNT_POINT" >> "$UPDATE_BINARY"
echo "echo 'ui_print ----- ALL DONE -----' > /proc/self/fd/\$2" >> "$UPDATE_BINARY"
zip -rm flashable_zip_UAD_v2.8.zip META-INF/ 1>/dev/null
printf "\n${BRED}%s${NC}%s\n" "flashable_zip_UAD_v2.8.zip" " has been generated."
zip -rm flashable_zip_UAD_${VERSION%%[[:space:]]*}.zip META-INF/ 1>/dev/null
printf "\n${BGREEN}%s${NC}%s\n" "flashable_zip_UAD_$VERSION.zip" " has been generated."
fi
sleep 2
@ -348,7 +401,7 @@ restore_apks() {
if [[ $# -eq 1 ]]; then
[[ ${#CUSTOM_LIST[@]} -eq 0 ]] && echo "Nothing to restore" && sleep 1 && return 0
[[ ${#CUSTOM_LIST[@]} -eq 0 ]] && echo "Nothing to restore" && sleep 1 && return
printf "\n%s${BBLUE}%s${NC}%s${BBLUE}%s${NC}\n\n" "Deleted apks from " "$list" " will be restored from " "apks_backups/"
printf "\n${BRED}%s${NC}\n\n" "Check your phone: Magisk Manager is probably asking you to grand root permissions for ADB"
@ -363,9 +416,13 @@ restore_apks() {
CUSTOM_LIST=("$path")
fi
adb shell "su -c 'mount -o rw,remount /system'"
if [[ $NEWER_THAN_ANDROID_9 -eq 1 ]]; then
magisk_module
return
fi
adb shell "su -c \"mount -o rw,remount $SYSTEM_MOUNT_POINT\""
for p in "${CUSTOM_LIST[@]}"; do # $p = path/to/app.apk
local apk=$(echo "$p" | sed -r 's/.*\///g') # app.apk
local dir=$(dirname "$p") # path/to
@ -374,18 +431,19 @@ restore_apks() {
fi
done
adb shell "su -c 'mount -o ro,remount /system'"
adb shell "su -c \"mount -f -o ro,remount $SYSTEM_MOUNT_POINT\""
printf "\n${BRED}%s${NC}%s\n" "Reboot your phone and Android will reinstall the app(s)"
printf "\n\e[5m%s\033[0m" "Press any key to continue"
read -n 1 -r -s
}
root_debloat() {
local method=""
if [[ $# -eq 1 ]]; then
[[ ${#CUSTOM_LIST[@]} -eq 0 ]] && echo "Nothing to debloat :)" && sleep 1 && return 0
backup_apks CUSTOM_LIST
else
printf "\n${BRED}%s${NC}" "Android Path of the APK to delete: "
read -r path
@ -395,15 +453,22 @@ root_debloat() {
fi
CUSTOM_LIST=("$path")
fi
backup_apks CUSTOM_LIST
read -r -p "Type YES if you want to physically delete the apks: "
read -r -p "Type YES if you want to physically delete the apk(s): "
if [[ $REPLY = "YES" ]]; then
local commandes="mount -o rw,remount /system;"
if [[ $NEWER_THAN_ANDROID_9 -eq 1 ]]; then
magisk_module 1
return
fi
local commandes="mount -o rw,remount $SYSTEM_MOUNT_POINT;"
for apk in "${CUSTOM_LIST[@]}"; do
grep -qxF "$apk" deleted_apks.txt || echo "$apk" >> "deleted_apks.txt"
commandes+="echo \"rm -rf $apk\"; rm -rf \"$apk\";"
done
commandes+="mount -o ro,remount /system"
commandes+="mount -f -o ro,remount $SYSTEM_MOUNT_POINT"
printf "\n${BRED}%s${NC}\n\n" "Check your phone: Magisk Manager is probably asking you to grand root permissions for ADB"
adb shell "su -c '$commandes'"
printf "\n${BRED}%s${NC}\n" "DONE"
@ -413,6 +478,111 @@ root_debloat() {
fi
}
magisk_module() {
clear -x
declare -a selection=()
declare -i is_empty=1
echo
if (( !RESTORE )); then
for i in "${!LISTS[@]}"; do
printf "%-2s%s\n" "$i" " - ${LISTS[$i]}"
done
printf "\n${BRED}%s${NC} " "Your choice (e.g 1 2 3) :"
read -r -a selection
for i in "${selection[@]}"; do
if [[ "${LISTS[$i]}" == EXTERNAL_LIST ]]; then
import_external_list
fi
done
else
printf "%-2s%s\n" "1" " - deleted_apks.txt"
printf "%-2s%s\n" "2" " - EXTERNAL_LIST"
printf "\n${BRED}%s${NC} " "Your choice :"
read -r
selection=(1)
case $REPLY in
1) readarray -t CUSTOM_LIST < deleted_apks.txt ;;
2) { import_external_list && CUSTOM_LIST=("${EXTERNAL_LIST[@]}"); } ;;
*) exit 1 ;;
esac
fi
touch -a deleted_apks.txt
rm -r MAGISK_MODULE || true
mkdir MAGISK_MODULE
cd "$_"
local -r MODULE_DIR=$(pwd)
cat << EOF > module.prop
id=universal-android-debloater
name=Universal Android Debloater Magisk Flashable zip
version=1.0
versionCode=1000
author=w1nst0n
description=custom root debloat script
EOF
mkdir -p META-INF/com/google/android/ && cd "$_"
wget -q https://raw.githubusercontent.com/topjohnwu/Magisk/master/scripts/module_installer.sh
mv module_installer.sh update-binary
echo "#MAGISK" > updater-script
cd "$MODULE_DIR"
[[ RESTORE -eq 0 ]] && echo "REPLACE=\"" > customize.sh
for list in "${selection[@]}"; do
if (( list > ${#LISTS[@]} )) || (( list < 1 )); then continue; fi
cd ..
if (( !RESTORE )); then
generate_custom_list "${LISTS[$list]}"
backup_apks CUSTOM_LIST
fi
cd "$MODULE_DIR"
for apk in "${CUSTOM_LIST[@]}"; do
if (( RESTORE )); then
local dir="$(dirname "${apk:1}")"
mkdir -p "$dir"
cp "../apks_backup/$(echo "$apk" | sed -r 's/.*\///g')" "${apk:1}"
grep -Fqv "$apk" ../deleted_apks.txt > temp.tmp || touch temp.tmp; mv temp.tmp ../deleted_apks.txt
else
grep -qxF "$(dirname "$apk")" customize.sh || dirname "$apk" >> customize.sh
grep -qxF "$apk" ../deleted_apks.txt || echo "$apk" >> ../deleted_apks.txt
fi
done
[[ $is_empty -eq 1 && ${#CUSTOM_LIST[@]} -gt 0 ]] && is_empty=0
done
if [[ RESTORE -eq 0 && $is_empty -eq 1 ]]; then
printf "\n${BRED}%s${NC}\n" "Nothing to debloat!"
cd .. && rm -rf MAGISK_MODULE
return 0
fi
[[ RESTORE -ne 1 ]] && echo "\"" >> customize.sh
zip -FSrm ../uad_magisk_"${VERSION%%[[:space:]]*}_$title".zip ./* 1>/dev/null || true
cd .. && rm -rf MAGISK_MODULE
printf "\n${BGREEN}%s${NC}%s\n" "uad_magisk_${VERSION%%[[:space:]]*}.zip" " has been generated."
printf "\n%s${BBLUE}%s${NC}%s${BBLUE}%s${NC}%s\n" "Flash this file from " "Magisk Manager " "or " "TWRP " "and reboot your phone."
printf "\n%s${BBLUE}%s${NC}%s\n" "Removing the module from " "Magisk Manager " "will restore the apks."
if [[ $BRAND == "samsung" ]]; then
printf "\n${BRED}%s${NC}\n\n" "/!\ TWRP doesn't support Samsung encryption. You won't be able to flash this Magisk module from TWRP /!\\"
fi
printf "\e[5m%s\033[0m" "Press any key to continue"
read -n 1 -r -s
}
lists_selection() {
clear -x
declare -a selection=()
@ -421,7 +591,7 @@ lists_selection() {
printf "%-2s%s\n" "$i" " - ${!i}"
done
printf "\n${BRED}%s${NC} " "Your choice (e.g 1 2 3) :"
printf "\n${BRED}%s${NC} " "Your choice (e.g 1 2 3) :"
read -r -a selection
for list in "${selection[@]}"; do
if (( list > $# )) || (( list < 1 )); then continue; fi
@ -432,11 +602,18 @@ lists_selection() {
list_installed_packages() {
clear -x
declare -a packages=()
printf "\n${BRED}%s${NC}" "Search for packages (regex accepted): "
read -r
echo
adb shell "pm list packages | grep -i $REPLY" | sed 's/package://g' | sort || true
readarray -t packages < <(adb shell "pm list packages -f" | grep -i "$REPLY" | sed 's/package://g' | sort || true)
for i in "${packages[@]}"; do
printf "%s${BBLUE}%s${NC}\n" "${i##*=}" " ${i%=*}"
done
printf "\n\e[5m%s\033[0m" "Press any key to continue"
read -n 1 -r -s
@ -481,9 +658,9 @@ get_brand() {
local brand
brand=$(adb shell getprop ro.product.brand | tr -d '\r' | awk '{print tolower($0)}')
# Support for alternative name
# Support for sub-brands
case "$brand" in
"redmi") echo "xiaomi" ;;
"redmi"|"poco") echo "xiaomi" ;;
*) echo "$brand"
esac
}
@ -491,6 +668,7 @@ get_brand() {
uad_recovery_mode() {
ROOT=1
while true; do
clear -x
printf "\n${BBLUE}%s\n" "========== MAIN MENU (RECOVERY MODE) =========="
printf "%s\n" "# #"
printf "%-12s${NC}%s${BBLUE}%12s\n" "#" "1 - Restore APKs (Root)" "#"
@ -514,7 +692,7 @@ uad_recovery_mode() {
printf "%s\n" "# #"
printf "%-12s${NC}%s${BBLUE}%17s\n" "#" "1 - $title an APK" "#" | awk '{print tolower($0)}'
printf "%-12s${NC}%s${BBLUE}%18s\n" "#" "2 - External list" "#"
((RESTORE)) && printf "#${NC}%9s 3 - deleted_apks.txt ${BBLUE}%11s#\n"
((RESTORE)) && printf "#${NC}%7s 3 - deleted_apks.txt ${BBLUE}%13s#\n"
printf "%s\n" "# #"
printf "%s\n${NC}" "================================================="
@ -522,13 +700,14 @@ uad_recovery_mode() {
if [[ $REPLY = 1 ]]; then
printf "\n${BRED}%s${NC}" "Android path of the APK to $title: "
read -r path
while true; do
printf "\n${BRED}%s${NC}" "Android path of the APK to $title: "
read -r path
[[ $path =~ ^/.*\.apk$ ]] && break
if [[ ! $path =~ ^/.*\.apk$ ]]; then
printf "\n${BRED}%s${NC}%s${BRED}%s${NC}%s\n" "$path" " doesn't look like a valid APK path"
sleep 3 && return 0
fi
done
CUSTOM_LIST=("$path")
fi
@ -540,6 +719,19 @@ uad_recovery_mode() {
printf "\n%s${BRED}%s${NC}%s\n\n" "Your apks has been backed-up in" " apks_backup/" " (in case you messed up)"
fi
[[ $NEWER_THAN_ANDROID_9 -eq 1 ]] && magisk_module && continue
printf "\n%s\n" "The script will physically $title the apks from your phone."
printf "%s${BBLUE}%s${NC}%s\n" "Do you prefer to use a " "Magisk " "module for a systemless $title instead? [y/n]"
read -r
if [[ $REPLY =~ [Yy] ]]; then
magisk_module
continue
fi
adb shell mount system || exit 1
for p in "${CUSTOM_LIST[@]}"; do # $p = path/to/app.apk
local apk=$(echo "$p" | sed -r 's/.*\///g') # app.apk
local dir=$(dirname "$p") # path/to

View file

@ -1,10 +1,11 @@
#!/usr/bin/env bash
### These packages will be added in the default selection when I will find time to document them.
# Uncommented packages should be safe to remove but you still need to be **VERY** careful.
# Uncommented packages should be safe to remove AT FIRST SIGHT but you still need to be **VERY** careful.
# Commented packages are NOT safe! DO NOT TRY TO REMOVE THESE FROM YOUR PHONE
# REMINDER : "Safe" only means "does not cause bootloop".
# These packages can definitely break useful features (but you can easily reinstall them with the script)
# These packages will most likely break useful features (but you can easily reinstall them with the script)
declare -a pending=(
@ -13,6 +14,7 @@ declare -a pending=(
#"com.android.systemui.navigation.bar.overlay"
############## AOSP ###############
#"com.android.wifi.resources"
############# GOOGLE ##############
@ -23,7 +25,9 @@ declare -a pending=(
"com.qualcomm.qti.performancemode"
"com.qualcomm.qti.poweroffalarm"
"com.qualcomm.qti.qdma"
#"com.qualcomm.qti.gpudrivers.kona.api30"
#"com.qualcomm.qti.seccamservice"
#"com.qualcomm.qti.services.secureui"
#"com.qualcomm.qti.services.systemhelper"
#"com.qualcomm.qti.simcontacts"
#"com.qualcomm.qti.uceShimService"
@ -49,7 +53,29 @@ declare -a pending=(
"com.jrdcom.filemanager.a_overlay"
"com.vendor.frameworkresoverlay"
############# SAMSUNG #############
############# SAMSUNG #############
#"com.samsung.android.cmfa.framework"
#"com.samsung.android.incall.contentprovider"
"com.samsung.android.service.tagservice"
"com.samsung.android.camerasdkservice"
"com.samsung.android.cameraxservice" # CBattery drain related on S10
"com.samsung.android.coldwalletservice"
"com.samsung.android.digitalkey"
"com.samsung.android.forest"
"com.samsung.android.kgclient" # Samsung Pay One Ui 3.0 ?
"com.samsung.android.providers.carrier"
#"com.samsung.android.wifi.resources"
"com.samsung.android.wifi.softap.resources"
"com.sec.android.Cdfs"
"com.sec.android.smartfpsadjuster"
"com.sec.location.nfwlocationprivacy"
"com.samsung.gamedriver.sm8250"
"com.samsung.gpuwatchapp" # Gpu viewer ?
"com.samsung.huxplatform"
"com.samsung.qosindicator"
"com.samsung.sait.sohservice"
"com.samsung.vklayer.sm8250"
############### SONY ##############
"com.sonymobile.devicesecurity.service"

View file

@ -66,13 +66,6 @@ declare -a aosp=(
# Lets Google partners (OEM in most of the case) to customize the default email settings.
# The manufacturer often change the default signature displayed the end of each of your mail (e.g "Sent from my Nokia phone")
"com.android.printservice.recommendation"
# Keep it, if you need to print directly via your phone.
"com.android.printspooler"
# Print spooler. Manage the printing process.
# Safe to remove if you don't plan to print from your phone
"com.android.providers.partnerbookmarks"
# Provides bookmarks about partners of Google in Chrome.
@ -113,7 +106,8 @@ declare -a aosp=(
"com.android.wallpaper.livepicker"
"com.android.wallpaper.livepicker.overlay"
# Enables you to pick a live wallpaper.
# Will break some weather applications (especially ones with widgets) and wallpaper applications like Muzei.
"com.android.wallpapercropper"
# Wallpaper cropper.
@ -125,7 +119,12 @@ declare -a aosp=(
"android.auto_generated_vendor_" # [MORE INFO NEEDED]
# Auto generated vendor's stuff for Android Auto (https://www.android.com/intl/en_en/auto/)
# Note: You don't need this if you don't use Android auto
# Note: You don't need this if you don't use Android auto
"android.auto_generated_rro__"
# rro = Runtime Resources Overlay.
# Changes values of a package config, based in the overlay definitions (heavily used by OEM for custom themming android)
# Link: https://source.android.com/devices/architecture/rros and https://code.tutsplus.com/tutorials/quick-tip-theme-android-with-the-runtime-resource-overlay-framework--cms-29708
"com.android.apps.tag"
# Support for NFC tags interactions (5 permissions : Contacts/Phone On by default).
@ -291,6 +290,15 @@ declare -a aosp=(
# AOSP Call recorder function. Most of the time OEM use their own code for this.
# NOTE: On some phones, Huawei & Xiaomi also use this package name for their own closed-source recorder app.
#"com.android.printservice.recommendation"
# Used to discover and interact one or more printers via one or more protocols.
# You can remove it if you don't need to print directly from your phone.
#"com.android.printspooler"
# Print spooler. Manage the printing process.
# Safe to remove if you don't plan to print from your phone
# Note: Break connection preferences from the settings app on some phones (Pixel 4a / Android 11)
#"com.android.providers.blockednumber"
# Handles blocked numbers storage
# On some devices this packages seems to be tied to recent apps menu (see https://gitlab.com/W1nst0n/universal-android-debloater/-/issues/6)
@ -322,9 +330,10 @@ declare -a aosp=(
#
# FYI : The Open Mobile Alliance (OPA) is a standards organization which develops open standards for the mobile phone industry.
#"com.android.settings.intelligence" # [MORE INFO NEEDED]
# Settings tips in Settings menu ?
# I don't have this in my phone. It for Android Pie. Can someone check ?
#"com.android.settings.intelligence"
# Setting search feature
# Note: Settings app may crash when searching for a setting if you removed this package (it depends on the phone)
# See https://gitlab.com/W1nst0n/universal-android-debloater/-/issues/51
#"com.android.sharedstoragebackup"
# Used during backup. Fetch shared storage (files accessible by every apps with STORAGE permission)

View file

@ -6,10 +6,20 @@ declare -a asus=(
# Asus calculator app
# NOTE : Simple calculator is a good alternative : https://f-droid.org/en/packages/com.simplemobiletools.calculator/
"com.asus.easylauncher"
# Asus Easy Mode (https://play.google.com/store/apps/details?id=com.asus.easylauncher)
# Alternative launcher with bigger icons and simpler interface
"com.asus.ia.asusapp"
# My Asus (https://play.google.com/store/apps/details?id=com.asus.ia.asusapp)
# Asus service center (support + store)
"com.asus.soundrecorder"
# Asus Sound recorder (https://play.google.com/store/apps/details?id=com.asus.soundrecorder)
# Asus Sound recorder (https://play.google.com/store/apps/details?id=com.asus.soundrecorder)
"com.asus.userfeedback"
# ZenUI Help (https://play.google.com/store/apps/details?id=com.asus.userfeedback)
# Customer service app that provides FAQs, Mobile care service, user feedback, and public forums.
# Lots of telemetry (insecure on top of that):
# https://beta.pithus.org/report/e80a1fa70adc097fc9817720b5c8c81cfd156a76e6d062759b2bc3d6937a97e7
)

View file

@ -128,9 +128,10 @@ declare -a us_carriers=(
"com.verizon.messaging.vzmsgs"
# Verizon Messages (https://play.google.com/store/apps/details?id=com.verizon.messaging.vzmsgs)
"com.verizon.mips.services"
# "com.verizon.mips.services"
# My Verizon Services
# Related to My Verizon app.
# Tested to be required for hotspot.
"com.verizon.obdm" # [MORE INFO NEEDED]
"com.verizon.obdm_permissions"
@ -402,6 +403,10 @@ declare -a us_carriers=(
# Spam call blocking app provided by Hiya
# NOTE : You should never trust spam blocking apps (https://itmunch.com/robocall-caught-sending-customers-confidential-data-without-consent/)
"com.att.csoiam.mobilekey"
# AT&T Sign in Helper (https://play.google.com/store/apps/details?id=com.att.csoiam.mobilekey)
# Allows AT&T applications to securely authenticate on Android devices
"com.att.dh"
# Device Help (https://play.google.com/store/apps/details?id=com.att.dh)
# Troubleshooting app.
@ -433,6 +438,12 @@ declare -a us_carriers=(
# AT&T Visual Voicemail (https://play.google.com/store/apps/details?id=com.att.mobile.android.vvm)
# Lets you manage your voicemail directly from the app without the need to dial into your mailbox.
"com.att.personalcloud"
# AT&T Personal Cloud (https://play.google.com/store/apps/details?id=com.att.personalcloud)
# Note: it's a paid extra feature and data are obviously not E2EE (i.e AT&T can access them)
# Don't keep this app. It's a privacy nightmare and was poorly coded:
# https://beta.pithus.org/report/bc54b5e2446ace90d9f992278d0ec320befe4983a76cb4fdcf47e565366e67b6
"com.att.tv"
# AT&T TV (https://play.google.com/store/apps/details?id=com.att.tv)
# Lets you Stream TV live and on demand from your phone.
@ -481,6 +492,10 @@ declare -a us_carriers=(
# Visual Voicemail
# Simple GUI for voicemail
"com.sec.android.app.ewidgetatt"
# Entertainment Widget
# AT&T Widget for OneUI
"com.synchronoss.dcs.att.r2g"
# Setup & Transfer
# App for transferring "contacts, photos, videos, music, call logs, and documents" from another device

View file

@ -359,6 +359,7 @@ declare -a google=(
# Device Health Services (discontinued ?)
# Calculates your remaining battery percentage based on your usage
# Reviews for this app were... funny (https://www.reddit.com/r/google/comments/ajnbmh/the_reviews_for_device_health_services_are_quite/)
# Note: this app needs com.google.android.gms
"com.google.android.apps.work.oobconfig" # [MORE INFO NEEDED]
# Needs internet to fetchs enterprise and carrier lock config via internet.
@ -467,6 +468,12 @@ declare -a google=(
# Carrier Services (for Google phones) (https://play.google.com/store/apps/details?id=com.google.android.ims)
# IMS is an open industry standard for voice and multimedia communications over packet-based IP networks (Volte/VoIP/Wifi calling).
"com.google.audio.hearing.visualization.accessibility.scribe"
# Live Transcribe & Sound Notifications (https://play.google.com/store/apps/details?id=com.google.audio.hearing.visualization.accessibility.scribe)
# Provides push notifications for critical sounds around you. This feature can be helpful for people with hearing loss.
# https://blog.google/products/android/new-sound-notifications-on-android/
# Works offline
#"com.android.vending"
# Google Play Store app.
@ -534,4 +541,11 @@ declare -a google=(
#"com.google.android.overlay.modules.permissioncontroller.forframework"
# The PermissionController module enables updatable privacy policies and UI elements.
# For example, the policies and UI around granting and managing permissions.
# https://source.android.com/devices/architecture/modular-system/permissioncontroller
# https://source.android.com/devices/architecture/modular-system/permissioncontroller
#"com.google.mainline.telemetry"
# It's a set of metrics-related modules. Google Play uses the version of the Telemetry module to determine
# if updates are available for metrics-related modules and which security patch version to display to the end user.
# This module doesnt contain active code and has no functionality on its own.
# Removing modules-related packages may not be safe since Android 11
# https://gitlab.com/W1nst0n/universal-android-debloater/-/issues/27#note_410012436

View file

@ -135,10 +135,9 @@ declare -a samsung=(
# Samsung's adaptive super AMOLED screen optimizes the color range, saturation, and sharpness of the picture depending on what you're watching or doing.
# This package lets you to manually customize the color settings to match your preferences.
"com.samsung.android.app.dressroom" # [MORE INFO NEEDED]
"com.samsung.android.app.dressroom"
# Samsung Wallpapers
# Wallaper manager from the launcher. You can probably remove it and still set a wallpaper from the Gallery.
# Can someone check?
# Wallaper manager from the launcher. You can remove it and still set a wallpaper from the Gallery.
# Has INTERNET permission and... ACCESS_MEDIA_LOCATION
"com.samsung.android.app.episodes"
@ -291,6 +290,13 @@ declare -a samsung=(
# Biometric authentication service that can be used to sign in to websites and apps in your mobile.
# https://www.samsung.com/global/galaxy/apps/samsung-pass/
"com.samsung.android.aware.service"
# Samsung Quick Share
# Use Wifi direct to share files between 2 Samsung Galaxy phones (it's only for Samsung Galaxy users)
# Quick Share also lets you temporarily upload files to Samsung Cloud
# There are better alternatives (compatible with all Android devices and free and open-source):
# For instance: https://f-droid.org/packages/com.genonbeta.TrebleShot/
"com.samsung.android.bbc.bbcagent" # [MORE INFO NEEDED]
# BBCAgent (B. B. Container Agent?)
# Collects device information and manages installation/uninstallation of trusted apps in KNOX containers
@ -309,7 +315,10 @@ declare -a samsung=(
# Bixby (Samsung intelligence assistant)
# Enable or Disable access to S-Voice or Bixby voice controls.
# This does not prevent access to other voice-controlled apps, only the Samsung-provided ones.
"com.samsung.android.bixby.agent" # Bixby voice
# Removing this will disable the bixby hardware key without breaking Bixby itself.
"com.samsung.android.bixby.agent.dummy" # Bixby Voice Stub
"com.samsung.android.bixby.es.globalaction"
"com.samsung.android.bixby.plmsync"
@ -412,6 +421,10 @@ declare -a samsung=(
# Game Tuner is advanced setting app. It enables you to change the resolution and frames per second settings
# in mobile games that require tuning for different Android devices, and thereby control heat generation and battery drain.
"com.samsung.android.homemode"
# Daily Board (https://play.google.com/store/apps/details?id=com.samsung.android.homemode)
# Show a slideshow of your favourite pictures while your device is charging.
"com.samsung.android.hmt.vrshell"
# Gear VR Shell
# Gear VR : https://360samsungvr.com/portal/content/about_samsung_vr
@ -420,6 +433,11 @@ declare -a samsung=(
# Gear VR Service
# See above.
"com.samsung.android.icecone"
# Keyboard Content Center
# Lets you choose media content (e.g. stickers and music) from the Galaxy Keyboard.
# This app always runs in background.
"com.samsung.android.intelligenceservice2"
# It seems that this package is a kind of spyware. Very difficult to find information about this.
# Some people say it's linked to Carrier IQ (which is a carrier rootkit for the NSA).
@ -428,6 +446,18 @@ declare -a samsung=(
# This package also have very stranges permissions : READ_PLACE / WRITE_PLACE. I couldn't find any explaination on the web.
# So either it's a useless samsung package either it's a spyware. I delete it and I didn't notice anything bad.
"com.samsung.android.ipsgeofence"
# IPSGeofence
# IPS = Indoor Positioning System.
# The concept of Indoor Positioning System designates a network of connected devices within a building making it possible
# to trace the position of another device and therefore potentially of a person in environments where GPS systems are
# not efficient .
# Geofencing is a technique which consists in activating preconfigured actions when a device enters a
# certain geographical area. For example, a user can use it to automatically turn on Wi-Fi and home lights when their smartphone
# is detected nearby.
# In short, if enabled, this app will track your location everywhere and all the time!
# https://www.comparitech.com/blog/vpn-privacy/what-is-geofencing-privacy/
"com.samsung.android.keyguardwallpaperupdator"
# Lets you customize your Samsung device with different images (provided by Samsung) on the lock screen.
@ -486,8 +516,22 @@ declare -a samsung=(
# https://developer.samsung.com/tech-insights/knox/mobile-device-management
"com.samsung.android.mdx"
# Link to Windows Service
# Works in conjunction with the Microsoft Your Phone app and activates a connection to your PC on Windows
"com.samsung.android.mdx.kit"
# MDE Service Framework
# MDE = Multi Devices Experience (https://www.samsung.com/levant/multi-device-experience/)
# Framework for IoT stuff.
# Asks for a LOT of dangerous permissions
# Interacts with "com.samsung.android.mobileservice" and "com.osp.app.signin"
"com.samsung.android.mdx.quickboard"
# Media & Devices feature
# Kind of a hub for managing medias played on smart devices (e.g play music to 2 Bluetooth devices simultaneously with Dual audio)
# https://www.samsung.com/latin_en/support/mobile-devices/media-and-device-feature/
# Has a lot of permissions and asks for ACESS_COARSE_LOCATION
# Removing this package do not prevent you to connect your phones to smart devices.
"com.samsung.android.mobileservice"
# Samsung Experience Service (https://play.google.com/store/apps/details?id=com.samsung.android.mobileservice)
@ -563,6 +607,10 @@ declare -a samsung=(
# ShortcutBNR
# Related to smartSwitch Samsung Cloud features
"com.samsung.android.sdm.config"
# Configuration Update for Samsung Deskphone Manager (SDM)
# SDM allows a user to synchronize your smartphone with a IP deskphone
"com.samsung.android.slinkcloud"
# Samsung Cloud Gateway
# NEEDED FOR Scloud app
@ -739,9 +787,13 @@ declare -a samsung=(
"com.samsung.android.weather"
# Samsung Weather
# Lets you see updates on the weather at all times, specific to your current location.
# You can also check the weather in other areas even
# Dependency: "com.sec.android.daemonapp"
"com.samsung.android.wellbeing"
# Digital Welbeing (https://play.google.com/store/apps/details?id=com.google.android.apps.wellbeing)
"com.samsung.android.forest"
# Digital Wellbeing (https://play.google.com/store/apps/details?id=com.google.android.apps.wellbeing)
# is a feature which shows apps dashboard through which one can see how much time any application opened and
# also swiping to different screens allows you to see breakdowns by day, by hour and by app.
@ -823,11 +875,22 @@ declare -a samsung=(
# Knox Analytics Uploader
# Sends analytcs to Samsung
"com.samsung.knox.keychain"
# KNOX TIMA Keychain
# Used to store secrets in a TrustZone (hardware-based secure world)
# It's a great thing but third-party developers have no or very limited direct access to it. So you don't really need this
# package if you use the default selection of this script and/or don't use any Samsung app relying on KNOX.
# Very interesting write-up: https://medium.com/@nimronagy/arm-trustzone-on-android-975bfe7497d2
# FYI: Don't worry, your device password/fingerprint hash is securly stored in Android TEE
"com.samsung.knox.knoxtrustagent"
# Knox Quick Access allows users to access the Knox Workspace container using wearables such as the Galaxy Gear S2.
"com.samsung.knox.kss" # [MORE INFO NEEDED]
# Knox Keyguard. Not much more information
# Knox Keyguard. Not much more information
"com.samsung.android.knox.pushmanager" # [MORE INFO NEEDED]
# KnoxPushManager
"com.samsung.knox.securefolder"
# Knox Secure Folder (https://play.google.com/store/apps/details?id=com.samsung.knox.securefolder)
@ -1013,9 +1076,6 @@ declare -a samsung=(
"com.sec.android.app.magnifier"
# Lets you use your device as a magnifying glass making it easier to read any small font or expand the details of any object, for example.
#"com.sec.android.app.myfiles"
# Samsung file manager app (https://play.google.com/store/apps/details?id=com.sec.android.app.myfiles)
"com.sec.android.app.mt"
# The Mobile tracker is a security feautre in your device that if someone inserts a new SIM card in your device the device will automatically
# sends the SIM contact number to specified recipients to help you locate and recover you device.
@ -1143,7 +1203,9 @@ declare -a samsung=(
# Needed to use Smart Switch. See above.
"com.sec.android.easyonehand"
# Samsung Easy One Hand mode (replaced by One Hand Operation + : com.samsung.android.sidegesturepad)
# Samsung Easy One Hand mode
# Allows you to temporarily scale down the display size of your screen for easier control of your phone with just one hand.
# https://www.samsung.com/au/support/mobile-devices/using-one-handed-mode/
"com.sec.android.fido.uaf.asm"
# Fido is a set of open technical specifications for mechanisms of authenticating users to online services that do not depend on passwords.
@ -1551,6 +1613,9 @@ declare -a samsung=(
# Handle Face recognition unlock
# https://kp-cdn.samsungknox.com/b60a7f0f59df8f466e8054f783fbbfe2.pdf
#"com.samsung.android.biometrics"
# Provide biometric support
#"com.samsung.android.biometrics.app.setting"
# Biometric settings
@ -1559,6 +1624,7 @@ declare -a samsung=(
# You should use it, it's great
#"com.samsung.android.contacts"
#"com.samsung.android.app.contacts"
# Samsung contacts app
# Safe to debloat if you use another contacts app
# NOTE : If you do, you will no longer be able to access Contacts from the Samsung dialer app.
@ -1615,7 +1681,7 @@ declare -a samsung=(
# Seems to check if a trusted application needs an update and download it.
# This package probably do more than that. There is a LOT of lines of code (obfuscated obviously)
# It was used to push an update to fix a security issue with the fingerprint sensor in 2019.
# https://old.reddit.com/r/galaxys10/comments/bcy93f/adb_how_to_get_the_fingerprint_update_pushed_to/
# https://libredd.it/r/galaxys10/comments/bcy93f/adb_how_to_get_the_fingerprint_update_pushed_to/
# Seems to be only used for biometrics stuff
# There is Samsung analytics inside. You may want to remove it if you don't use biometrics authentification.
@ -1671,7 +1737,7 @@ declare -a samsung=(
#"com.samsung.sdm.sdmviewer" # [MORE INFO NEEDED]
# Lets you view installed updates?
#"com.sansumg.SMT"
#"com.samsung.SMT"
# Samsung TTS (Text-to-speech)
# Works with applications such as S Voice; translation apps, GPS that require Text-To-Speech (TTS) functionality and reads back text
# https://galaxystore.samsung.com/detail/com.samsung.SMT
@ -1683,6 +1749,16 @@ declare -a samsung=(
# https://www.t-mobile.com/support/coverage/wi-fi-calling-from-t-mobile
# VoLTE/IMS is needed for this to work (see com.sec.imsservice)
#"com.samsung.android.app.dofviewer"
# Live focus
# Allows you to adjust the level of background blur in the camera app.
# From the Samsung Gallery, you can also select from a range of background blur shapes to add characters and shapes to a photo.
# https://www.samsung.com/global/galaxy/what-is/live-focus/
#"com.sec.android.app.fm"
#Samsung Radio
#Listen to FM radio stations
#"com.sec.android.app.launcher"
# Samsung One UI Home launcher (homescreen) (https://play.google.com/store/apps/details?id=com.sec.android.app.launcher)
# It is samsung Touchwiz default launcher
@ -1691,6 +1767,9 @@ declare -a samsung=(
#"com.sec.android.app.clockpackage"
# Samsung clock
#"com.sec.android.app.myfiles"
# Samsung file manager app (https://play.google.com/store/apps/details?id=com.sec.android.app.myfiles)
#"com.sec.android.app.personalization" # [MORE INFO NEEDED]
# Without a doubt this package is involved in personalization of something but tt's hard to find what.
# 2 permissions : READ_PHONE_STATE and CHANGE_PHONE_STATE
@ -1735,6 +1814,17 @@ declare -a samsung=(
#"com.sec.android.gallery3d.panorama360view"
# Let you see panoramic photos in the samsung Gallery.
#"com.sec.android.inputmethod"
#"com.samsung.android.honeyboard" # New default keyboard on newer Samsung phones
# Samsung keyboard
# WARNING: do NOT remove the samsung keyboard if you don't have another keyboard with direct boot mode support or
# you'll be stuck at boot (no keyboard to unlock the phone)
# https://developer.android.com/training/articles/direct-boot
# FYI: Simple Keyboard and OpenBoard are 2 FOSS keyboard with direct boot support
# https://f-droid.org/packages/org.dslul.openboard.inputmethod.latin/
# https://f-droid.org/packages/rkr.simplekeyboard.inputmethod/
# WARNING: Do NOT remove this package with root if it wasn't first uninstalled with the non-root method.
#"com.sec.android.mimage.photoretouching"
# Samsung Photo Editor
# Disabling this will disable the inbuilt photo editor accessed via the stock gallery.
@ -1843,6 +1933,7 @@ declare -a samsung=(
# Samsung overlay of AOSP Settings. It has 39 permissions. Handles interactions with features controled by the settings.
#"com.samsung.android.timezone.data_P" # [MORE INFO NEEDED]
#"com.samsung.android.timezone.data_Q" # [MORE INFO NEEDED]
# Stores timezone data?
#"com.samsung.android.timezone.updater"
@ -1890,11 +1981,6 @@ declare -a samsung=(
# It kills rarely used apps running in background.
# Surely linked to Smart Manager. I think it can have a very bad impact on battery performance if deleted. I'm testing.
#"com.sec.android.inputmethod"
# Samsung keyboard
# Note : used for unlocking the phone after a reboot. Third-parties keyboards cannot be used here.
# DO NOT REMOVE THIS. NEVER !
#"com.sec.android.app.simsettingmgr"
# SIM card manager.
# Contains configuration and settings for handling dual SIM (give a SIM an icon, a name, and so on)

View file

@ -799,13 +799,15 @@ declare -a xiaomi=(
# Your phone needs to be connected to internet (Wifi/mobile data) for this feature to work.
# REMOVING THIS PACKAGE WILL BOOTLOOP YOUR DEVICE!
#
# NOTE : I don't have a Xiaomi phone on hand anymore but maybe only disabling it will work : adb shell 'pm disable-user com.xiaomi.finddevice'
# Can someone try ?
# NOTE : You cannot disable it via adb
# According some sources, disabling MIUI optimizations in the Developer
# settings and removing the apk file in a custom recovery does not cause a
# bootloop, but I didn't test this.
#"com.miui.global.packageinstaller" # [MORE INFO NEEDED]
# MIUI Package installer
# Offers the ability to install, upgrade, and remove applications on the device.
# Is it the replacement of com.android.packageinstaller?
#"com.miui.global.packageinstaller"
# The security check / virus scan which runs after a package installation
# Uninstalling it does not cause a bootloop
# Package installation still works fine
#"com.miui.securitycenter"
# MIUI Security app