Remove Android system applications
Normally it is not possible to delete some system apps that came pre-installed on your Android phone. Some can be turned off so that they won’t start and show on the list of apps on your phone.
Open your phone’s Settings app.
Select Apps & notifications.
Select the app you want to disable.
Unfortunately, some preinstalled applications (for example Facebook on some phones, and mostly branding application of your phone or sim provider) cannot even be turned off even if they are non-essential for the phone to work.
Some examples of applications:
Google search, Gmail, youtube, gmaps
Even if you are not starting them explicitly, they are annoying. You should update them to avoid potential security issues (and because it’s easier to configure the phone to update everything), thus stealing bandwidth, and they might get started automatically in the background or on some event, thus stealing resources like battery power, personal data and further bandwidth.
One of the main advantages of a rooted phone is being able to remove or replace all preinstalled applications, but it’s not always a viable approach.
A more viable and foolproof approach is to uninstall the application for the current user, and not from the system.
There is AFAIK no GUI for this operation, and one has to resort to ADB, which makes the process less user-friendly.
To use ADB it is necessary to enable USB debugging:
Open the Settings app.
Select “About Phone”.
Select the “Build Number” item seven times. You should get a message saying you are now a developer.
From the main Settings page, there should be a new option near the bottom called “Developer Options”, select it.
Select "Enable USB Debugging".
when you connect your phone to your computer, you’ll see a popup entitled “Allow USB Debugging?” on your phone. Eventually, check the "Always allow from this computer" box and select OK.
On Debian-like system (and other GNU/Linux distributions) it is possible to install adb through the package manager:
sudo aptitude install adb
On Windows, it might be necessary to install the whole sdk.
For listing all installed applications from the shell:
adb shell pm list packages
For installing and uninstalling packages the recommended approach is to use the package manager (pm).
adb shell pm uninstall package.name
Failure [DELETE_FAILED_INTERNAL_ERROR] indicates that you probably do not have the necessary permissions for such operation.
In this case the parameter
--user can be used for disabling the application only for the given user:
adb shell pm uninstall --user 0 package.name
Failure [not installed for 0] hints that the package was not installed on the phone, probably a typo.
Update: I noticed that some application can be uninstalled both from system and user, thus I always try to remove packages from both locations:
PACKAGE=<package name>; adb shell pm uninstall "$PACKAGE" || adb shell pm uninstall --user 0 "$PACKAGE"
As packages are not removed from the system, it is still possible to query them:
adb shell pm list packages -u
And it is also possible to reinstall them:
adb shell pm install-existing package.name
The advantage of
pm, even if more convoluted is that it is possible to remove virtually any package, even "critical" packages like the launcher or keyboard.
I did not encounter packages I was not able to remove with
--user, but it does not means that does do not exists. Some phone might have further limitations, in this case, it should still be possible to disable the package:
adb shell pm disable package_name
A more "violent" approach (normally only available only for rooted phones), is deleting the
.apk file from it install location. It will effectively uninstall the application but will leave data like cache, settings and other files scattered through the system. So it’s not the recommended approach.
Even if it is possible to execute
pm from the phone directly, for example from Termux, I’ve got the following error
android.os.DeadObjectException: Transaction failed on small parcel; remote process probably died.
It seems to be a system restriction (implemented with SELinux), and I have found no way to disable it (even temporarily).
Thus, unfortunately, it does not seem possible to uninstall application directly from the phone without a computer, or root permissions.