35

As I've played around with different ROMs and used Titanium Backup, I see that apps are categorized into system and user apps. Several ROM developers state that Titanium Backup should only be used for user apps and not for system apps, and when I proceed to uninstall system apps, TiBu warns me that the ROM may not work correctly.

Other than the fact that user apps are downloadable via the Market or some other means, what are the key differences between the two?

What is it about the system apps that make them more integral to the OS itself?

5 Answers 5

25

/system is read-only without root so it prevents uninstalling applications from /system/app and /system/priv-app. Applications that are critical are put there so that they can't be uninstalled. Carrier bloatware that they don't want to let you remove is also put there. The latter category of apps can be removed if you are rooted; the former, not so much.

/system/priv-app also allows apps installed there to use signatureOrSystem and other privileged permissions. Stephen's answer has some examples.

As for why apps might be critical, that depends on the ROM. HTC's Sense is heavily dependent on their built-in apps from what I hear, for example. They simply didn't design their UI such that it would work natively with third party apps (or fail nicely if the system apps were missing). Other apps are essentially part of the Android OS but Google coded them as apps/services (probably for encapsulation and reliability reasons).

Updates for some system apps can be downloaded via the Play Store, such as Google Maps. If it didn't come preinstalled as a system app on your device then you can use Titanium to convert it from a user app to a system app.

4
  • does it also mean that a system app cant be killed by task killers?? or that they would auto start if killed??
    – ashishsony
    Commented Jan 11, 2012 at 8:08
  • @ashishsony System services are normally auto-started, yes, but (most?) apps/services can still be killed. For example I can kill the Browser on my device. (Insert usual advice about how task killers are bad.) Commented Jan 11, 2012 at 16:29
  • Correct, system apps on HTC Devices (even those like Dropbox, Facebook) are too deeply integrated with the Sense UI. One must refrain from removing them; also converting user apps to system apps should not be done unless very necessary as on some ROMs they might not terminate under low memory condition.
    – Ashesh
    Commented Jan 2, 2015 at 16:06
  • 2
    @all one programmatic difference is system(priv-app) application receive a system broadcast even is force_stop from application settings, when (user-app) non-system app can't receive the any broadcast if is force_stop from device settings. Commented Sep 17, 2015 at 9:27
23

The other answers are correct, but fail to point out a couple differences:

Permissions

System apps are granted the ability to request certain system-only permissions that are never available to user apps. This is not the same as root/sudo/su permissions.

One example that I know of and use daily is the ability to reset the missed call notification counter. I have Go Dialer, which is a replacement for the stock dialer and contact app (how you make phone calls). When I miss a call, android lets me know that with a notification. However, Go Dialer is not allowed to reset this counter, even though it asks for that permission when you install the app. Android 2.2 and earlier let user apps reset it, but made this permission a system-only accessible permission for android 2.3

By moving my Go Dialer app to the system partition, it is allowed to reset this counter. Root is not required for the app (except, of course, to actually move the app to the System partition).

Another system permission is the ability to set the current gps location. Now, Android does have a preference where you can allow mock locations, so any gps spoofing app you install can declare a gps location. But if the app is in the System partition, mock locations can be disabled while still letting the app spoof the gps location.

Updates

System apps can be updated just like user apps, but the update is never integrated into the original rom. That is, system apps have the unique ability to roll back to the version that existed when the rom was first installed.

Move to SD

Android lets users move user apps from internal memory to the sd card. System apps cannot be moved and always take up some internal space. Most (all?) devices, though, have internal user apps on a different partition, so uninstalling a system app would not give you any more user app space (other than the dalvik-cache being removed).

You will recover some space if you uninstall any updates to a system app. As noted, the updates are not integrated with the rom and are thus stored in user space. The updates are not allowed to move to the sd card either, but if removed, user space is recovered.

How it affects you

If you are a casual android user, you likely won't run into scenarios where system vs user app would make a difference. If you are an advanced user, you likely have root and can thus change a system app to user (and vice versa) if you ever run into one of these situations.

3
  • 1
    Did you mean "This is not the same as root/su permissions"? I seem to recall that sudo and su are not the same - at least in Unix and Linux.
    – ChuongPham
    Commented Jun 10, 2013 at 22:08
  • You're right that su and sudo are different in *nix. But sudo is more applicable here, because sudo is asking for root privileges, whereas su is simply asking to Switch User. In order to use su, you only need to know the password of the account to which you are switching; if you don't specify an account, then you are asking to become root. In Android, however, there is no root password, nor any other accounts, so su is the command known by users to run in a terminal to gain root privileges.
    – Stephen S
    Commented Jun 11, 2013 at 13:33
  • At any rate, I'll update the answer to include su, since that is what some Android users equate to root.
    – Stephen S
    Commented Jun 11, 2013 at 13:34
4

System apps are apps that are included within the system. They are located in the /system/app folder.

The vast majority of them are required to make the device run. An example of some of these are the dialer, which sets up all the network connectivity, and browser, without which no in-app webviews would work.

2
  • 1
    The dialer sets up the network connectivity? Commented Jan 4, 2012 at 17:59
  • 2
    @MatthewRead Yes - It does! The actual 'Dialer' is a seperate activity located in the dialer application. The dialer.apk is the app that sets up the connectivity - if you want proof, freeze the dialer and dialer storage apps, the network wont work.
    – Liam W
    Commented Jan 5, 2012 at 6:59
3

I would like to add something in the above answers. System apps cannot be deleted in a full factory reset, unlike user apps. So if you want to delete all your personal files but they are too many to be deleted conveniently that a factory reset is only the most convenient, and you have apps you want to keep, you can convert those apps to system apps so that they won't be erased during the factory reset.

1
  • 1
    Interesting tip! I want to move my music to system now lol Commented Oct 6, 2017 at 10:27
2

Another feature of system apps is that they use native libraries (libsomething.so files) from the common system libraries directory (typically /system/lib or /system/lib64), and not from the app-private libraries directory (e.g., /data/app/com.example.HelloJni/lib/arm). Before Android Nougat, user apps were free to load and use the system native libraries. Restrictions have been imposed later, see https://developer.android.com/about/versions/nougat/android-7.0-changes.html#ndk.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .