Pre‑installed apps (often called bloatware) take up storage, run background services, and sometimes display unwanted ads. Removing them can free space, improve battery life, and give you a cleaner experience—without the risks of rooting.
Backup your data. Uninstalling a system package only affects that app, but a mistaken removal can break a feature you rely on. Use Google Backup, a local ADB backup, or a trusted third‑party app to save contacts, messages, and app data.
Build number seven times, then return to Settings > System > Advanced > Developer options.ADB (Android Debug Bridge) runs with the shell user, which has permission to invoke the pm uninstall --user 0 command. This tells the package manager to remove the app for the primary user (user 0) while leaving the underlying APK on the system partition. The app no longer appears in the launcher, won’t run, and won’t consume resources, yet the system files stay untouched—so you avoid the bricking risk associated with full system deletions.
The ADB binaries are part of the Android SDK Platform‑Tools package. Follow the sub‑steps that match your OS.
https://developer.android.com/studio/releases/platform-tools.C:\adb.PATH (Control Panel → System → Advanced → Environment Variables).brew install --cask android-platform-tools (Homebrew required).adb in /usr/local/bin.sudo apt update && sudo apt install android-tools-adb.sudo dnf install android-tools.Verify the installation by opening a command prompt (or terminal) and typing adb version. You should see the version number printed.
adb devices. You should see a line like:
List of devices attached
1234567890ABCDEF device
If you see unauthorized, re‑grant permission on the phone.To decide what to remove, you need a clear list of packages. The following command prints every package name, one per line:
adb shell pm list packages -f
The output looks like:
package:/system/priv-app/CarrierServices/CarrierServices.apk=com.google.android.carrier
For easier reading, pipe the result to grep (Linux/macOS) or findstr (Windows) and filter by known bloatware vendors (e.g., com.samsung, com.huawei, com.oppo, etc.).
Not every pre‑installed app is safe to remove. Removing core services (e.g., com.android.systemui, com.google.android.gms) can break the OS or prevent OTA updates. Use the following checklist:
systemui, settings, launcher, android in the package name.When in doubt, search the package name online before proceeding.
Disabling an app hides it and stops its processes, but the package remains on the system partition. Uninstalling for user 0 removes it from the user profile, which also frees the app’s data directory (/data/data/…).
We recommend the following workflow:
adb shell pm disable-user --user 0 com.example.bloatware
Replace com.example.bloatware with the actual package name. After the command, the app disappears from the launcher and its background services stop.
To re‑enable later:
adb shell pm enable com.example.bloatware
adb shell pm uninstall --user 0 com.example.bloatware
Success, the app is gone for the primary user. It still resides on the system partition, but it will not be re‑installed on the next reboot.adb shell pm list packages | grep com.example.bloatware
No output means the package is no longer visible to the user.Repeat the uninstall step for each bloatware package you wish to remove.
After uninstalling a batch of apps, perform a quick sanity check:
adb reboot or power‑cycle manually).If you notice missing functionality, you can restore the package (see Step 9).
Because the APK stays on the system partition, you can reinstall it for the user with a single command:
adb shell cmd package install-existing com.example.bloatware
If the command fails (e.g., the package was removed in a previous OTA), you’ll need to flash the original factory image or use a backup made before the removal. That is why the initial backup step is critical.
For power users who want to clean multiple devices, you can script the uninstall list. Below is a minimal Bash example (Linux/macOS):
#!/usr/bin/env bash
# List of known bloatware packages (add or remove as needed)
BLOATWARE=(
"com.samsung.android.app.appsedge"
"com.samsung.android.game.gamehome"
"com.oppo.quicksearch"
"com.huawei.android.launcher"
)
for pkg in "${BLOATWARE[@]}"; do
echo "Uninstalling $pkg…"
adb shell pm uninstall --user 0 "$pkg"
done
Run the script while the phone is connected. Always review the BLOATWARE array first; an incorrect entry can cause unwanted side effects.
adb kill-server && adb start-server to reset the daemon.pm uninstall command for certain apps. In that case, you can only disable them.init.d script (requires rooting, beyond the scope of this guide).adb logcat while reproducing the issue to see if a missing service is being called.Never uninstall core Android framework packages. Removing com.android.systemui, com.android.phone, or com.google.android.gms can render the device unusable or prevent OTA updates.
Back up before you begin. A mis‑typed package name can lead to loss of essential functionality that may require a factory reset to recover.
OTA updates may restore removed apps. Keep your uninstall script handy to re‑apply after a major update.
com.samsung namespace. Samsung’s Knox security may block uninstall for certain carrier apps; disabling is the only safe option.com.google.android.apps.turbo (Pixel Launcher) cannot be removed without root.pm uninstall --user 0 command still works, but the list of packages returned by pm list packages may omit hidden system apps unless you add the --show-hidden flag.adb devices shows device.pm uninstall --user 0.cmd package install-existing.By following this method you gain full control over the apps that run on your Android device, without the need for a risky root process. The changes are reversible, safe for most mainstream phones, and can be repeated whenever a new bloatware package appears after an update.









