Compare commits

...

27 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
w1nst0n 9b62302d61 Hotfix (v2.8.3) 2021-01-12 23:04:19 +01:00
w1nst0n e8024ffd60 Fix bad variable name (#45) 2021-01-12 23:04:05 +01:00
w1nst0n 8d5ce9f690 Hotfix (v2.8.2) 2021-01-11 18:33:03 +01:00
10 changed files with 534 additions and 124 deletions

View file

@ -1,3 +1,68 @@
# 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.
# Hotfix (v2.8.2)
- Flashable debloat zip not removing anything (oversight on my part after debugging for the first hotfix)
# Hotfix (v2.8.1) # Hotfix (v2.8.1)
- Flashable zip was broken. I reworked all the generation logic. It is much simpler and correctly works now. - Flashable zip was broken. I reworked all the generation logic. It is much simpler and correctly works now.

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 # 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 ## Summary
I try to maintain a universal tool which removes bloatwares on any Android phones by using ADB. 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: Debian Base:
```bash ```bash
$ sudo apt install android-sdk-platform-tools qpdf $ sudo apt install android-sdk-platform-tools qpdf zip
``` ```
Arch-Linux Base: Arch-Linux Base:
```bash ```bash
$ sudo pacman -S android-tools qpdf $ sudo pacman -S android-tools qpdf zip
``` ```
Red Hat Base: Red Hat Base:
```bash ```bash
$ sudo yum install android-tools qpdf $ sudo yum install android-tools qpdf zip
``` ```
</details> </details>
</p> </p>
@ -99,18 +103,6 @@ You will also need to upgrade bash because Apple ships a very old bash version (
```bash ```bash
$ brew install android-platform-tools qpdf 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> </details>
</p> </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 - Install *Android platform tools* and *qpdf* from the Debian/Ubuntu shell
```bash ```bash
$ sudo apt update && sudo apt upgrade $ 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 - Check the version of ADB on Linux & Windows
```bash ```bash
@ -172,9 +164,9 @@ Note: You can access your Windows files under `/mnt/c/`
</p> </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. - 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
$ bash debloat_script.sh $ bash debloat_script.sh
``` ```

321
debloat_script.sh Executable file → Normal file
View file

@ -1,7 +1,9 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# BASH 4.4 or newer is needed! # 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 if ! adb get-state &>/dev/null; then printf "\n%s\n\n" "Your phone is not detected by ADB." && exit 1; fi
@ -33,8 +35,7 @@ done
############################################### MAIN SCRIPT ########################################################## ############################################### MAIN SCRIPT ##########################################################
main() { main() {
readonly SRC_URI="https://gitlab.com/W1nst0n/universal-android-debloater/-/archive/master/universal-android-debloater-master.tar.gz" readonly VERSION="v2.9.2 (March 30th 2021)"
readonly VERSION="v2.8.1 (January 11th 2021)"
readonly PAD=$(((48-${#VERSION})/2)) readonly PAD=$(((48-${#VERSION})/2))
readonly BRAND="$(get_brand)" readonly BRAND="$(get_brand)"
@ -42,12 +43,15 @@ main() {
readonly OLDER_THAN_ANDROID_8=$(( $(adb shell getprop ro.build.version.sdk | tr -d '\r') < 26 )) 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 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 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 -a USERS=() # User list (populated by debloat_or_restore())
declare -ra LISTS=(us_carriers french_carrier german_carriers "$BRAND" google facebook amazon microsoft \ 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 FORCE_UNINSTALL=0
declare -i RESTORE=0 declare -i RESTORE=0
@ -74,7 +78,7 @@ main() {
clear clear
printf "\n${BRED}%s " "WARNING : Your android version is too old (< 8.0)." 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${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\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):" printf "%s " "If you still want to force-uninstall the apps, type '1' ('0' otherwise):"
@ -82,7 +86,6 @@ main() {
fi fi
while true; do while true; do
adb shell 'pm list packages -s' | sed 's/package://g' > remaining_packages.txt & adb shell 'pm list packages -s' | sed 's/package://g' > remaining_packages.txt &
clear -x clear -x
@ -111,32 +114,47 @@ main() {
elif [[ $REPLY = 2 || $REPLY = 3 || $REPLY = 4 || $REPLY = 5 ]]; then elif [[ $REPLY = 2 || $REPLY = 3 || $REPLY = 4 || $REPLY = 5 ]]; then
clear -x 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 case $REPLY in
2) { title="RESTORE"; RESTORE=1; };; 2) { title="RESTORE"; RESTORE=1; ROOT=0; };;
3) { title="DEBLOAT"; RESTORE=0; };; 3) { title="DEBLOAT"; RESTORE=0; ROOT=0; };;
4) { title="RESTORE"; RESTORE=1; ROOT=1;};; 4) { title="RESTORE"; RESTORE=1; ROOT=1; };;
5) { title="DEBLOAT"; RESTORE=0; ROOT=1;};; 5) { title="DEBLOAT"; RESTORE=0; ROOT=1; };;
esac 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 "\n${BORANGE}%s\n" "================ $title (ROOT) ===============" (( ROOT )) && printf "\n${BORANGE}%s\n" "================ $title (ROOT) ==============="
printf "%s\n" "# #" printf "%s\n" "# #"
printf "%-12s${NC}%s${BORANGE}%14s\n" "#" "1 - $title a package" "#" | awk '{print tolower($0)}' 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}%27s\n" "#" "3 - GFAM" "#"
printf "%-12s${NC}%s${BORANGE}%23s\n" "#" "4 - Carriers" "#" printf "%-12s${NC}%s${BORANGE}%23s\n" "#" "4 - Carriers" "#"
printf "%-12s${NC}%s${BORANGE}%25s\n" "#" "5 - Others" "#" printf "%-12s${NC}%s${BORANGE}%25s\n" "#" "5 - Others" "#"
printf "%-12s${NC}%s${BORANGE}%27s\n" "#" "6 - AOSP" "#" printf "%-12s${NC}%s${BORANGE}%27s\n" "#" "6 - AOSP" "#"
printf "%-12s${NC}%s${BORANGE}%18s\n" "#" "7 - External list" "#" printf "%-12s${NC}%s${BORANGE}%18s\n" "#" "7 - External list" "#"
(( ROOT && !RESTORE )) && printf "#${NC}%7s 8 - Create a flashable zip${BORANGE}%7s #\n" (( 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 "%-12s${NC}%s${BORANGE}%15s\n" "#" "0 - Pending list /!\\" "#"
printf "%s\n" "# #" printf "%s\n" "# #"
printf "%s\n${NC}\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" =~ 7 ]]; then import_external_list && debloat_or_restore EXTERNAL_LIST; fi
if [[ "$REPLY" =~ 4 ]]; then lists_selection us_carriers french_carriers german_carriers; fi if [[ "$REPLY" =~ 4 ]]; then lists_selection us_carriers french_carriers german_carriers; fi
@ -148,7 +166,6 @@ main() {
if [[ "$REPLY" =~ 8 ]]; then create_flashable_zip; fi if [[ "$REPLY" =~ 8 ]]; then create_flashable_zip; fi
if [[ "$REPLY" =~ 0 ]]; then debloat_or_restore pending; fi if [[ "$REPLY" =~ 0 ]]; then debloat_or_restore pending; fi
elif [[ "$REPLY" =~ [Xx] ]]; then adb reboot && exit 0; elif [[ "$REPLY" =~ [Xx] ]]; then adb reboot && exit 0;
fi fi
@ -166,13 +183,17 @@ import_external_list() {
done done
for i in "${EXTERNAL_LIST[@]}"; do 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" printf "\n${BRED}%s${NC}\n\n" "Please use a package list, not an APK list"
exit 1 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" ")" printf "\n${BRED}%s${NC}%s${BRED}%s${NC}%s\n\n" "$i" " is not a package (format is" " com.android.bips" ")"
exit 1 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 fi
done done
} }
@ -182,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) readarray -t PACKAGES < <(adb shell 'pm list packages -s -u -f' | sed -r 's/package://g' | sort -i)
for i in "${PACKAGES[@]}"; do for i in "${PACKAGES[@]}"; do
ASSOCIATE["${i##*=}"]="${i%%=*}" ASSOCIATE["${i##*=}"]="${i%=*}"
done done
} }
generate_custom_list() { generate_custom_list() {
clear -x
local -n list="$1" local -n list="$1"
[[ $# -eq 2 ]] && local user_id="$2" [[ $# -eq 2 ]] && local user_id="$2"
CUSTOM_LIST=() CUSTOM_LIST=()
@ -199,21 +221,35 @@ generate_custom_list() {
readarray -t TEMP < <(comm -12 <(for p in "${list[@]}"; do echo "${p}"; done|sort -i) \ 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 "${!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]}") CUSTOM_LIST+=("${PACKAGE_AND_PATH[$p]}")
done done
[[ RESTORE -eq 1 ]] && readarray -t CUSTOM_LIST < <(comm -12 <(for p in "${CUSTOM_LIST[@]}"; do echo "${p}"; done|sort -i) \ if [[ $RESTORE -eq 1 ]]; then
<(sort -i deleted_apks.txt))
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 else
if (( RESTORE )); then if (( RESTORE )); then
readarray -t CUSTOM_LIST < <(comm -12 <(for p in "${list[@]}"; do echo "${p}"; done|sort -i) \ 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 else
readarray -t CUSTOM_LIST < <(comm -12 <(for p in "${list[@]}"; do echo "${p}"; done|sort -i) \ 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)) <(adb shell "pm list packages -s $user_id" | sed 's/package://g' | sort -i))
fi fi
fi fi
return 0 return 0
} }
@ -222,13 +258,18 @@ debloat_or_restore() {
local output="" local output=""
local title=$( echo "$title" | tr '[:upper:]' '[:lower:]') local title=$( echo "$title" | tr '[:upper:]' '[:lower:]')
(( RESTORE )) && action='cmd package install-existing $package' || action='pm uninstall $user $package'
# Android 7.1 and older can't reinstall packages # Android 7.1 and older can't reinstall packages
if (( OLDER_THAN_ANDROID_8 )); then if (( OLDER_THAN_ANDROID_8 )); then
(( RESTORE )) && action='pm enable $package' || action='am force-stop $package && pm disable-user $package && pm clear $package'
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 fi
(( RESTORE && FORCE_UNINSTALL == 1 )) && action='cmd package install-existing $package' || action='pm uninstall $user $package'
# parse user list on the phone # parse user list on the phone
readarray -t USERS < <(adb shell pm list users | grep -o "{[0-9]*" | grep -o "[0-9]*") readarray -t USERS < <(adb shell pm list users | grep -o "{[0-9]*" | grep -o "[0-9]*")
@ -239,47 +280,46 @@ debloat_or_restore() {
printf "\n${BORANGE}%s${NC}\n" "==== $list debloat list ====" printf "\n${BORANGE}%s${NC}\n" "==== $list debloat list ===="
if (( ROOT )); then if (( ROOT )); then
touch -a deleted_apks.txt
generate_custom_list "$list" generate_custom_list "$list"
if (( RESTORE )); then restore_apks "$list"; else root_debloat "$list"; fi if (( RESTORE )); then restore_apks "$list"; else root_debloat "$list"; fi
return return
fi fi
for u in "${USERS[@]}"; do for u_num in "${USERS[@]}"; do
local user=$( ((OLDER_THAN_ANDROID_5)) && echo "" || echo "--user $u" ) local user=$( ((OLDER_THAN_ANDROID_5)) && echo "" || echo "--user $u_num" )
generate_custom_list "$list" "$user" generate_custom_list "$list" "$user"
if [[ ${#CUSTOM_LIST[@]} -eq 0 ]]; then if [[ ${#CUSTOM_LIST[@]} -eq 0 ]]; then
printf "${BBLUE}%s${NC}%s" "[user $u]" " Nothing to $title :)" && sleep 1 && continue printf "${BBLUE}%s${NC}%s" "[user $u_num]" " Nothing to $title :)" && sleep 1 && continue
fi fi
for package in "${CUSTOM_LIST[@]}"; do for package in "${CUSTOM_LIST[@]}"; do
do_package_action_and_log "$package" "$action" "$u" do_package_action_and_log
done done
done done
sleep 1 sleep 1
else else
if (( ROOT )); then if (( ROOT )); then
touch -a deleted_apks.txt
if (( RESTORE )); then restore_apks; else root_debloat; fi if (( RESTORE )); then restore_apks; else root_debloat; fi
return return
fi fi
printf "\n${BRED}%s${NC}" "Package name to $title: " printf "\n${BRED}%s${NC}" "Package name to $title: "
read -r package read -r package
for u in "${USERS[@]}"; do for u_num in "${USERS[@]}"; do
local user=$( ((OLDER_THAN_ANDROID_5)) && echo "" || echo "--user $u" ) local user=$( ((OLDER_THAN_ANDROID_5)) && echo "" || echo "--user $u_num" )
do_package_action_and_log "$package" "$action" "$u" do_package_action_and_log
done done
sleep 1 sleep 1
fi fi
} }
do_package_action_and_log() { do_package_action_and_log() {
local package="$1" printf "${BBLUE}%s${BRED}%s${NC}%s" "[user $u_num] " "$package --> "
local action="$2" output="$(eval adb shell "\"$action\"")" && echo "$output"
local user="$3"
printf "${BBLUE}%s${BRED}%s${NC}%s" "[user $user] " "$package --> "
output="$(eval adb shell "$action")" && echo "$output"
if [[ ! "$output" =~ Failure|Error ]]; then if [[ ! "$output" =~ Failure|Error ]]; then
if [[ $RESTORE -eq 0 ]]; then if [[ $RESTORE -eq 0 ]]; then
@ -295,9 +335,12 @@ backup_apks() {
local -n apks="$1" local -n apks="$1"
mkdir -p apks_backup mkdir -p apks_backup
for apk in "${apks[@]}"; do 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 done
printf "\n${BRED}%s${NC}\n\n" "Backup done!" printf "\n${BGREEN}%s${NC}\n\n" "Backup done!"
} }
create_flashable_zip() { create_flashable_zip() {
@ -313,20 +356,30 @@ create_flashable_zip() {
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 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/ mkdir -p META-INF/com/google/android/
echo "#!/sbin/sh" > "$UPDATE_BINARY" echo "#!/sbin/sh" > "$UPDATE_BINARY"
echo "echo 'ui_print --- Universal Android Debloater ---' > /proc/self/fd/\$2" >> "$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 declare -i is_empty=1
for list in "${selection[@]}"; do for list in "${selection[@]}"; do
if (( list > ${#LISTS[@]} )) || (( list < 1 )); then continue; fi if (( list > ${#LISTS[@]} )) || (( list < 1 )); then continue; fi
generate_custom_list "${LISTS[$list]}" generate_custom_list "${LISTS[$list]}"
backup_apks CUSTOM_LIST backup_apks CUSTOM_LIST
for package in "${CUSTOM_LIST[@]}"; do for package in "${CUSTOM_LIST[@]}"; do
echo "echo $package" >> "$UPDATE_BINARY" echo "rm -rf $package" >> "$UPDATE_BINARY"
done done
[[ $is_empty -eq 1 && ${#CUSTOM_LIST[@]} -gt 0 ]] && is_empty=0 [[ $is_empty -eq 1 && ${#CUSTOM_LIST[@]} -gt 0 ]] && is_empty=0
done done
@ -334,11 +387,10 @@ create_flashable_zip() {
printf "\n${BRED}%s${NC}\n" "Nothing to debloat!" printf "\n${BRED}%s${NC}\n" "Nothing to debloat!"
rm -rf META-INF/ rm -rf META-INF/
else 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" 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 zip -rm flashable_zip_UAD_${VERSION%%[[:space:]]*}.zip META-INF/ 1>/dev/null
printf "\n${BRED}%s${NC}%s\n" "flashable_zip_UAD_v2.8.zip" " has been generated." printf "\n${BGREEN}%s${NC}%s\n" "flashable_zip_UAD_$VERSION.zip" " has been generated."
fi fi
sleep 2 sleep 2
@ -349,7 +401,7 @@ restore_apks() {
if [[ $# -eq 1 ]]; then 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%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" printf "\n${BRED}%s${NC}\n\n" "Check your phone: Magisk Manager is probably asking you to grand root permissions for ADB"
@ -364,9 +416,13 @@ restore_apks() {
CUSTOM_LIST=("$path") CUSTOM_LIST=("$path")
fi 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 for p in "${CUSTOM_LIST[@]}"; do # $p = path/to/app.apk
local apk=$(echo "$p" | sed -r 's/.*\///g') # app.apk local apk=$(echo "$p" | sed -r 's/.*\///g') # app.apk
local dir=$(dirname "$p") # path/to local dir=$(dirname "$p") # path/to
@ -375,18 +431,19 @@ restore_apks() {
fi fi
done 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${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" printf "\n\e[5m%s\033[0m" "Press any key to continue"
read -n 1 -r -s read -n 1 -r -s
} }
root_debloat() { root_debloat() {
local method=""
if [[ $# -eq 1 ]]; then if [[ $# -eq 1 ]]; then
[[ ${#CUSTOM_LIST[@]} -eq 0 ]] && echo "Nothing to debloat :)" && sleep 1 && return 0 [[ ${#CUSTOM_LIST[@]} -eq 0 ]] && echo "Nothing to debloat :)" && sleep 1 && return 0
backup_apks CUSTOM_LIST
else else
printf "\n${BRED}%s${NC}" "Android Path of the APK to delete: " printf "\n${BRED}%s${NC}" "Android Path of the APK to delete: "
read -r path read -r path
@ -396,15 +453,22 @@ root_debloat() {
fi fi
CUSTOM_LIST=("$path") CUSTOM_LIST=("$path")
fi 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 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 for apk in "${CUSTOM_LIST[@]}"; do
grep -qxF "$apk" deleted_apks.txt || echo "$apk" >> "deleted_apks.txt" grep -qxF "$apk" deleted_apks.txt || echo "$apk" >> "deleted_apks.txt"
commandes+="echo \"rm -rf $apk\"; rm -rf \"$apk\";" commandes+="echo \"rm -rf $apk\"; rm -rf \"$apk\";"
done 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" 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'" adb shell "su -c '$commandes'"
printf "\n${BRED}%s${NC}\n" "DONE" printf "\n${BRED}%s${NC}\n" "DONE"
@ -414,6 +478,111 @@ root_debloat() {
fi 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() { lists_selection() {
clear -x clear -x
declare -a selection=() declare -a selection=()
@ -422,7 +591,7 @@ lists_selection() {
printf "%-2s%s\n" "$i" " - ${!i}" printf "%-2s%s\n" "$i" " - ${!i}"
done 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 read -r -a selection
for list in "${selection[@]}"; do for list in "${selection[@]}"; do
if (( list > $# )) || (( list < 1 )); then continue; fi if (( list > $# )) || (( list < 1 )); then continue; fi
@ -433,11 +602,18 @@ lists_selection() {
list_installed_packages() { list_installed_packages() {
clear -x clear -x
declare -a packages=()
printf "\n${BRED}%s${NC}" "Search for packages (regex accepted): " printf "\n${BRED}%s${NC}" "Search for packages (regex accepted): "
read -r read -r
echo 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" printf "\n\e[5m%s\033[0m" "Press any key to continue"
read -n 1 -r -s read -n 1 -r -s
@ -482,9 +658,9 @@ get_brand() {
local brand local brand
brand=$(adb shell getprop ro.product.brand | tr -d '\r' | awk '{print tolower($0)}') 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 case "$brand" in
"redmi") echo "xiaomi" ;; "redmi"|"poco") echo "xiaomi" ;;
*) echo "$brand" *) echo "$brand"
esac esac
} }
@ -492,6 +668,7 @@ get_brand() {
uad_recovery_mode() { uad_recovery_mode() {
ROOT=1 ROOT=1
while true; do while true; do
clear -x
printf "\n${BBLUE}%s\n" "========== MAIN MENU (RECOVERY MODE) ==========" printf "\n${BBLUE}%s\n" "========== MAIN MENU (RECOVERY MODE) =========="
printf "%s\n" "# #" printf "%s\n" "# #"
printf "%-12s${NC}%s${BBLUE}%12s\n" "#" "1 - Restore APKs (Root)" "#" printf "%-12s${NC}%s${BBLUE}%12s\n" "#" "1 - Restore APKs (Root)" "#"
@ -515,7 +692,7 @@ uad_recovery_mode() {
printf "%s\n" "# #" printf "%s\n" "# #"
printf "%-12s${NC}%s${BBLUE}%17s\n" "#" "1 - $title an APK" "#" | awk '{print tolower($0)}' 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" "#" 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" "# #"
printf "%s\n${NC}" "=================================================" printf "%s\n${NC}" "================================================="
@ -523,13 +700,14 @@ uad_recovery_mode() {
if [[ $REPLY = 1 ]]; then if [[ $REPLY = 1 ]]; then
printf "\n${BRED}%s${NC}" "Android path of the APK to $title: " while true; do
read -r path 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" printf "\n${BRED}%s${NC}%s${BRED}%s${NC}%s\n" "$path" " doesn't look like a valid APK path"
sleep 3 && return 0 done
fi
CUSTOM_LIST=("$path") CUSTOM_LIST=("$path")
fi fi
@ -541,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)" printf "\n%s${BRED}%s${NC}%s\n\n" "Your apks has been backed-up in" " apks_backup/" " (in case you messed up)"
fi 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 for p in "${CUSTOM_LIST[@]}"; do # $p = path/to/app.apk
local apk=$(echo "$p" | sed -r 's/.*\///g') # app.apk local apk=$(echo "$p" | sed -r 's/.*\///g') # app.apk
local dir=$(dirname "$p") # path/to local dir=$(dirname "$p") # path/to

View file

@ -1,10 +1,11 @@
#!/usr/bin/env bash #!/usr/bin/env bash
### These packages will be added in the default selection when I will find time to document them. ### 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". # 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=( declare -a pending=(
@ -13,6 +14,7 @@ declare -a pending=(
#"com.android.systemui.navigation.bar.overlay" #"com.android.systemui.navigation.bar.overlay"
############## AOSP ############### ############## AOSP ###############
#"com.android.wifi.resources"
############# GOOGLE ############## ############# GOOGLE ##############
@ -23,7 +25,9 @@ declare -a pending=(
"com.qualcomm.qti.performancemode" "com.qualcomm.qti.performancemode"
"com.qualcomm.qti.poweroffalarm" "com.qualcomm.qti.poweroffalarm"
"com.qualcomm.qti.qdma" "com.qualcomm.qti.qdma"
#"com.qualcomm.qti.gpudrivers.kona.api30"
#"com.qualcomm.qti.seccamservice" #"com.qualcomm.qti.seccamservice"
#"com.qualcomm.qti.services.secureui"
#"com.qualcomm.qti.services.systemhelper" #"com.qualcomm.qti.services.systemhelper"
#"com.qualcomm.qti.simcontacts" #"com.qualcomm.qti.simcontacts"
#"com.qualcomm.qti.uceShimService" #"com.qualcomm.qti.uceShimService"
@ -49,7 +53,29 @@ declare -a pending=(
"com.jrdcom.filemanager.a_overlay" "com.jrdcom.filemanager.a_overlay"
"com.vendor.frameworkresoverlay" "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 ############## ############### SONY ##############
"com.sonymobile.devicesecurity.service" "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. # 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") # 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" "com.android.providers.partnerbookmarks"
# Provides bookmarks about partners of Google in Chrome. # Provides bookmarks about partners of Google in Chrome.
@ -113,7 +106,8 @@ declare -a aosp=(
"com.android.wallpaper.livepicker" "com.android.wallpaper.livepicker"
"com.android.wallpaper.livepicker.overlay" "com.android.wallpaper.livepicker.overlay"
# Enables you to pick a live wallpaper. # Enables you to pick a live wallpaper.
# Will break some weather applications (especially ones with widgets) and wallpaper applications like Muzei.
"com.android.wallpapercropper" "com.android.wallpapercropper"
# Wallpaper cropper. # Wallpaper cropper.
@ -125,7 +119,12 @@ declare -a aosp=(
"android.auto_generated_vendor_" # [MORE INFO NEEDED] "android.auto_generated_vendor_" # [MORE INFO NEEDED]
# Auto generated vendor's stuff for Android Auto (https://www.android.com/intl/en_en/auto/) # 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" "com.android.apps.tag"
# Support for NFC tags interactions (5 permissions : Contacts/Phone On by default). # 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. # 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. # 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" #"com.android.providers.blockednumber"
# Handles blocked numbers storage # 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) # 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. # 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] #"com.android.settings.intelligence"
# Settings tips in Settings menu ? # Setting search feature
# I don't have this in my phone. It for Android Pie. Can someone check ? # 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" #"com.android.sharedstoragebackup"
# Used during backup. Fetch shared storage (files accessible by every apps with STORAGE permission) # 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 # Asus calculator app
# NOTE : Simple calculator is a good alternative : https://f-droid.org/en/packages/com.simplemobiletools.calculator/ # 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" "com.asus.ia.asusapp"
# My Asus (https://play.google.com/store/apps/details?id=com.asus.ia.asusapp) # My Asus (https://play.google.com/store/apps/details?id=com.asus.ia.asusapp)
# Asus service center (support + store) # Asus service center (support + store)
"com.asus.soundrecorder" "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" "com.verizon.messaging.vzmsgs"
# Verizon Messages (https://play.google.com/store/apps/details?id=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 # My Verizon Services
# Related to My Verizon app. # Related to My Verizon app.
# Tested to be required for hotspot.
"com.verizon.obdm" # [MORE INFO NEEDED] "com.verizon.obdm" # [MORE INFO NEEDED]
"com.verizon.obdm_permissions" "com.verizon.obdm_permissions"
@ -402,6 +403,10 @@ declare -a us_carriers=(
# Spam call blocking app provided by Hiya # 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/) # 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" "com.att.dh"
# Device Help (https://play.google.com/store/apps/details?id=com.att.dh) # Device Help (https://play.google.com/store/apps/details?id=com.att.dh)
# Troubleshooting app. # 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) # 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. # 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" "com.att.tv"
# AT&T TV (https://play.google.com/store/apps/details?id=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. # Lets you Stream TV live and on demand from your phone.
@ -481,6 +492,10 @@ declare -a us_carriers=(
# Visual Voicemail # Visual Voicemail
# Simple GUI for voicemail # Simple GUI for voicemail
"com.sec.android.app.ewidgetatt"
# Entertainment Widget
# AT&T Widget for OneUI
"com.synchronoss.dcs.att.r2g" "com.synchronoss.dcs.att.r2g"
# Setup & Transfer # Setup & Transfer
# App for transferring "contacts, photos, videos, music, call logs, and documents" from another device # 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 ?) # Device Health Services (discontinued ?)
# Calculates your remaining battery percentage based on your usage # 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/) # 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] "com.google.android.apps.work.oobconfig" # [MORE INFO NEEDED]
# Needs internet to fetchs enterprise and carrier lock config via internet. # 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) # 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). # 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" #"com.android.vending"
# Google Play Store app. # Google Play Store app.
@ -534,4 +541,11 @@ declare -a google=(
#"com.google.android.overlay.modules.permissioncontroller.forframework" #"com.google.android.overlay.modules.permissioncontroller.forframework"
# The PermissionController module enables updatable privacy policies and UI elements. # The PermissionController module enables updatable privacy policies and UI elements.
# For example, the policies and UI around granting and managing permissions. # 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. # 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. # 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 # Samsung Wallpapers
# Wallaper manager from the launcher. You can probably remove it and still set a wallpaper from the Gallery. # Wallaper manager from the launcher. You can remove it and still set a wallpaper from the Gallery.
# Can someone check?
# Has INTERNET permission and... ACCESS_MEDIA_LOCATION # Has INTERNET permission and... ACCESS_MEDIA_LOCATION
"com.samsung.android.app.episodes" "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. # 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/ # 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] "com.samsung.android.bbc.bbcagent" # [MORE INFO NEEDED]
# BBCAgent (B. B. Container Agent?) # BBCAgent (B. B. Container Agent?)
# Collects device information and manages installation/uninstallation of trusted apps in KNOX containers # Collects device information and manages installation/uninstallation of trusted apps in KNOX containers
@ -309,7 +315,10 @@ declare -a samsung=(
# Bixby (Samsung intelligence assistant) # Bixby (Samsung intelligence assistant)
# Enable or Disable access to S-Voice or Bixby voice controls. # 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. # This does not prevent access to other voice-controlled apps, only the Samsung-provided ones.
"com.samsung.android.bixby.agent" # Bixby voice "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.agent.dummy" # Bixby Voice Stub
"com.samsung.android.bixby.es.globalaction" "com.samsung.android.bixby.es.globalaction"
"com.samsung.android.bixby.plmsync" "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 # 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. # 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" "com.samsung.android.hmt.vrshell"
# Gear VR Shell # Gear VR Shell
# Gear VR : https://360samsungvr.com/portal/content/about_samsung_vr # Gear VR : https://360samsungvr.com/portal/content/about_samsung_vr
@ -420,6 +433,11 @@ declare -a samsung=(
# Gear VR Service # Gear VR Service
# See above. # 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" "com.samsung.android.intelligenceservice2"
# It seems that this package is a kind of spyware. Very difficult to find information about this. # 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). # 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. # 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. # 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" "com.samsung.android.keyguardwallpaperupdator"
# Lets you customize your Samsung device with different images (provided by Samsung) on the lock screen. # 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 # https://developer.samsung.com/tech-insights/knox/mobile-device-management
"com.samsung.android.mdx" "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 # 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/ # 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" "com.samsung.android.mobileservice"
# Samsung Experience Service (https://play.google.com/store/apps/details?id=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 # ShortcutBNR
# Related to smartSwitch Samsung Cloud features # 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" "com.samsung.android.slinkcloud"
# Samsung Cloud Gateway # Samsung Cloud Gateway
# NEEDED FOR Scloud app # NEEDED FOR Scloud app
@ -739,9 +787,13 @@ declare -a samsung=(
"com.samsung.android.weather" "com.samsung.android.weather"
# Samsung 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" "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 # 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. # 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 # Knox Analytics Uploader
# Sends analytcs to Samsung # 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" "com.samsung.knox.knoxtrustagent"
# Knox Quick Access allows users to access the Knox Workspace container using wearables such as the Galaxy Gear S2. # 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] "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" "com.samsung.knox.securefolder"
# Knox Secure Folder (https://play.google.com/store/apps/details?id=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" "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. # 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" "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 # 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. # 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. # Needed to use Smart Switch. See above.
"com.sec.android.easyonehand" "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" "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. # 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 # Handle Face recognition unlock
# https://kp-cdn.samsungknox.com/b60a7f0f59df8f466e8054f783fbbfe2.pdf # https://kp-cdn.samsungknox.com/b60a7f0f59df8f466e8054f783fbbfe2.pdf
#"com.samsung.android.biometrics"
# Provide biometric support
#"com.samsung.android.biometrics.app.setting" #"com.samsung.android.biometrics.app.setting"
# Biometric settings # Biometric settings
@ -1559,6 +1624,7 @@ declare -a samsung=(
# You should use it, it's great # You should use it, it's great
#"com.samsung.android.contacts" #"com.samsung.android.contacts"
#"com.samsung.android.app.contacts"
# Samsung contacts app # Samsung contacts app
# Safe to debloat if you use another 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. # 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. # 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) # 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. # 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 # 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. # 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] #"com.samsung.sdm.sdmviewer" # [MORE INFO NEEDED]
# Lets you view installed updates? # Lets you view installed updates?
#"com.sansumg.SMT" #"com.samsung.SMT"
# Samsung TTS (Text-to-speech) # 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 # 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 # 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 # 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) # 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" #"com.sec.android.app.launcher"
# Samsung One UI Home launcher (homescreen) (https://play.google.com/store/apps/details?id=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 # It is samsung Touchwiz default launcher
@ -1691,6 +1767,9 @@ declare -a samsung=(
#"com.sec.android.app.clockpackage" #"com.sec.android.app.clockpackage"
# Samsung clock # 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] #"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. # 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 # 2 permissions : READ_PHONE_STATE and CHANGE_PHONE_STATE
@ -1735,6 +1814,17 @@ declare -a samsung=(
#"com.sec.android.gallery3d.panorama360view" #"com.sec.android.gallery3d.panorama360view"
# Let you see panoramic photos in the samsung Gallery. # 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" #"com.sec.android.mimage.photoretouching"
# Samsung Photo Editor # Samsung Photo Editor
# Disabling this will disable the inbuilt photo editor accessed via the stock gallery. # 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. # 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_P" # [MORE INFO NEEDED]
#"com.samsung.android.timezone.data_Q" # [MORE INFO NEEDED]
# Stores timezone data? # Stores timezone data?
#"com.samsung.android.timezone.updater" #"com.samsung.android.timezone.updater"
@ -1890,11 +1981,6 @@ declare -a samsung=(
# It kills rarely used apps running in background. # 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. # 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" #"com.sec.android.app.simsettingmgr"
# SIM card manager. # SIM card manager.
# Contains configuration and settings for handling dual SIM (give a SIM an icon, a name, and so on) # 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. # Your phone needs to be connected to internet (Wifi/mobile data) for this feature to work.
# REMOVING THIS PACKAGE WILL BOOTLOOP YOUR DEVICE! # 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' # NOTE : You cannot disable it via adb
# Can someone try ? # 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] #"com.miui.global.packageinstaller"
# MIUI Package installer # The security check / virus scan which runs after a package installation
# Offers the ability to install, upgrade, and remove applications on the device. # Uninstalling it does not cause a bootloop
# Is it the replacement of com.android.packageinstaller? # Package installation still works fine
#"com.miui.securitycenter" #"com.miui.securitycenter"
# MIUI Security app # MIUI Security app