Debloat Android phones and Android TV devices using a single Bash script and ADB.
The script is intentionally conservative by default: it mostly disables packages instead of uninstalling them, which is easier to recover from and usually safer for OTA updates.
- Detects a connected Android device over ADB.
- Detects device type (
PhonevsTV) using installed package heuristics. - Optionally installs alternative apps on phones (Aurora Store, F-Droid, Fossify apps, etc.) if missing.
- Disables a large list of vendor/Google/social/utility packages.
- Uninstalls a small subset of packages where explicitly configured.
Disabling user 0 packages generally has lower risk:
- Easier rollback (can be re-enabled from Settings or ADB).
- Better OTA compatibility compared with broad uninstalling.
- Good debloat impact without removing system package metadata.
Uninstalling is still used in a few targeted places in this script.
- Linux/macOS (or WSL/Git Bash with ADB available)
adbwget- USB debugging enabled on the Android device
- Authorized ADB connection (
Allow USB debuggingprompt accepted)
Install prerequisites:
- Arch Linux:
sudo pacman -Syy
sudo pacman -S android-tools- Debian/Ubuntu:
sudo apt update
sudo apt install -y android-tools-adb wgetVerify that the device is connected:
adb devicesYou should see your device with the state device.
From the project directory:
chmod +x android-debloater.sh
./android-debloater.sh- Read the package lists before running.
- This script runs immediately; there is no interactive confirmation.
- Some categories disable core apps (contacts, dialer, SMS, camera, file manager, etc.).
- A few packages are uninstalled, not just disabled.
- Results vary by OEM/ROM/version; some package names may not exist on your device.
- Back up important data.
- Review/edit package groups in
android-debloater.shbefore first run. - Run the script once.
- Reboot the device.
- Test calls, messaging, camera, notifications, and updates.
- Re-enable anything needed.
adb shell pm enable --user 0 <package.name>adb shell pm install-existing --user 0 <package.name>adb shell pm list packages --user 0 -dadb shell pm list packages --user 0Edit package groups directly in android-debloater.sh:
- Keep a package: comment out its line.
- Add a package to disable: add it under a
disable_android_packageblock. - Remove uninstall actions unless you explicitly want them.
Tip: start conservative and expand gradually.
- If no ADB device is connected, the script exits with an error.
- If a package is already disabled/missing, operations are skipped.
- Phone-only app installation block is skipped for detected TV devices.
- Ensure USB cable supports data.
- Re-run
adb devicesand accept authorization prompt. - Try restarting ADB:
adb kill-server
adb start-server
adb deviceschmod +x android-debloater.shRe-enable it from Android Settings (Apps) or via ADB using:
adb shell pm enable --user 0 <package.name>Use at your own risk. This script can affect core device functionality depending on your ROM and package set. Always review changes and keep a recovery path.
Licensed under the GNU General Public License v3.0 or later. See LICENSE for details.