Many Android devices ship with pre‑installed applications—often called bloatware—that you cannot remove through the normal Settings UI. These apps consume storage, run background services, and sometimes display unwanted ads. If you are not willing to root your device, the Android Debug Bridge (ADB) provides a safe, reversible way to disable or even uninstall many of those system packages.
System apps are stored in the /system partition, which is read‑only for normal users. The Settings app only offers a “Disable” toggle for some of them. ADB, when run with the pm (package manager) tool, can issue commands directly to the system service that controls packages. Because ADB runs as a privileged shell user (not as root), it can request the system to hide or remove a package without altering the /system image. The change is stored in the device’s pm database, making it reversible by re‑enabling the app later.
Settings > About phone and tap Build number seven times.Settings > System > Developer options, toggle USB debugging on.C:\adb or ~/adb).adb version. You should see something like Android Debug Bridge version 1.0.41. If you get an error, ensure the folder is in your PATH or call it with the full path.If the command succeeds, ADB is ready. Next we need to confirm the phone is recognized.
Always allow from this computer to avoid the prompt on subsequent connections.adb devices. The output should list a device serial number followed by device.
List of devices attached
ABCD1234 device
If the device appears as unauthorized, re‑grant the permission on the phone or try a different cable.
Every Android app has a unique package identifier (e.g., com.example.app). You need this name to issue ADB commands.
Settings > Apps > [App name]).adb shell pm list packages -3 | grep -i "partial_name"
Replace partial_name with a distinctive part of the app’s name (case‑insensitive). The -3 flag limits the output to third‑party apps; omit it to see system packages as well.
adb shell pm list packages | grep -i facebook
You might see:
package:com.facebook.katana
The string after package: is the identifier you will use.
If you cannot locate the package, you can list all system packages and search manually:
adb shell pm list packages -s
Not every system app can be fully uninstalled without root. Android distinguishes three states:
/system. ADB cannot do this without root.For most bloatware, “disable” is sufficient. If the app occupies significant space in /data (e.g., pre‑installed games), you can uninstall it for the user.
adb shell pm disable-user --user 0 com.example.bloatware
Replace com.example.bloatware with the package you identified.
Package com.example.bloatware new state: disabled-user if successful.adb shell pm list packages -d | grep com.example.bloatware
If it appears in the list, it is disabled.
Disabling also stops any background services the app may have started, which can improve battery life.
adb shell pm disable-user --user 0 com.example.bloatware
adb shell pm uninstall --user 0 com.example.bloatware
Success. The package is now removed from the user profile, freeing up its data directory (usually /data/user/0/com.example.bloatware).adb shell pm list packages -u | grep com.example.bloatware
If the package does not appear, it is gone for the current user.
Note that the APK still resides on the system partition, so a factory reset will restore the app.
If you later discover that the app was needed (e.g., a carrier‑specific service), you can bring it back.
adb shell pm enable com.example.bloatware
adb shell cmd package install-existing com.example.bloatware
Success. The app will reappear in the launcher.If you have several apps to debloat, you can place all commands in a simple batch (Windows) or shell (Linux/macOS) script. Example for a Windows .bat file:
@echo off
adb devices | findstr /i "device" >nul || (echo Connect a device first & pause & exit /b)
set APPS=\
com.example.bloatware1 \
com.example.bloatware2 \
com.example.bloatware3
for %%A in (%APPS%) do (
echo Disabling %%A …
adb shell pm disable-user --user 0 %%A
echo Uninstalling %%A …
adb shell pm uninstall --user 0 %%A
)
echo All done.
pause
Replace the placeholder package names with the ones you want to remove. Running the script will process each entry sequentially.
Some OEMs (e.g., Samsung, Huawei) lock down the package manager for certain system apps. In those cases ADB cannot disable or uninstall the package. You can try the following:
Settings > Security > Device admin apps) and revoke the admin rights first.pm hide command as an alternative to disable-user:
adb shell pm hide com.example.bloatwareadb shell dpm set-device-owner tricks) – these are beyond the scope of a no‑root tutorial.Some carriers embed their apps in the “carrier‑config” partition, which can restore the app on boot. If this happens:
adb shell pm list packages -d or -u.This error usually means the APK is not present for the current user. Use the install-existing command (as shown in Step 7) instead of a full APK install.
Double‑check the exact spelling and case of the package name. The pm list packages output is authoritative.
android, systemui, settings, telephony, carrier, or framework unless you are absolutely sure.If ADB cannot disable a particular app, you have two main alternatives:
/system partition, allowing true removal of APK files.Both methods have trade‑offs. The ADB technique described here offers the best balance of safety, reversibility, and no‑root requirement.
Using ADB to disable or uninstall unwanted system apps gives you the same level of control that a rooted device provides—without the security and warranty risks of rooting. By following the steps above, you can reclaim storage, reduce background activity, and enjoy a cleaner Android experience. Remember to proceed methodically, keep a backup of your package list, and test after each change. If you ever need to revert, the same ADB commands bring the apps back, making this a truly low‑risk customization.









