Uninstalling a preinstalled app without root
· 3 min read
This is the central command of everything we do here:
adb shell pm uninstall --user 0 com.example.package
If it answers Success, the application is gone from the television.
What that command actually does#
Worth taking apart, because each piece matters:
pmis Android's package manager.uninstallremoves an application.--user 0is the decisive part. It tells it to remove the app from the main user only, not from the system.
Without --user 0, the command would fail on a system app: Android does not
allow deletion from firmware. With --user 0, what happens is more modest and
far safer: the application stops being available to you, but the original file
stays intact on the system partition, which is never modified.
Three practical consequences follow:
- It can be undone with one command.
- A factory reset puts everything back as it was.
- You have not touched firmware, so nothing can be left half-finished.
Undoing it#
adb shell cmd package install-existing com.example.package
install-existing means "install the one already there". It downloads
nothing. It reinstates the factory copy that never left.
We publish no entry on this site without confirming that this reversal works on that model. It is a rule we set ourselves and do not skip.
The gentler alternative: disable#
If you would rather not uninstall, you can disable:
adb shell pm disable-user --user 0 com.example.package
The app stays installed but neither runs nor appears. To bring it back:
adb shell pm enable com.example.package
When to use which: disabling is more conservative and a good way to test whether something breaks. Uninstalling frees a little data space and is usually what you want for advertising and telemetry.
Errors you will run into#
Failure [DELETE_FAILED_INTERNAL_ERROR]
Almost always a misspelled package name. Check it with pm list packages.
Failure [not installed for 0]
It was already gone. No harm done.
Success but the app is still there
Reboot the television. Some launchers cache the list.
Before you start#
Two rules that save grief:
- One at a time. Remove fifteen packages at once and, if something breaks, you will not know which one did it.
- Test the remote after each one. It is the first thing you notice and the most annoying to get back.
Above all: check whether your model is in the directory first. The difference between a harmless package and one that leaves you without a remote depends on the model, and that is exactly what we are cataloguing.