Debloat Android phones and Android TV devices through a single Bash script and ADB.
The script is intentionally conservative by default: it primarily disables packages instead of uninstalling them, which is safer to recover and typically safer for OTA updates.
- Features
- Usage
- Known Limitations
- System Requirements
- Development
- Architecture
- Contributing
- Helping out
- License
- Detects connected Android devices through ADB and exits early when none are available.
- Distinguishes device type (
PhoneversusTV) through package heuristics. - Installs alternative applications on phones when they are absent (Aurora Store, F-Droid, selected Fossify apps, Breezy Weather).
- Disables a substantial multi-vendor package set (Google, Samsung, Xiaomi, Asus, Oppo/OnePlus, and others).
- Uninstalls only a small, explicit subset of packages.
chmod +x android-debloater.sh
./android-debloater.shRe-enable a package:
adb shell pm enable --user 0 <package.name>Reinstall an uninstalled system package (when still present in the system image):
adb shell pm install-existing --user 0 <package.name>List disabled packages:
adb shell pm list packages --user 0 -d- The script is non-interactive and executes immediately.
- Some package groups include core applications (dialer, contacts, messaging, camera, file manager), which can alter expected device conduct.
- Certain entries are uninstalled (not only disabled).
- Package availability differs by OEM, ROM, and Android version.
- APK download links in the provisioning section can become stale over time.
- OS: Linux, macOS, or a compatible shell environment with ADB available
- Runtime tools:
adb,wget,bash - Device state: USB debugging enabled and ADB authorisation accepted on the target device
- Bash
- Android Platform Tools (
adb) - ShellCheck
wget
Debian/Ubuntu:
sudo apt update
sudo apt install -y android-tools-adb wgetArch Linux:
sudo pacman -Syy
sudo pacman -S android-tools wgetValidate the ADB connection:
adb devicesbash ./android-debloater.shGitHub Actions validates every push and pull request targeting master. Reproduce the validation locally with:
shopt -s globstar nullglob
shellcheck **/*.sh --severity errorSee the architecture documentation for the current system boundary, runtime flow, integration contracts, and design constraints.
You are welcome to bring any suggestion, feedback or modification to this project.
When doing so, please:
- Maintain cross-platform compatibility
- Maintain the pull requests as focused and consistent with the existing code style
- Maintain your branch up-to-date with
master - Revise the documentation when behaviour changes
- Properly test all changes
Discovered a problem or have a suggestion? Open an issue!
If you find this project useful, consider funding it or starring ⭐️ it on GitHub!
This project is being distributed under the GNU General Public License v3.0 or later.
See LICENSE for details.
