mirror of
https://gitlab.com/W1nst0n/universal-android-debloater.git
synced 2024-09-30 09:06:32 +13:00
Compare commits
No commits in common. "master" and "v2.8.2" have entirely different histories.
10 changed files with 122 additions and 529 deletions
61
CHANGELOG.md
61
CHANGELOG.md
|
@ -1,64 +1,3 @@
|
|||
# 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)
|
||||
|
|
28
README.md
28
README.md
|
@ -1,7 +1,3 @@
|
|||
# This project is no longer maintained!
|
||||
The whole project has been rewritten in Rust. The Universal Android Debloat is now a real software with a cross-platform GUI. It is still in a early stage of developpement but most features are there. Please do not open new merge requests and issues on this repo.<br>
|
||||
===> [The new Universal Android Debloat](https://github.com/0x192/universal-android-debloater)
|
||||
|
||||
# Universal Android Debloater
|
||||
|
||||
**DISCLAIMER**: Use this script at your own risk. I am not responsible for anything that could happen to your phone.
|
||||
|
@ -78,15 +74,15 @@ NB : The non-root method is NOT a real uninstallation for system apps (see the [
|
|||
|
||||
Debian Base:
|
||||
```bash
|
||||
$ sudo apt install android-sdk-platform-tools qpdf zip
|
||||
$ sudo apt install android-sdk-platform-tools qpdf
|
||||
```
|
||||
Arch-Linux Base:
|
||||
```bash
|
||||
$ sudo pacman -S android-tools qpdf zip
|
||||
$ sudo pacman -S android-tools qpdf
|
||||
```
|
||||
Red Hat Base:
|
||||
```bash
|
||||
$ sudo yum install android-tools qpdf zip
|
||||
$ sudo yum install android-tools qpdf
|
||||
```
|
||||
</details>
|
||||
</p>
|
||||
|
@ -103,6 +99,18 @@ You will also need to upgrade bash because Apple ships a very old bash version (
|
|||
```bash
|
||||
$ brew install android-platform-tools qpdf bash
|
||||
```
|
||||
|
||||
You have to make the new bash version your default:
|
||||
|
||||
```bash
|
||||
$ sudo echo "/usr/local/bin/bash" >> /etc/shells
|
||||
$ chsh -s /usr/local/bin/bash
|
||||
```
|
||||
Check if it works:
|
||||
|
||||
```bash
|
||||
$ echo $BASH_VERSION
|
||||
```
|
||||
</details>
|
||||
</p>
|
||||
|
||||
|
@ -133,7 +141,7 @@ For now, there is no USB support in the WSL. This means you need to install both
|
|||
- Install *Android platform tools* and *qpdf* from the Debian/Ubuntu shell
|
||||
```bash
|
||||
$ sudo apt update && sudo apt upgrade
|
||||
$ sudo apt install android-sdk-platform-tools qpdf zip
|
||||
$ sudo apt install android-sdk-platform-tools qpdf
|
||||
```
|
||||
- Check the version of ADB on Linux & Windows
|
||||
```bash
|
||||
|
@ -164,9 +172,9 @@ Note: You can access your Windows files under `/mnt/c/`
|
|||
</p>
|
||||
|
||||
|
||||
- Download [the lastest release of Android Universal Debloater](https://gitlab.com/W1nst0n/universal-android-debloater/-/releases).
|
||||
- Download [the lastest release of Android Universal Debloater](https://gitlab.com/W1nst0n/universal-android-debloater/-/releases)
|
||||
- Browse through the debloat lists to be sure the default selection suits you.
|
||||
- Run `debloat_script.sh` from a Unix terminal.
|
||||
- Run `debloat_script.sh` from a Unix terminal
|
||||
```bash
|
||||
$ bash debloat_script.sh
|
||||
```
|
||||
|
|
314
debloat_script.sh
Normal file → Executable file
314
debloat_script.sh
Normal file → Executable file
|
@ -1,9 +1,7 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# BASH 4.4 or newer is needed!
|
||||
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 (( "${BASH_VERSINFO[0]}" < 5 )); 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
|
||||
|
||||
|
@ -35,7 +33,7 @@ done
|
|||
############################################### MAIN SCRIPT ##########################################################
|
||||
|
||||
main() {
|
||||
readonly VERSION="v2.9.2 (March 30th 2021)"
|
||||
readonly VERSION="v2.8.2 (January 11th 2021)"
|
||||
readonly PAD=$(((48-${#VERSION})/2))
|
||||
|
||||
readonly BRAND="$(get_brand)"
|
||||
|
@ -43,15 +41,12 @@ main() {
|
|||
|
||||
readonly OLDER_THAN_ANDROID_8=$(( $(adb shell getprop ro.build.version.sdk | tr -d '\r') < 26 ))
|
||||
readonly OLDER_THAN_ANDROID_5=$(( $(adb shell getprop ro.build.version.sdk | tr -d '\r') < 21 ))
|
||||
readonly NEWER_THAN_ANDROID_9=$(( $(adb shell getprop ro.build.version.sdk | tr -d '\r') >= 29 ))
|
||||
|
||||
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 CUSTOM_LIST=() # Trimed APK/package list from the debloat lists only containing packages/APK on the device (populated by generate_custom_list())
|
||||
declare -a EXTERNAL_LIST=() # APK/package list provided by the user (populated by import_external_list())
|
||||
declare -a USERS=() # User list (populated by debloat_or_restore())
|
||||
declare -ra LISTS=(us_carriers french_carrier german_carriers "$BRAND" google facebook amazon microsoft \
|
||||
qualcomm mediatek misc aosp pending EXTERNAL_LIST)
|
||||
qualcomm mediatek misc aosp pending)
|
||||
|
||||
declare -i FORCE_UNINSTALL=0
|
||||
declare -i RESTORE=0
|
||||
|
@ -78,7 +73,7 @@ main() {
|
|||
clear
|
||||
printf "\n${BRED}%s " "WARNING : Your android version is too old (< 8.0)."
|
||||
printf "%s${NC}\n\n" "Uninstalled packages can't be restored."
|
||||
printf "%s" "The script will force-disable the apps instead of uninstalling them "
|
||||
printf "%s" "The script will force-disable the apps instead of uninstalling them"
|
||||
printf "%s\n\n" "so that you can restore them if needed"
|
||||
printf "%s " "If you still want to force-uninstall the apps, type '1' ('0' otherwise):"
|
||||
|
||||
|
@ -86,6 +81,7 @@ main() {
|
|||
fi
|
||||
|
||||
while true; do
|
||||
|
||||
adb shell 'pm list packages -s' | sed 's/package://g' > remaining_packages.txt &
|
||||
|
||||
clear -x
|
||||
|
@ -114,47 +110,32 @@ main() {
|
|||
elif [[ $REPLY = 2 || $REPLY = 3 || $REPLY = 4 || $REPLY = 5 ]]; then
|
||||
clear -x
|
||||
|
||||
(( !BRAND_SUPPORTED )) && printf "\n${BRED}%s${NC}\n" "No $BRAND debloat list found. Feel free to contribute ! :)"
|
||||
(( !BRAND_SUPPORTED )) && printf "\n${BRED}%s\n" "No $BRAND debloat list found. Feel free to contribute ! :)"
|
||||
|
||||
case $REPLY in
|
||||
2) { title="RESTORE"; RESTORE=1; ROOT=0; };;
|
||||
3) { title="DEBLOAT"; RESTORE=0; ROOT=0; };;
|
||||
4) { title="RESTORE"; RESTORE=1; ROOT=1; };;
|
||||
5) { title="DEBLOAT"; RESTORE=0; ROOT=1; };;
|
||||
2) { title="RESTORE"; RESTORE=1; };;
|
||||
3) { title="DEBLOAT"; RESTORE=0; };;
|
||||
4) { title="RESTORE"; RESTORE=1; ROOT=1;};;
|
||||
5) { title="DEBLOAT"; RESTORE=0; ROOT=1;};;
|
||||
esac
|
||||
|
||||
if (( ROOT && NEWER_THAN_ANDROID_9 )); then
|
||||
magisk_module
|
||||
continue
|
||||
fi
|
||||
|
||||
if (( ROOT )); then
|
||||
printf "\n%s\n" "The script will physically $title the apks from your phone"
|
||||
printf "%s${BBLUE}%s${NC}%s\n" "Do you prefer to use a " "Magisk " "module for a systemless $title instead? [y/n]"
|
||||
read -r
|
||||
if [[ $REPLY =~ [Yy] ]]; then
|
||||
magisk_module
|
||||
continue
|
||||
fi
|
||||
fi
|
||||
|
||||
((!ROOT)) && printf "\n${BORANGE}%s\n" "=================== $title ==================="
|
||||
(( ROOT )) && printf "\n${BORANGE}%s\n" "================ $title (ROOT) ==============="
|
||||
printf "%s\n" "# #"
|
||||
printf "%-12s${NC}%s${BORANGE}%14s\n" "#" "1 - $title a package" "#" | awk '{print tolower($0)}'
|
||||
(( BRAND_SUPPORTED )) && printf "#${NC}%7s 2 - ${BRAND} %$((25-${#BRAND}))s ${BORANGE} #\n"
|
||||
(( BRAND_SUPPORTED )) && printf "#${NC}%8s 2 - ${BRAND} %$((25-${#BRAND}))s ${BORANGE} #\n"
|
||||
printf "%-12s${NC}%s${BORANGE}%27s\n" "#" "3 - GFAM" "#"
|
||||
printf "%-12s${NC}%s${BORANGE}%23s\n" "#" "4 - Carriers" "#"
|
||||
printf "%-12s${NC}%s${BORANGE}%25s\n" "#" "5 - Others" "#"
|
||||
printf "%-12s${NC}%s${BORANGE}%27s\n" "#" "6 - AOSP" "#"
|
||||
printf "%-12s${NC}%s${BORANGE}%18s\n" "#" "7 - External list" "#"
|
||||
(( ROOT && !RESTORE )) && printf "#${NC}%7s 8 - Create a flashable zip${BORANGE}%7s #\n"
|
||||
printf "%s\n" "# #"
|
||||
printf "%s\n" "# #"
|
||||
printf "%-12s${NC}%s${BORANGE}%15s\n" "#" "0 - Pending list /!\\" "#"
|
||||
printf "%s\n" "# #"
|
||||
printf "%s\n${NC}\n" "================================================="
|
||||
|
||||
read -r -p "Your selection (e.g: 2 3 4 5): "
|
||||
read -r -p "Your selection (e.g: 2 3 4 5): "
|
||||
|
||||
if [[ "$REPLY" =~ 7 ]]; then import_external_list && debloat_or_restore EXTERNAL_LIST; fi
|
||||
if [[ "$REPLY" =~ 4 ]]; then lists_selection us_carriers french_carriers german_carriers; fi
|
||||
|
@ -166,6 +147,7 @@ main() {
|
|||
if [[ "$REPLY" =~ 8 ]]; then create_flashable_zip; fi
|
||||
if [[ "$REPLY" =~ 0 ]]; then debloat_or_restore pending; fi
|
||||
|
||||
|
||||
elif [[ "$REPLY" =~ [Xx] ]]; then adb reboot && exit 0;
|
||||
|
||||
fi
|
||||
|
@ -183,17 +165,13 @@ import_external_list() {
|
|||
done
|
||||
|
||||
for i in "${EXTERNAL_LIST[@]}"; do
|
||||
if [[ $ROOT -eq 1 && $RESTORE -eq 0 && $i =~ ^/.*\.apk$ ]]; then
|
||||
if [[ ROOT -eq 1 && $i =~ ^/.*\.apk$ ]]; then
|
||||
printf "\n${BRED}%s${NC}\n\n" "Please use a package list, not an APK list"
|
||||
exit 1
|
||||
elif [[ $ROOT -eq 0 && ! $i =~ ^[a-z][a-zA-Z0-9_]*(\.[a-zA-Z0-9_]+)+[0-9a-zA-Z_]$ ]]; then
|
||||
elif [[ ROOT -eq 0 && ! $i =~ ^[a-z][a-zA-Z0-9_]*(\.[a-zA-Z0-9_]+)+[0-9a-zA-Z_]$ ]]; then
|
||||
printf "\n${BRED}%s${NC}%s${BRED}%s${NC}%s\n\n" "$i" " is not a package (format is" " com.android.bips" ")"
|
||||
exit 1
|
||||
elif [[ $ROOT -eq 1 && $RESTORE -eq 1 && ! $i =~ ^/.*\.apk$ ]]; then
|
||||
printf "\n${BRED}%s${NC}\n\n" "Please use an APK list"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
done
|
||||
}
|
||||
|
||||
|
@ -203,12 +181,11 @@ associate_path_with_package() {
|
|||
readarray -t PACKAGES < <(adb shell 'pm list packages -s -u -f' | sed -r 's/package://g' | sort -i)
|
||||
|
||||
for i in "${PACKAGES[@]}"; do
|
||||
ASSOCIATE["${i##*=}"]="${i%=*}"
|
||||
ASSOCIATE["${i##*=}"]="${i%%=*}"
|
||||
done
|
||||
}
|
||||
|
||||
generate_custom_list() {
|
||||
clear -x
|
||||
local -n list="$1"
|
||||
[[ $# -eq 2 ]] && local user_id="$2"
|
||||
CUSTOM_LIST=()
|
||||
|
@ -221,35 +198,21 @@ generate_custom_list() {
|
|||
readarray -t TEMP < <(comm -12 <(for p in "${list[@]}"; do echo "${p}"; done|sort -i) \
|
||||
<(for p in "${!PACKAGE_AND_PATH[@]}"; do echo "$p"; done|sort -i))
|
||||
|
||||
[[ RESTORE -ne 1 ]] && printf "\n${BGREEN}%s${NC}\n\n" "Clearing app data..."
|
||||
|
||||
for p in "${TEMP[@]}"; do
|
||||
|
||||
[[ RESTORE -ne 1 ]] && printf "${BBLUE}%s${NC}" "$p --> " && adb shell "pm clear $p"
|
||||
|
||||
CUSTOM_LIST+=("${PACKAGE_AND_PATH[$p]}")
|
||||
done
|
||||
|
||||
if [[ $RESTORE -eq 1 ]]; then
|
||||
|
||||
if [[ ${#CUSTOM_LIST[@]} -eq 0 ]]; then
|
||||
readarray -t CUSTOM_LIST <(sort -i deleted_apks.txt)
|
||||
else
|
||||
readarray -t CUSTOM_LIST < <(comm -12 <(for p in "${CUSTOM_LIST[@]}"; do echo "${p}"; done|sort -i) \
|
||||
<(sort -i deleted_apks.txt))
|
||||
fi
|
||||
fi
|
||||
|
||||
[[ RESTORE -eq 1 ]] && readarray -t CUSTOM_LIST < <(comm -12 <(for p in "${CUSTOM_LIST[@]}"; do echo "${p}"; done|sort -i) \
|
||||
<(sort -i deleted_apks.txt))
|
||||
else
|
||||
if (( RESTORE )); then
|
||||
readarray -t CUSTOM_LIST < <(comm -12 <(for p in "${list[@]}"; do echo "${p}"; done|sort -i) \
|
||||
<(adb shell "pm list packages -s -u $user_id" | sed 's/package://g' | sort -i))
|
||||
<(adb shell "pm list packages -s -u $user_id" | sed -r 's/package://g' | sort -i))
|
||||
else
|
||||
readarray -t CUSTOM_LIST < <(comm -12 <(for p in "${list[@]}"; do echo "${p}"; done|sort -i) \
|
||||
<(adb shell "pm list packages -s $user_id" | sed 's/package://g' | sort -i))
|
||||
fi
|
||||
fi
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
|
@ -258,18 +221,13 @@ debloat_or_restore() {
|
|||
local output=""
|
||||
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
|
||||
if (( OLDER_THAN_ANDROID_8 )); then
|
||||
|
||||
if (( RESTORE )); then
|
||||
action='pm enable $package'
|
||||
|
||||
elif (( !FORCE_UNINSTALL )); then
|
||||
action='am force-stop $package && pm disable-user $package && pm clear $package'
|
||||
fi
|
||||
(( RESTORE )) && action='pm enable $package' || action='am force-stop $package && pm disable-user $package && pm clear $package'
|
||||
fi
|
||||
|
||||
(( RESTORE && FORCE_UNINSTALL == 1 )) && action='cmd package install-existing $package' || action='pm uninstall $user $package'
|
||||
|
||||
# parse user list on the phone
|
||||
readarray -t USERS < <(adb shell pm list users | grep -o "{[0-9]*" | grep -o "[0-9]*")
|
||||
|
||||
|
@ -280,46 +238,47 @@ debloat_or_restore() {
|
|||
printf "\n${BORANGE}%s${NC}\n" "==== $list debloat list ===="
|
||||
|
||||
if (( ROOT )); then
|
||||
touch -a deleted_apks.txt
|
||||
generate_custom_list "$list"
|
||||
if (( RESTORE )); then restore_apks "$list"; else root_debloat "$list"; fi
|
||||
return
|
||||
fi
|
||||
|
||||
for u_num in "${USERS[@]}"; do
|
||||
local user=$( ((OLDER_THAN_ANDROID_5)) && echo "" || echo "--user $u_num" )
|
||||
for u in "${USERS[@]}"; do
|
||||
local user=$( ((OLDER_THAN_ANDROID_5)) && echo "" || echo "--user $u" )
|
||||
generate_custom_list "$list" "$user"
|
||||
|
||||
if [[ ${#CUSTOM_LIST[@]} -eq 0 ]]; then
|
||||
printf "${BBLUE}%s${NC}%s" "[user $u_num]" " Nothing to $title :)" && sleep 1 && continue
|
||||
printf "${BBLUE}%s${NC}%s" "[user $u]" " Nothing to $title :)" && sleep 1 && continue
|
||||
fi
|
||||
|
||||
for package in "${CUSTOM_LIST[@]}"; do
|
||||
do_package_action_and_log
|
||||
do_package_action_and_log "$package" "$action" "$u"
|
||||
done
|
||||
done
|
||||
sleep 1
|
||||
|
||||
else
|
||||
if (( ROOT )); then
|
||||
touch -a deleted_apks.txt
|
||||
if (( RESTORE )); then restore_apks; else root_debloat; fi
|
||||
return
|
||||
fi
|
||||
|
||||
printf "\n${BRED}%s${NC}" "Package name to $title: "
|
||||
read -r package
|
||||
for u_num in "${USERS[@]}"; do
|
||||
local user=$( ((OLDER_THAN_ANDROID_5)) && echo "" || echo "--user $u_num" )
|
||||
do_package_action_and_log
|
||||
for u in "${USERS[@]}"; do
|
||||
local user=$( ((OLDER_THAN_ANDROID_5)) && echo "" || echo "--user $u" )
|
||||
do_package_action_and_log "$package" "$action" "$u"
|
||||
done
|
||||
sleep 1
|
||||
fi
|
||||
}
|
||||
|
||||
do_package_action_and_log() {
|
||||
printf "${BBLUE}%s${BRED}%s${NC}%s" "[user $u_num] " "$package --> "
|
||||
output="$(eval adb shell "\"$action\"")" && echo "$output"
|
||||
local package="$1"
|
||||
local action="$2"
|
||||
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 [[ $RESTORE -eq 0 ]]; then
|
||||
|
@ -335,12 +294,9 @@ backup_apks() {
|
|||
local -n apks="$1"
|
||||
mkdir -p apks_backup
|
||||
for apk in "${apks[@]}"; do
|
||||
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
|
||||
adb pull "$apk" apks_backup/
|
||||
done
|
||||
printf "\n${BGREEN}%s${NC}\n\n" "Backup done!"
|
||||
printf "\n${BRED}%s${NC}\n\n" "Backup done!"
|
||||
}
|
||||
|
||||
create_flashable_zip() {
|
||||
|
@ -356,30 +312,20 @@ create_flashable_zip() {
|
|||
printf "\n${BRED}%s${NC} " "Your choice (e.g 1 2 3) :"
|
||||
read -r -a selection
|
||||
|
||||
for i in "${selection[@]}"; do
|
||||
if [[ "${LISTS[$i]}" == EXTERNAL_LIST ]]; then
|
||||
import_external_list
|
||||
fi
|
||||
done
|
||||
|
||||
mkdir -p META-INF/com/google/android/
|
||||
echo "#!/sbin/sh" > "$UPDATE_BINARY"
|
||||
|
||||
echo "echo 'ui_print --- Universal Android Debloater ---' > /proc/self/fd/\$2" >> "$UPDATE_BINARY"
|
||||
echo "mount $SYSTEM_MOUNT_POINT" >> "$UPDATE_BINARY"
|
||||
echo "mount /system" >> "$UPDATE_BINARY"
|
||||
|
||||
declare -i is_empty=1
|
||||
|
||||
for list in "${selection[@]}"; do
|
||||
if (( list > ${#LISTS[@]} )) || (( list < 1 )); then continue; fi
|
||||
|
||||
generate_custom_list "${LISTS[$list]}"
|
||||
backup_apks CUSTOM_LIST
|
||||
|
||||
for package in "${CUSTOM_LIST[@]}"; do
|
||||
echo "rm -rf $package" >> "$UPDATE_BINARY"
|
||||
done
|
||||
|
||||
[[ $is_empty -eq 1 && ${#CUSTOM_LIST[@]} -gt 0 ]] && is_empty=0
|
||||
done
|
||||
|
||||
|
@ -387,10 +333,11 @@ create_flashable_zip() {
|
|||
printf "\n${BRED}%s${NC}\n" "Nothing to debloat!"
|
||||
rm -rf META-INF/
|
||||
else
|
||||
echo "umount $SYSTEM_MOUNT_POINT" >> "$UPDATE_BINARY"
|
||||
echo "umount /system" >> "$UPDATE_BINARY"
|
||||
echo "echo 'ui_print ----- ALL DONE -----' > /proc/self/fd/\$2" >> "$UPDATE_BINARY"
|
||||
zip -rm flashable_zip_UAD_${VERSION%%[[:space:]]*}.zip META-INF/ 1>/dev/null
|
||||
printf "\n${BGREEN}%s${NC}%s\n" "flashable_zip_UAD_$VERSION.zip" " has been generated."
|
||||
zip -rm flashable_zip_UAD_v2.8.zip META-INF/ 1>/dev/null
|
||||
printf "\n${BRED}%s${NC}%s\n" "flashable_zip_UAD_v2.8.zip" " has been generated."
|
||||
|
||||
fi
|
||||
|
||||
sleep 2
|
||||
|
@ -401,7 +348,7 @@ restore_apks() {
|
|||
|
||||
if [[ $# -eq 1 ]]; then
|
||||
|
||||
[[ ${#CUSTOM_LIST[@]} -eq 0 ]] && echo "Nothing to restore" && sleep 1 && return
|
||||
[[ ${#CUSTOM_LIST[@]} -eq 0 ]] && echo "Nothing to restore" && sleep 1 && return 0
|
||||
|
||||
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"
|
||||
|
@ -416,12 +363,8 @@ restore_apks() {
|
|||
CUSTOM_LIST=("$path")
|
||||
fi
|
||||
|
||||
if [[ $NEWER_THAN_ANDROID_9 -eq 1 ]]; then
|
||||
magisk_module
|
||||
return
|
||||
fi
|
||||
adb shell "su -c 'mount -o rw,remount /system'"
|
||||
|
||||
adb shell "su -c \"mount -o rw,remount $SYSTEM_MOUNT_POINT\""
|
||||
|
||||
for p in "${CUSTOM_LIST[@]}"; do # $p = path/to/app.apk
|
||||
local apk=$(echo "$p" | sed -r 's/.*\///g') # app.apk
|
||||
|
@ -431,19 +374,18 @@ restore_apks() {
|
|||
fi
|
||||
done
|
||||
|
||||
adb shell "su -c \"mount -f -o ro,remount $SYSTEM_MOUNT_POINT\""
|
||||
adb shell "su -c 'mount -o ro,remount /system'"
|
||||
printf "\n${BRED}%s${NC}%s\n" "Reboot your phone and Android will reinstall the app(s)"
|
||||
printf "\n\e[5m%s\033[0m" "Press any key to continue"
|
||||
read -n 1 -r -s
|
||||
}
|
||||
|
||||
root_debloat() {
|
||||
local method=""
|
||||
|
||||
if [[ $# -eq 1 ]]; then
|
||||
|
||||
[[ ${#CUSTOM_LIST[@]} -eq 0 ]] && echo "Nothing to debloat :)" && sleep 1 && return 0
|
||||
|
||||
backup_apks CUSTOM_LIST
|
||||
else
|
||||
printf "\n${BRED}%s${NC}" "Android Path of the APK to delete: "
|
||||
read -r path
|
||||
|
@ -453,22 +395,15 @@ root_debloat() {
|
|||
fi
|
||||
CUSTOM_LIST=("$path")
|
||||
fi
|
||||
backup_apks CUSTOM_LIST
|
||||
|
||||
read -r -p "Type YES if you want to physically delete the apk(s): "
|
||||
read -r -p "Type YES if you want to physically delete the apks: "
|
||||
if [[ $REPLY = "YES" ]]; then
|
||||
|
||||
if [[ $NEWER_THAN_ANDROID_9 -eq 1 ]]; then
|
||||
magisk_module 1
|
||||
return
|
||||
fi
|
||||
|
||||
local commandes="mount -o rw,remount $SYSTEM_MOUNT_POINT;"
|
||||
local commandes="mount -o rw,remount /system;"
|
||||
for apk in "${CUSTOM_LIST[@]}"; do
|
||||
grep -qxF "$apk" deleted_apks.txt || echo "$apk" >> "deleted_apks.txt"
|
||||
commandes+="echo \"rm -rf $apk\"; rm -rf \"$apk\";"
|
||||
done
|
||||
commandes+="mount -f -o ro,remount $SYSTEM_MOUNT_POINT"
|
||||
commandes+="mount -o ro,remount /system"
|
||||
printf "\n${BRED}%s${NC}\n\n" "Check your phone: Magisk Manager is probably asking you to grand root permissions for ADB"
|
||||
adb shell "su -c '$commandes'"
|
||||
printf "\n${BRED}%s${NC}\n" "DONE"
|
||||
|
@ -478,111 +413,6 @@ root_debloat() {
|
|||
fi
|
||||
}
|
||||
|
||||
magisk_module() {
|
||||
clear -x
|
||||
declare -a selection=()
|
||||
declare -i is_empty=1
|
||||
|
||||
echo
|
||||
if (( !RESTORE )); then
|
||||
for i in "${!LISTS[@]}"; do
|
||||
printf "%-2s%s\n" "$i" " - ${LISTS[$i]}"
|
||||
done
|
||||
|
||||
printf "\n${BRED}%s${NC} " "Your choice (e.g 1 2 3) :"
|
||||
read -r -a selection
|
||||
|
||||
for i in "${selection[@]}"; do
|
||||
if [[ "${LISTS[$i]}" == EXTERNAL_LIST ]]; then
|
||||
import_external_list
|
||||
fi
|
||||
done
|
||||
else
|
||||
printf "%-2s%s\n" "1" " - deleted_apks.txt"
|
||||
printf "%-2s%s\n" "2" " - EXTERNAL_LIST"
|
||||
|
||||
printf "\n${BRED}%s${NC} " "Your choice :"
|
||||
read -r
|
||||
selection=(1)
|
||||
case $REPLY in
|
||||
1) readarray -t CUSTOM_LIST < deleted_apks.txt ;;
|
||||
2) { import_external_list && CUSTOM_LIST=("${EXTERNAL_LIST[@]}"); } ;;
|
||||
*) exit 1 ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
touch -a deleted_apks.txt
|
||||
rm -r MAGISK_MODULE || true
|
||||
mkdir MAGISK_MODULE
|
||||
cd "$_"
|
||||
local -r MODULE_DIR=$(pwd)
|
||||
|
||||
cat << EOF > module.prop
|
||||
id=universal-android-debloater
|
||||
name=Universal Android Debloater Magisk Flashable zip
|
||||
version=1.0
|
||||
versionCode=1000
|
||||
author=w1nst0n
|
||||
description=custom root debloat script
|
||||
EOF
|
||||
|
||||
mkdir -p META-INF/com/google/android/ && cd "$_"
|
||||
wget -q https://raw.githubusercontent.com/topjohnwu/Magisk/master/scripts/module_installer.sh
|
||||
mv module_installer.sh update-binary
|
||||
echo "#MAGISK" > updater-script
|
||||
|
||||
cd "$MODULE_DIR"
|
||||
[[ RESTORE -eq 0 ]] && echo "REPLACE=\"" > customize.sh
|
||||
|
||||
for list in "${selection[@]}"; do
|
||||
|
||||
if (( list > ${#LISTS[@]} )) || (( list < 1 )); then continue; fi
|
||||
|
||||
cd ..
|
||||
if (( !RESTORE )); then
|
||||
generate_custom_list "${LISTS[$list]}"
|
||||
backup_apks CUSTOM_LIST
|
||||
fi
|
||||
|
||||
cd "$MODULE_DIR"
|
||||
for apk in "${CUSTOM_LIST[@]}"; do
|
||||
if (( RESTORE )); then
|
||||
local dir="$(dirname "${apk:1}")"
|
||||
mkdir -p "$dir"
|
||||
cp "../apks_backup/$(echo "$apk" | sed -r 's/.*\///g')" "${apk:1}"
|
||||
grep -Fqv "$apk" ../deleted_apks.txt > temp.tmp || touch temp.tmp; mv temp.tmp ../deleted_apks.txt
|
||||
else
|
||||
grep -qxF "$(dirname "$apk")" customize.sh || dirname "$apk" >> customize.sh
|
||||
grep -qxF "$apk" ../deleted_apks.txt || echo "$apk" >> ../deleted_apks.txt
|
||||
fi
|
||||
|
||||
done
|
||||
|
||||
[[ $is_empty -eq 1 && ${#CUSTOM_LIST[@]} -gt 0 ]] && is_empty=0
|
||||
done
|
||||
|
||||
if [[ RESTORE -eq 0 && $is_empty -eq 1 ]]; then
|
||||
printf "\n${BRED}%s${NC}\n" "Nothing to debloat!"
|
||||
cd .. && rm -rf MAGISK_MODULE
|
||||
return 0
|
||||
fi
|
||||
|
||||
[[ RESTORE -ne 1 ]] && echo "\"" >> customize.sh
|
||||
zip -FSrm ../uad_magisk_"${VERSION%%[[:space:]]*}_$title".zip ./* 1>/dev/null || true
|
||||
cd .. && rm -rf MAGISK_MODULE
|
||||
|
||||
printf "\n${BGREEN}%s${NC}%s\n" "uad_magisk_${VERSION%%[[:space:]]*}.zip" " has been generated."
|
||||
printf "\n%s${BBLUE}%s${NC}%s${BBLUE}%s${NC}%s\n" "Flash this file from " "Magisk Manager " "or " "TWRP " "and reboot your phone."
|
||||
printf "\n%s${BBLUE}%s${NC}%s\n" "Removing the module from " "Magisk Manager " "will restore the apks."
|
||||
|
||||
if [[ $BRAND == "samsung" ]]; then
|
||||
printf "\n${BRED}%s${NC}\n\n" "/!\ TWRP doesn't support Samsung encryption. You won't be able to flash this Magisk module from TWRP /!\\"
|
||||
fi
|
||||
|
||||
printf "\e[5m%s\033[0m" "Press any key to continue"
|
||||
read -n 1 -r -s
|
||||
}
|
||||
|
||||
lists_selection() {
|
||||
clear -x
|
||||
declare -a selection=()
|
||||
|
@ -591,7 +421,7 @@ lists_selection() {
|
|||
printf "%-2s%s\n" "$i" " - ${!i}"
|
||||
done
|
||||
|
||||
printf "\n${BRED}%s${NC} " "Your choice (e.g 1 2 3) :"
|
||||
printf "\n${BRED}%s${NC} " "Your choice (e.g 1 2 3) :"
|
||||
read -r -a selection
|
||||
for list in "${selection[@]}"; do
|
||||
if (( list > $# )) || (( list < 1 )); then continue; fi
|
||||
|
@ -602,18 +432,11 @@ lists_selection() {
|
|||
list_installed_packages() {
|
||||
clear -x
|
||||
|
||||
declare -a packages=()
|
||||
|
||||
printf "\n${BRED}%s${NC}" "Search for packages (regex accepted): "
|
||||
read -r
|
||||
|
||||
echo
|
||||
|
||||
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
|
||||
adb shell "pm list packages | grep -i $REPLY" | sed 's/package://g' | sort || true
|
||||
|
||||
printf "\n\e[5m%s\033[0m" "Press any key to continue"
|
||||
read -n 1 -r -s
|
||||
|
@ -658,9 +481,9 @@ get_brand() {
|
|||
local brand
|
||||
brand=$(adb shell getprop ro.product.brand | tr -d '\r' | awk '{print tolower($0)}')
|
||||
|
||||
# Support for sub-brands
|
||||
# Support for alternative name
|
||||
case "$brand" in
|
||||
"redmi"|"poco") echo "xiaomi" ;;
|
||||
"redmi") echo "xiaomi" ;;
|
||||
*) echo "$brand"
|
||||
esac
|
||||
}
|
||||
|
@ -668,7 +491,6 @@ get_brand() {
|
|||
uad_recovery_mode() {
|
||||
ROOT=1
|
||||
while true; do
|
||||
clear -x
|
||||
printf "\n${BBLUE}%s\n" "========== MAIN MENU (RECOVERY MODE) =========="
|
||||
printf "%s\n" "# #"
|
||||
printf "%-12s${NC}%s${BBLUE}%12s\n" "#" "1 - Restore APKs (Root)" "#"
|
||||
|
@ -692,7 +514,7 @@ uad_recovery_mode() {
|
|||
printf "%s\n" "# #"
|
||||
printf "%-12s${NC}%s${BBLUE}%17s\n" "#" "1 - $title an APK" "#" | awk '{print tolower($0)}'
|
||||
printf "%-12s${NC}%s${BBLUE}%18s\n" "#" "2 - External list" "#"
|
||||
((RESTORE)) && printf "#${NC}%7s 3 - deleted_apks.txt ${BBLUE}%13s#\n"
|
||||
((RESTORE)) && printf "#${NC}%9s 3 - deleted_apks.txt ${BBLUE}%11s#\n"
|
||||
printf "%s\n" "# #"
|
||||
printf "%s\n${NC}" "================================================="
|
||||
|
||||
|
@ -700,14 +522,13 @@ uad_recovery_mode() {
|
|||
|
||||
if [[ $REPLY = 1 ]]; then
|
||||
|
||||
while true; do
|
||||
printf "\n${BRED}%s${NC}" "Android path of the APK to $title: "
|
||||
read -r path
|
||||
|
||||
[[ $path =~ ^/.*\.apk$ ]] && break
|
||||
printf "\n${BRED}%s${NC}" "Android path of the APK to $title: "
|
||||
read -r path
|
||||
|
||||
if [[ ! $path =~ ^/.*\.apk$ ]]; then
|
||||
printf "\n${BRED}%s${NC}%s${BRED}%s${NC}%s\n" "$path" " doesn't look like a valid APK path"
|
||||
done
|
||||
sleep 3 && return 0
|
||||
fi
|
||||
CUSTOM_LIST=("$path")
|
||||
fi
|
||||
|
||||
|
@ -719,19 +540,6 @@ uad_recovery_mode() {
|
|||
printf "\n%s${BRED}%s${NC}%s\n\n" "Your apks has been backed-up in" " apks_backup/" " (in case you messed up)"
|
||||
fi
|
||||
|
||||
[[ $NEWER_THAN_ANDROID_9 -eq 1 ]] && magisk_module && continue
|
||||
|
||||
printf "\n%s\n" "The script will physically $title the apks from your phone."
|
||||
printf "%s${BBLUE}%s${NC}%s\n" "Do you prefer to use a " "Magisk " "module for a systemless $title instead? [y/n]"
|
||||
read -r
|
||||
|
||||
if [[ $REPLY =~ [Yy] ]]; then
|
||||
magisk_module
|
||||
continue
|
||||
fi
|
||||
|
||||
adb shell mount system || exit 1
|
||||
|
||||
for p in "${CUSTOM_LIST[@]}"; do # $p = path/to/app.apk
|
||||
local apk=$(echo "$p" | sed -r 's/.*\///g') # app.apk
|
||||
local dir=$(dirname "$p") # path/to
|
||||
|
|
|
@ -1,11 +1,10 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
### These packages will be added in the default selection when I will find time to document them.
|
||||
# Uncommented packages should be safe to remove 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
|
||||
# Uncommented packages should be safe to remove but you still need to be **VERY** careful.
|
||||
|
||||
# REMINDER : "Safe" only means "does not cause bootloop".
|
||||
# These packages will most likely break useful features (but you can easily reinstall them with the script)
|
||||
# These packages can definitely break useful features (but you can easily reinstall them with the script)
|
||||
|
||||
declare -a pending=(
|
||||
|
||||
|
@ -14,7 +13,6 @@ declare -a pending=(
|
|||
#"com.android.systemui.navigation.bar.overlay"
|
||||
|
||||
############## AOSP ###############
|
||||
#"com.android.wifi.resources"
|
||||
|
||||
############# GOOGLE ##############
|
||||
|
||||
|
@ -25,9 +23,7 @@ declare -a pending=(
|
|||
"com.qualcomm.qti.performancemode"
|
||||
"com.qualcomm.qti.poweroffalarm"
|
||||
"com.qualcomm.qti.qdma"
|
||||
#"com.qualcomm.qti.gpudrivers.kona.api30"
|
||||
#"com.qualcomm.qti.seccamservice"
|
||||
#"com.qualcomm.qti.services.secureui"
|
||||
#"com.qualcomm.qti.services.systemhelper"
|
||||
#"com.qualcomm.qti.simcontacts"
|
||||
#"com.qualcomm.qti.uceShimService"
|
||||
|
@ -54,28 +50,6 @@ declare -a pending=(
|
|||
"com.vendor.frameworkresoverlay"
|
||||
|
||||
############# SAMSUNG #############
|
||||
#"com.samsung.android.cmfa.framework"
|
||||
#"com.samsung.android.incall.contentprovider"
|
||||
"com.samsung.android.service.tagservice"
|
||||
"com.samsung.android.camerasdkservice"
|
||||
"com.samsung.android.cameraxservice" # CBattery drain related on S10
|
||||
"com.samsung.android.coldwalletservice"
|
||||
"com.samsung.android.digitalkey"
|
||||
"com.samsung.android.forest"
|
||||
"com.samsung.android.kgclient" # Samsung Pay One Ui 3.0 ?
|
||||
"com.samsung.android.providers.carrier"
|
||||
#"com.samsung.android.wifi.resources"
|
||||
"com.samsung.android.wifi.softap.resources"
|
||||
"com.sec.android.Cdfs"
|
||||
"com.sec.android.smartfpsadjuster"
|
||||
"com.sec.location.nfwlocationprivacy"
|
||||
"com.samsung.gamedriver.sm8250"
|
||||
"com.samsung.gpuwatchapp" # Gpu viewer ?
|
||||
"com.samsung.huxplatform"
|
||||
"com.samsung.qosindicator"
|
||||
"com.samsung.sait.sohservice"
|
||||
"com.samsung.vklayer.sm8250"
|
||||
|
||||
|
||||
############### SONY ##############
|
||||
"com.sonymobile.devicesecurity.service"
|
||||
|
|
|
@ -66,6 +66,13 @@ declare -a aosp=(
|
|||
# Lets Google partners (OEM in most of the case) to customize the default email settings.
|
||||
# The manufacturer often change the default signature displayed the end of each of your mail (e.g "Sent from my Nokia phone")
|
||||
|
||||
"com.android.printservice.recommendation"
|
||||
# Keep it, if you need to print directly via your phone.
|
||||
|
||||
"com.android.printspooler"
|
||||
# Print spooler. Manage the printing process.
|
||||
# Safe to remove if you don't plan to print from your phone
|
||||
|
||||
"com.android.providers.partnerbookmarks"
|
||||
# Provides bookmarks about partners of Google in Chrome.
|
||||
|
||||
|
@ -106,7 +113,6 @@ declare -a aosp=(
|
|||
"com.android.wallpaper.livepicker"
|
||||
"com.android.wallpaper.livepicker.overlay"
|
||||
# Enables you to pick a live wallpaper.
|
||||
# Will break some weather applications (especially ones with widgets) and wallpaper applications like Muzei.
|
||||
|
||||
"com.android.wallpapercropper"
|
||||
# Wallpaper cropper.
|
||||
|
@ -121,11 +127,6 @@ declare -a aosp=(
|
|||
# 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
|
||||
|
||||
"android.auto_generated_rro__"
|
||||
# rro = Runtime Resources Overlay.
|
||||
# Changes values of a package config, based in the overlay definitions (heavily used by OEM for custom themming android)
|
||||
# Link: https://source.android.com/devices/architecture/rros and https://code.tutsplus.com/tutorials/quick-tip-theme-android-with-the-runtime-resource-overlay-framework--cms-29708
|
||||
|
||||
"com.android.apps.tag"
|
||||
# Support for NFC tags interactions (5 permissions : Contacts/Phone On by default).
|
||||
# NFC Tags are for instance used in bus to let you validate your transport card with your phone
|
||||
|
@ -290,15 +291,6 @@ declare -a aosp=(
|
|||
# AOSP Call recorder function. Most of the time OEM use their own code for this.
|
||||
# NOTE: On some phones, Huawei & Xiaomi also use this package name for their own closed-source recorder app.
|
||||
|
||||
#"com.android.printservice.recommendation"
|
||||
# Used to discover and interact one or more printers via one or more protocols.
|
||||
# You can remove it if you don't need to print directly from your phone.
|
||||
|
||||
#"com.android.printspooler"
|
||||
# Print spooler. Manage the printing process.
|
||||
# Safe to remove if you don't plan to print from your phone
|
||||
# Note: Break connection preferences from the settings app on some phones (Pixel 4a / Android 11)
|
||||
|
||||
#"com.android.providers.blockednumber"
|
||||
# Handles blocked numbers storage
|
||||
# On some devices this packages seems to be tied to recent apps menu (see https://gitlab.com/W1nst0n/universal-android-debloater/-/issues/6)
|
||||
|
@ -330,10 +322,9 @@ declare -a aosp=(
|
|||
#
|
||||
# FYI : The Open Mobile Alliance (OPA) is a standards organization which develops open standards for the mobile phone industry.
|
||||
|
||||
#"com.android.settings.intelligence"
|
||||
# Setting search feature
|
||||
# Note: Settings app may crash when searching for a setting if you removed this package (it depends on the phone)
|
||||
# See https://gitlab.com/W1nst0n/universal-android-debloater/-/issues/51
|
||||
#"com.android.settings.intelligence" # [MORE INFO NEEDED]
|
||||
# Settings tips in Settings menu ?
|
||||
# I don't have this in my phone. It for Android Pie. Can someone check ?
|
||||
|
||||
#"com.android.sharedstoragebackup"
|
||||
# Used during backup. Fetch shared storage (files accessible by every apps with STORAGE permission)
|
||||
|
|
|
@ -6,20 +6,10 @@ declare -a asus=(
|
|||
# Asus calculator app
|
||||
# NOTE : Simple calculator is a good alternative : https://f-droid.org/en/packages/com.simplemobiletools.calculator/
|
||||
|
||||
"com.asus.easylauncher"
|
||||
# Asus Easy Mode (https://play.google.com/store/apps/details?id=com.asus.easylauncher)
|
||||
# Alternative launcher with bigger icons and simpler interface
|
||||
|
||||
"com.asus.ia.asusapp"
|
||||
# My Asus (https://play.google.com/store/apps/details?id=com.asus.ia.asusapp)
|
||||
# Asus service center (support + store)
|
||||
|
||||
"com.asus.soundrecorder"
|
||||
# Asus Sound recorder (https://play.google.com/store/apps/details?id=com.asus.soundrecorder)
|
||||
|
||||
"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,10 +128,9 @@ declare -a us_carriers=(
|
|||
"com.verizon.messaging.vzmsgs"
|
||||
# Verizon Messages (https://play.google.com/store/apps/details?id=com.verizon.messaging.vzmsgs)
|
||||
|
||||
# "com.verizon.mips.services"
|
||||
"com.verizon.mips.services"
|
||||
# My Verizon Services
|
||||
# Related to My Verizon app.
|
||||
# Tested to be required for hotspot.
|
||||
|
||||
"com.verizon.obdm" # [MORE INFO NEEDED]
|
||||
"com.verizon.obdm_permissions"
|
||||
|
@ -403,10 +402,6 @@ declare -a us_carriers=(
|
|||
# Spam call blocking app provided by Hiya
|
||||
# NOTE : You should never trust spam blocking apps (https://itmunch.com/robocall-caught-sending-customers-confidential-data-without-consent/)
|
||||
|
||||
"com.att.csoiam.mobilekey"
|
||||
# AT&T Sign in Helper (https://play.google.com/store/apps/details?id=com.att.csoiam.mobilekey)
|
||||
# Allows AT&T applications to securely authenticate on Android devices
|
||||
|
||||
"com.att.dh"
|
||||
# Device Help (https://play.google.com/store/apps/details?id=com.att.dh)
|
||||
# Troubleshooting app.
|
||||
|
@ -438,12 +433,6 @@ declare -a us_carriers=(
|
|||
# AT&T Visual Voicemail (https://play.google.com/store/apps/details?id=com.att.mobile.android.vvm)
|
||||
# Lets you manage your voicemail directly from the app without the need to dial into your mailbox.
|
||||
|
||||
"com.att.personalcloud"
|
||||
# AT&T Personal Cloud (https://play.google.com/store/apps/details?id=com.att.personalcloud)
|
||||
# Note: it's a paid extra feature and data are obviously not E2EE (i.e AT&T can access them)
|
||||
# Don't keep this app. It's a privacy nightmare and was poorly coded:
|
||||
# https://beta.pithus.org/report/bc54b5e2446ace90d9f992278d0ec320befe4983a76cb4fdcf47e565366e67b6
|
||||
|
||||
"com.att.tv"
|
||||
# AT&T TV (https://play.google.com/store/apps/details?id=com.att.tv)
|
||||
# Lets you Stream TV live and on demand from your phone.
|
||||
|
@ -492,10 +481,6 @@ declare -a us_carriers=(
|
|||
# Visual Voicemail
|
||||
# Simple GUI for voicemail
|
||||
|
||||
"com.sec.android.app.ewidgetatt"
|
||||
# Entertainment Widget
|
||||
# AT&T Widget for OneUI
|
||||
|
||||
"com.synchronoss.dcs.att.r2g"
|
||||
# Setup & Transfer
|
||||
# App for transferring "contacts, photos, videos, music, call logs, and documents" from another device
|
||||
|
|
|
@ -359,7 +359,6 @@ declare -a google=(
|
|||
# Device Health Services (discontinued ?)
|
||||
# Calculates your remaining battery percentage based on your usage
|
||||
# Reviews for this app were... funny (https://www.reddit.com/r/google/comments/ajnbmh/the_reviews_for_device_health_services_are_quite/)
|
||||
# Note: this app needs com.google.android.gms
|
||||
|
||||
"com.google.android.apps.work.oobconfig" # [MORE INFO NEEDED]
|
||||
# Needs internet to fetchs enterprise and carrier lock config via internet.
|
||||
|
@ -468,12 +467,6 @@ declare -a google=(
|
|||
# Carrier Services (for Google phones) (https://play.google.com/store/apps/details?id=com.google.android.ims)
|
||||
# IMS is an open industry standard for voice and multimedia communications over packet-based IP networks (Volte/VoIP/Wifi calling).
|
||||
|
||||
"com.google.audio.hearing.visualization.accessibility.scribe"
|
||||
# Live Transcribe & Sound Notifications (https://play.google.com/store/apps/details?id=com.google.audio.hearing.visualization.accessibility.scribe)
|
||||
# Provides push notifications for critical sounds around you. This feature can be helpful for people with hearing loss.
|
||||
# https://blog.google/products/android/new-sound-notifications-on-android/
|
||||
# Works offline
|
||||
|
||||
#"com.android.vending"
|
||||
# Google Play Store app.
|
||||
|
||||
|
@ -542,10 +535,3 @@ declare -a google=(
|
|||
# The PermissionController module enables updatable privacy policies and UI elements.
|
||||
# For example, the policies and UI around granting and managing permissions.
|
||||
# https://source.android.com/devices/architecture/modular-system/permissioncontroller
|
||||
|
||||
#"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,9 +135,10 @@ declare -a samsung=(
|
|||
# Samsung's adaptive super AMOLED screen optimizes the color range, saturation, and sharpness of the picture depending on what you're watching or doing.
|
||||
# This package lets you to manually customize the color settings to match your preferences.
|
||||
|
||||
"com.samsung.android.app.dressroom"
|
||||
"com.samsung.android.app.dressroom" # [MORE INFO NEEDED]
|
||||
# Samsung Wallpapers
|
||||
# Wallaper manager from the launcher. You can remove it and still set a wallpaper from the Gallery.
|
||||
# Wallaper manager from the launcher. You can probably remove it and still set a wallpaper from the Gallery.
|
||||
# Can someone check?
|
||||
# Has INTERNET permission and... ACCESS_MEDIA_LOCATION
|
||||
|
||||
"com.samsung.android.app.episodes"
|
||||
|
@ -290,13 +291,6 @@ declare -a samsung=(
|
|||
# Biometric authentication service that can be used to sign in to websites and apps in your mobile.
|
||||
# https://www.samsung.com/global/galaxy/apps/samsung-pass/
|
||||
|
||||
"com.samsung.android.aware.service"
|
||||
# Samsung Quick Share
|
||||
# Use Wifi direct to share files between 2 Samsung Galaxy phones (it's only for Samsung Galaxy users)
|
||||
# Quick Share also lets you temporarily upload files to Samsung Cloud
|
||||
# There are better alternatives (compatible with all Android devices and free and open-source):
|
||||
# For instance: https://f-droid.org/packages/com.genonbeta.TrebleShot/
|
||||
|
||||
"com.samsung.android.bbc.bbcagent" # [MORE INFO NEEDED]
|
||||
# BBCAgent (B. B. Container Agent?)
|
||||
# Collects device information and manages installation/uninstallation of trusted apps in KNOX containers
|
||||
|
@ -315,10 +309,7 @@ declare -a samsung=(
|
|||
# Bixby (Samsung intelligence assistant)
|
||||
# Enable or Disable access to S-Voice or Bixby voice controls.
|
||||
# This does not prevent access to other voice-controlled apps, only the Samsung-provided ones.
|
||||
|
||||
"com.samsung.android.bixby.agent" # Bixby voice
|
||||
# Removing this will disable the bixby hardware key without breaking Bixby itself.
|
||||
|
||||
"com.samsung.android.bixby.agent.dummy" # Bixby Voice Stub
|
||||
"com.samsung.android.bixby.es.globalaction"
|
||||
"com.samsung.android.bixby.plmsync"
|
||||
|
@ -421,10 +412,6 @@ declare -a samsung=(
|
|||
# Game Tuner is advanced setting app. It enables you to change the resolution and frames per second settings
|
||||
# in mobile games that require tuning for different Android devices, and thereby control heat generation and battery drain.
|
||||
|
||||
"com.samsung.android.homemode"
|
||||
# Daily Board (https://play.google.com/store/apps/details?id=com.samsung.android.homemode)
|
||||
# Show a slideshow of your favourite pictures while your device is charging.
|
||||
|
||||
"com.samsung.android.hmt.vrshell"
|
||||
# Gear VR Shell
|
||||
# Gear VR : https://360samsungvr.com/portal/content/about_samsung_vr
|
||||
|
@ -433,11 +420,6 @@ declare -a samsung=(
|
|||
# Gear VR Service
|
||||
# See above.
|
||||
|
||||
"com.samsung.android.icecone"
|
||||
# Keyboard Content Center
|
||||
# Lets you choose media content (e.g. stickers and music) from the Galaxy Keyboard.
|
||||
# This app always runs in background.
|
||||
|
||||
"com.samsung.android.intelligenceservice2"
|
||||
# It seems that this package is a kind of spyware. Very difficult to find information about this.
|
||||
# Some people say it's linked to Carrier IQ (which is a carrier rootkit for the NSA).
|
||||
|
@ -446,18 +428,6 @@ declare -a samsung=(
|
|||
# This package also have very stranges permissions : READ_PLACE / WRITE_PLACE. I couldn't find any explaination on the web.
|
||||
# So either it's a useless samsung package either it's a spyware. I delete it and I didn't notice anything bad.
|
||||
|
||||
"com.samsung.android.ipsgeofence"
|
||||
# IPSGeofence
|
||||
# IPS = Indoor Positioning System.
|
||||
# The concept of Indoor Positioning System designates a network of connected devices within a building making it possible
|
||||
# to trace the position of another device – and therefore potentially of a person – in environments where GPS systems are
|
||||
# not efficient .
|
||||
# Geofencing is a technique which consists in activating preconfigured actions when a device enters a
|
||||
# certain geographical area. For example, a user can use it to automatically turn on Wi-Fi and home lights when their smartphone
|
||||
# is detected nearby.
|
||||
# In short, if enabled, this app will track your location everywhere and all the time!
|
||||
# https://www.comparitech.com/blog/vpn-privacy/what-is-geofencing-privacy/
|
||||
|
||||
"com.samsung.android.keyguardwallpaperupdator"
|
||||
# Lets you customize your Samsung device with different images (provided by Samsung) on the lock screen.
|
||||
|
||||
|
@ -516,22 +486,8 @@ declare -a samsung=(
|
|||
# https://developer.samsung.com/tech-insights/knox/mobile-device-management
|
||||
|
||||
"com.samsung.android.mdx"
|
||||
# Link to Windows Service
|
||||
# Works in conjunction with the Microsoft Your Phone app and activates a connection to your PC on Windows
|
||||
|
||||
"com.samsung.android.mdx.kit"
|
||||
# MDE Service Framework
|
||||
# MDE = Multi Devices Experience (https://www.samsung.com/levant/multi-device-experience/)
|
||||
# Framework for IoT stuff.
|
||||
# Asks for a LOT of dangerous permissions
|
||||
# Interacts with "com.samsung.android.mobileservice" and "com.osp.app.signin"
|
||||
|
||||
"com.samsung.android.mdx.quickboard"
|
||||
# Media & Devices feature
|
||||
# Kind of a hub for managing medias played on smart devices (e.g play music to 2 Bluetooth devices simultaneously with Dual audio)
|
||||
# https://www.samsung.com/latin_en/support/mobile-devices/media-and-device-feature/
|
||||
# Has a lot of permissions and asks for ACESS_COARSE_LOCATION
|
||||
# Removing this package do not prevent you to connect your phones to smart devices.
|
||||
|
||||
"com.samsung.android.mobileservice"
|
||||
# Samsung Experience Service (https://play.google.com/store/apps/details?id=com.samsung.android.mobileservice)
|
||||
|
@ -607,10 +563,6 @@ declare -a samsung=(
|
|||
# ShortcutBNR
|
||||
# Related to smartSwitch Samsung Cloud features
|
||||
|
||||
"com.samsung.android.sdm.config"
|
||||
# Configuration Update for Samsung Deskphone Manager (SDM)
|
||||
# SDM allows a user to synchronize your smartphone with a IP deskphone
|
||||
|
||||
"com.samsung.android.slinkcloud"
|
||||
# Samsung Cloud Gateway
|
||||
# NEEDED FOR Scloud app
|
||||
|
@ -787,13 +739,9 @@ declare -a samsung=(
|
|||
|
||||
"com.samsung.android.weather"
|
||||
# Samsung Weather
|
||||
# Lets you see updates on the weather at all times, specific to your current location.
|
||||
# You can also check the weather in other areas even
|
||||
# Dependency: "com.sec.android.daemonapp"
|
||||
|
||||
"com.samsung.android.wellbeing"
|
||||
"com.samsung.android.forest"
|
||||
# Digital Wellbeing (https://play.google.com/store/apps/details?id=com.google.android.apps.wellbeing)
|
||||
# Digital Welbeing (https://play.google.com/store/apps/details?id=com.google.android.apps.wellbeing)
|
||||
# is a feature which shows apps dashboard through which one can see how much time any application opened and
|
||||
# also swiping to different screens allows you to see breakdowns by day, by hour and by app.
|
||||
|
||||
|
@ -875,23 +823,12 @@ declare -a samsung=(
|
|||
# Knox Analytics Uploader
|
||||
# Sends analytcs to Samsung
|
||||
|
||||
"com.samsung.knox.keychain"
|
||||
# KNOX TIMA Keychain
|
||||
# Used to store secrets in a TrustZone (hardware-based secure world)
|
||||
# It's a great thing but third-party developers have no or very limited direct access to it. So you don't really need this
|
||||
# package if you use the default selection of this script and/or don't use any Samsung app relying on KNOX.
|
||||
# Very interesting write-up: https://medium.com/@nimronagy/arm-trustzone-on-android-975bfe7497d2
|
||||
# FYI: Don't worry, your device password/fingerprint hash is securly stored in Android TEE
|
||||
|
||||
"com.samsung.knox.knoxtrustagent"
|
||||
# Knox Quick Access allows users to access the Knox Workspace container using wearables such as the Galaxy Gear S2.
|
||||
|
||||
"com.samsung.knox.kss" # [MORE INFO NEEDED]
|
||||
# Knox Keyguard. Not much more information
|
||||
|
||||
"com.samsung.android.knox.pushmanager" # [MORE INFO NEEDED]
|
||||
# KnoxPushManager
|
||||
|
||||
"com.samsung.knox.securefolder"
|
||||
# Knox Secure Folder (https://play.google.com/store/apps/details?id=com.samsung.knox.securefolder)
|
||||
# Create a secure space on your device to encrypt and store your private data and apps.
|
||||
|
@ -1076,6 +1013,9 @@ declare -a samsung=(
|
|||
"com.sec.android.app.magnifier"
|
||||
# Lets you use your device as a magnifying glass making it easier to read any small font or expand the details of any object, for example.
|
||||
|
||||
#"com.sec.android.app.myfiles"
|
||||
# Samsung file manager app (https://play.google.com/store/apps/details?id=com.sec.android.app.myfiles)
|
||||
|
||||
"com.sec.android.app.mt"
|
||||
# The Mobile tracker is a security feautre in your device that if someone inserts a new SIM card in your device the device will automatically
|
||||
# sends the SIM contact number to specified recipients to help you locate and recover you device.
|
||||
|
@ -1203,9 +1143,7 @@ declare -a samsung=(
|
|||
# Needed to use Smart Switch. See above.
|
||||
|
||||
"com.sec.android.easyonehand"
|
||||
# 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/
|
||||
# Samsung Easy One Hand mode (replaced by One Hand Operation + : com.samsung.android.sidegesturepad)
|
||||
|
||||
"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.
|
||||
|
@ -1613,9 +1551,6 @@ declare -a samsung=(
|
|||
# Handle Face recognition unlock
|
||||
# https://kp-cdn.samsungknox.com/b60a7f0f59df8f466e8054f783fbbfe2.pdf
|
||||
|
||||
#"com.samsung.android.biometrics"
|
||||
# Provide biometric support
|
||||
|
||||
#"com.samsung.android.biometrics.app.setting"
|
||||
# Biometric settings
|
||||
|
||||
|
@ -1624,7 +1559,6 @@ declare -a samsung=(
|
|||
# You should use it, it's great
|
||||
|
||||
#"com.samsung.android.contacts"
|
||||
#"com.samsung.android.app.contacts"
|
||||
# Samsung contacts app
|
||||
# Safe to debloat if you use another contacts app
|
||||
# NOTE : If you do, you will no longer be able to access Contacts from the Samsung dialer app.
|
||||
|
@ -1681,7 +1615,7 @@ declare -a samsung=(
|
|||
# Seems to check if a trusted application needs an update and download it.
|
||||
# This package probably do more than that. There is a LOT of lines of code (obfuscated obviously)
|
||||
# It was used to push an update to fix a security issue with the fingerprint sensor in 2019.
|
||||
# https://libredd.it/r/galaxys10/comments/bcy93f/adb_how_to_get_the_fingerprint_update_pushed_to/
|
||||
# https://old.reddit.com/r/galaxys10/comments/bcy93f/adb_how_to_get_the_fingerprint_update_pushed_to/
|
||||
# Seems to be only used for biometrics stuff
|
||||
# There is Samsung analytics inside. You may want to remove it if you don't use biometrics authentification.
|
||||
|
||||
|
@ -1737,7 +1671,7 @@ declare -a samsung=(
|
|||
#"com.samsung.sdm.sdmviewer" # [MORE INFO NEEDED]
|
||||
# Lets you view installed updates?
|
||||
|
||||
#"com.samsung.SMT"
|
||||
#"com.sansumg.SMT"
|
||||
# Samsung TTS (Text-to-speech)
|
||||
# Works with applications such as S Voice; translation apps, GPS that require Text-To-Speech (TTS) functionality and reads back text
|
||||
# https://galaxystore.samsung.com/detail/com.samsung.SMT
|
||||
|
@ -1749,16 +1683,6 @@ declare -a samsung=(
|
|||
# https://www.t-mobile.com/support/coverage/wi-fi-calling-from-t-mobile
|
||||
# VoLTE/IMS is needed for this to work (see com.sec.imsservice)
|
||||
|
||||
#"com.samsung.android.app.dofviewer"
|
||||
# Live focus
|
||||
# Allows you to adjust the level of background blur in the camera app.
|
||||
# From the Samsung Gallery, you can also select from a range of background blur shapes to add characters and shapes to a photo.
|
||||
# https://www.samsung.com/global/galaxy/what-is/live-focus/
|
||||
|
||||
#"com.sec.android.app.fm"
|
||||
#Samsung Radio
|
||||
#Listen to FM radio stations
|
||||
|
||||
#"com.sec.android.app.launcher"
|
||||
# Samsung One UI Home launcher (homescreen) (https://play.google.com/store/apps/details?id=com.sec.android.app.launcher)
|
||||
# It is samsung Touchwiz default launcher
|
||||
|
@ -1767,9 +1691,6 @@ declare -a samsung=(
|
|||
#"com.sec.android.app.clockpackage"
|
||||
# Samsung clock
|
||||
|
||||
#"com.sec.android.app.myfiles"
|
||||
# Samsung file manager app (https://play.google.com/store/apps/details?id=com.sec.android.app.myfiles)
|
||||
|
||||
#"com.sec.android.app.personalization" # [MORE INFO NEEDED]
|
||||
# Without a doubt this package is involved in personalization of something but tt's hard to find what.
|
||||
# 2 permissions : READ_PHONE_STATE and CHANGE_PHONE_STATE
|
||||
|
@ -1814,17 +1735,6 @@ declare -a samsung=(
|
|||
#"com.sec.android.gallery3d.panorama360view"
|
||||
# Let you see panoramic photos in the samsung Gallery.
|
||||
|
||||
#"com.sec.android.inputmethod"
|
||||
#"com.samsung.android.honeyboard" # New default keyboard on newer Samsung phones
|
||||
# Samsung keyboard
|
||||
# WARNING: do NOT remove the samsung keyboard if you don't have another keyboard with direct boot mode support or
|
||||
# you'll be stuck at boot (no keyboard to unlock the phone)
|
||||
# https://developer.android.com/training/articles/direct-boot
|
||||
# FYI: Simple Keyboard and OpenBoard are 2 FOSS keyboard with direct boot support
|
||||
# https://f-droid.org/packages/org.dslul.openboard.inputmethod.latin/
|
||||
# https://f-droid.org/packages/rkr.simplekeyboard.inputmethod/
|
||||
# WARNING: Do NOT remove this package with root if it wasn't first uninstalled with the non-root method.
|
||||
|
||||
#"com.sec.android.mimage.photoretouching"
|
||||
# Samsung Photo Editor
|
||||
# Disabling this will disable the inbuilt photo editor accessed via the stock gallery.
|
||||
|
@ -1933,7 +1843,6 @@ declare -a samsung=(
|
|||
# Samsung overlay of AOSP Settings. It has 39 permissions. Handles interactions with features controled by the settings.
|
||||
|
||||
#"com.samsung.android.timezone.data_P" # [MORE INFO NEEDED]
|
||||
#"com.samsung.android.timezone.data_Q" # [MORE INFO NEEDED]
|
||||
# Stores timezone data?
|
||||
|
||||
#"com.samsung.android.timezone.updater"
|
||||
|
@ -1981,6 +1890,11 @@ declare -a samsung=(
|
|||
# It kills rarely used apps running in background.
|
||||
# Surely linked to Smart Manager. I think it can have a very bad impact on battery performance if deleted. I'm testing.
|
||||
|
||||
#"com.sec.android.inputmethod"
|
||||
# Samsung keyboard
|
||||
# Note : used for unlocking the phone after a reboot. Third-parties keyboards cannot be used here.
|
||||
# DO NOT REMOVE THIS. NEVER !
|
||||
|
||||
#"com.sec.android.app.simsettingmgr"
|
||||
# SIM card manager.
|
||||
# Contains configuration and settings for handling dual SIM (give a SIM an icon, a name, and so on)
|
||||
|
|
|
@ -799,15 +799,13 @@ declare -a xiaomi=(
|
|||
# Your phone needs to be connected to internet (Wifi/mobile data) for this feature to work.
|
||||
# REMOVING THIS PACKAGE WILL BOOTLOOP YOUR DEVICE!
|
||||
#
|
||||
# NOTE : You cannot disable it via adb
|
||||
# According some sources, disabling MIUI optimizations in the Developer
|
||||
# settings and removing the apk file in a custom recovery does not cause a
|
||||
# bootloop, but I didn't test this.
|
||||
# NOTE : I don't have a Xiaomi phone on hand anymore but maybe only disabling it will work : adb shell 'pm disable-user com.xiaomi.finddevice'
|
||||
# Can someone try ?
|
||||
|
||||
#"com.miui.global.packageinstaller"
|
||||
# The security check / virus scan which runs after a package installation
|
||||
# Uninstalling it does not cause a bootloop
|
||||
# Package installation still works fine
|
||||
#"com.miui.global.packageinstaller" # [MORE INFO NEEDED]
|
||||
# MIUI Package installer
|
||||
# Offers the ability to install, upgrade, and remove applications on the device.
|
||||
# Is it the replacement of com.android.packageinstaller?
|
||||
|
||||
#"com.miui.securitycenter"
|
||||
# MIUI Security app
|
||||
|
|
Loading…
Reference in a new issue