mirror of
https://gitlab.com/W1nst0n/universal-android-debloater.git
synced 2024-09-30 09:06:32 +13:00
Compare commits
26 commits
Author | SHA1 | Date | |
---|---|---|---|
|
316b01b5ee | ||
|
0b98f69fde | ||
|
6c6b63e33c | ||
|
bfdbf13442 | ||
|
480b292bd9 | ||
|
f4d4744398 | ||
|
51e22ac254 | ||
|
7ded3301e4 | ||
|
76a3035fa2 | ||
|
f09dfe8fe7 | ||
|
ff66e774b2 | ||
|
6c4e819275 | ||
|
ff05dd35b2 | ||
|
6c6798fd04 | ||
|
8e35a1d104 | ||
|
e410b3d9fe | ||
|
39d6ab29d6 | ||
|
38d216688f | ||
|
d0d73a2c2d | ||
|
4a6ae80380 | ||
|
5573f5c701 | ||
|
53357d76dc | ||
|
3d24cc2f49 | ||
|
9e40855840 | ||
|
9b62302d61 | ||
|
e8024ffd60 |
10 changed files with 529 additions and 122 deletions
61
CHANGELOG.md
61
CHANGELOG.md
|
@ -1,3 +1,64 @@
|
||||||
|
# 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)
|
# Hotfix (v2.8.2)
|
||||||
|
|
||||||
- Flashable debloat zip not removing anything (oversight on my part after debugging for the first hotfix)
|
- Flashable debloat zip not removing anything (oversight on my part after debugging for the first hotfix)
|
||||||
|
|
28
README.md
28
README.md
|
@ -1,3 +1,7 @@
|
||||||
|
# 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.
|
||||||
|
@ -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
|
||||||
```
|
```
|
||||||
|
|
302
debloat_script.sh
Executable file → Normal file
302
debloat_script.sh
Executable file → Normal 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,7 +35,7 @@ done
|
||||||
############################################### MAIN SCRIPT ##########################################################
|
############################################### MAIN SCRIPT ##########################################################
|
||||||
|
|
||||||
main() {
|
main() {
|
||||||
readonly VERSION="v2.8.2 (January 11th 2021)"
|
readonly VERSION="v2.9.2 (March 30th 2021)"
|
||||||
readonly PAD=$(((48-${#VERSION})/2))
|
readonly PAD=$(((48-${#VERSION})/2))
|
||||||
|
|
||||||
readonly BRAND="$(get_brand)"
|
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_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
|
||||||
|
@ -73,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):"
|
||||||
|
|
||||||
|
@ -81,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
|
||||||
|
@ -110,20 +114,35 @@ 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" "#"
|
||||||
|
@ -147,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
|
||||||
|
@ -165,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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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)
|
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=()
|
||||||
|
@ -198,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))
|
||||||
|
|
||||||
|
[[ RESTORE -ne 1 ]] && printf "\n${BGREEN}%s${NC}\n\n" "Clearing app data..."
|
||||||
|
|
||||||
for p in "${TEMP[@]}"; do
|
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
|
||||||
|
|
||||||
|
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))
|
<(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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -221,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]*")
|
||||||
|
|
||||||
|
@ -238,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
|
||||||
|
@ -294,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() {
|
||||||
|
@ -312,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 "rm -rf $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
|
||||||
|
|
||||||
|
@ -333,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
|
||||||
|
@ -348,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"
|
||||||
|
@ -363,8 +416,12 @@ 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
|
||||||
|
@ -374,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
|
||||||
|
@ -395,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"
|
||||||
|
@ -413,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=()
|
||||||
|
@ -432,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
|
||||||
|
@ -481,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
|
||||||
}
|
}
|
||||||
|
@ -491,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)" "#"
|
||||||
|
@ -514,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}" "================================================="
|
||||||
|
|
||||||
|
@ -522,13 +700,14 @@ uad_recovery_mode() {
|
||||||
|
|
||||||
if [[ $REPLY = 1 ]]; then
|
if [[ $REPLY = 1 ]]; then
|
||||||
|
|
||||||
|
while true; do
|
||||||
printf "\n${BRED}%s${NC}" "Android path of the APK to $title: "
|
printf "\n${BRED}%s${NC}" "Android path of the APK to $title: "
|
||||||
read -r path
|
read -r path
|
||||||
|
|
||||||
if [[ ! $path =~ ^/.*\.apk$ ]]; then
|
[[ $path =~ ^/.*\.apk$ ]] && break
|
||||||
|
|
||||||
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
|
||||||
|
|
||||||
|
@ -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)"
|
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
|
||||||
|
|
|
@ -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"
|
||||||
|
@ -50,6 +54,28 @@ declare -a pending=(
|
||||||
"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"
|
||||||
|
|
|
@ -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,6 +106,7 @@ 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.
|
||||||
|
@ -127,6 +121,11 @@ declare -a aosp=(
|
||||||
# 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).
|
||||||
# NFC Tags are for instance used in bus to let you validate your transport card with your phone
|
# NFC Tags are for instance used in bus to let you validate your transport card with your phone
|
||||||
|
@ -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)
|
||||||
|
|
|
@ -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
|
||||||
)
|
)
|
|
@ -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
|
||||||
|
|
|
@ -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.
|
||||||
|
|
||||||
|
@ -535,3 +542,10 @@ declare -a google=(
|
||||||
# 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 doesn’t 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
|
||||||
|
|
116
lists/Samsung.sh
116
lists/Samsung.sh
|
@ -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,12 +875,23 @@ 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)
|
||||||
# Create a secure space on your device to encrypt and store your private data and apps.
|
# Create a secure space on your device to encrypt and store your private data and apps.
|
||||||
|
@ -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)
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue