系统应用程序和用户应用程序之间有什么区别?


28

当我使用不同的ROM并使用Titanium Backup时,我看到应用程序被分类为系统和用户应用程序。几位ROM开发人员指出Titanium Backup仅应用于用户应用程序,而不能用于系统应用程序,当我继续卸载系统应用程序时,TiBu警告我ROM可能无法正常工作。

除了可以通过市场或其他方式下载用户应用程序之外,两者之间的主要区别是什么?

系统应用程序使它们与OS本身更不可或缺的是什么?

Answers:


20

/system是只读用户,没有root用户,因此可以防止从/system/app和卸载应用程序/system/priv-app。至关重要的应用程序放置在此处,以便无法卸载。他们不想让您删除的运营商产品也放置在此处。如果您是root用户,则可以删除后一类应用;前者不是很多。

/system/priv-app还允许在那里安装的应用程序使用signatureOrSystem和其他特权。斯蒂芬的答案有一些例子。

至于为什么应用程序可能很关键,这取决于ROM。举例来说,HTC的Sense在很大程度上取决于其内置的应用程序。他们只是没有设计出能够与第三方应用程序本地兼容的UI(如果缺少系统应用程序,则可能会失败)。其他应用实质上是Android操作系统的一部分,但Google将它们编码为应用/服务(可能出于封装和可靠性的原因)。

某些系统应用程序的更新可以通过Play商店下载,例如Google Maps。如果尚未将其作为系统应用程序预先安装在设备上,则可以使用Titanium将其从用户应用程序转换为系统应用程序。


这还意味着系统应用程序不能被任务杀手杀死吗?还是杀死他们会自动启动?
ashishsony 2012年

@ashishsony系统服务通常是自动启动的,是的,但是(大多数?)应用/服务仍然可以被杀死。例如,我可以杀死设备上的浏览器。(插入关于任务杀手的坏习惯的常规建议。)
马修(Matthew)阅读

正确的是,HTC设备上的系统应用程序(甚至包括Dropbox,Facebook之类的系统应用程序)与Sense UI集成得太深。必须避免将其删除;除非非常必要,否则也不应将用户应用程序转换为系统应用程序,因为在某些ROM上,它们可能在内存不足的情况下不会终止。
Ashesh Kumar Singh 2015年

1
@所有程序上的区别是系统(priv-app)应用程序甚至从应用程序设置中强制退出了系统广播,而(user-app)非系统应用程序如果从设备设置中通过force_stop无法接收任何广播。
Zala Janaksinh 2015年

22

其他答案是正确的,但没有指出几个区别:

权限

系统应用程序被授予请求某些特定于系统的权限的能力,而这些权限对于用户应用程序是永远不可用的。这不是一样根/须藤/苏权限。

我知道并每天使用的一个示例是重置未接来电通知计数器的功能。我有Go Dialer,它可以代替股票拨号器和联系人应用程序(拨打电话的方式)。当我错过来电时,android会通过通知告知我。但是,即使在安装应用程序时,Go Dialer要求该权限,也不允许重置该计数器。Android 2.2及更早版本允许用户应用重置它,但将此权限设为android 2.3的仅系统可访问权限

通过将我的Go Dialer应用程序移动到系统分区,可以重置此计数器。应用程序不需要根目录(当然,实际将应用程序移至系统分区除外)。

另一个系统权限是能够设置当前gps位置。现在,Android确实有您可以允许模拟位置的首选项,因此您安装的任何gps欺骗应用程序都可以声明gps位置。但是,如果应用程序位于系统分区中,则可以禁用模拟位置,同时仍然让应用程序欺骗gps位置。

更新

系统应用程序可以像用户应用程序一样进行更新,但是更新从未集成到原始rom中。也就是说,系统应用程序具有回退到首次安装rom时存在的版本的独特功能。

移至SD

Android让用户移动 user应用程序从内部存储器到SD卡。系统应用程序无法移动,并且始终占用一些内部空间。但是,大多数(所有?)设备在不同的分区上都具有内部用户应用程序,因此,卸载系统应用程序不会给您更多的用户应用程序空间(除了被删除的dalvik缓存外)。

如果您卸载系统应用程序的任何更新,则将恢复一些空间。如上所述,更新未与rom集成,因此存储在用户空间中。更新也不允许移动到sd卡,但是如果删除,则将恢复用户空间。

它如何影响你

如果您是休闲的android用户,则可能不会遇到系统与用户应用会有所作为的情况。如果您是高级用户,则您可能具有root权限,因此如果遇到以下情况之一,则可以将系统应用程序更改为用户(反之亦然)。


1
您是说“这与root / su权限不同”吗?我似乎还记得那点sudosu并且不一样-至少在Unix和Linux中。
ChuongPham 2013年

没错,* nix中的su和sudo是不同的。但是sudo在这里更适用,因为sudo要求root特权,而su只是要求切换用户。为了使用su,您只需要知道要切换到的帐户的密码即可。如果您未指定帐户,则要求成为root用户。但是,在Android中,没有root密码,也没有任何其他帐户,因此su用户知道在终端中运行以获取root特权的命令。
Stephen Schrauger 2013年

无论如何,我都会将答案更新为include su,因为这是某些Android用户等同于root用户的含义。
Stephen Schrauger 2013年

4

系统应用程序是系统中包含的应用程序。它们位于/ system / app文件夹中。

他们中的绝大多数是使设备运行所必需的。其中的一个例子是拨号器,它设置了所有的网络连接,以及浏览器,没有它们,应用程序内的Web视图将无法工作。


1
拨号程序设置网络连接?
马修(Matthew)

2
@MatthewRead是的-是的!实际的“拨号程序”是位于拨号程序应用程序中的单独活动。Dialer.apk是用于设置连接性的应用程序-如果您需要验证,冻结Dialer和Dialer存储应用程序,则网络将无法工作。
利亚姆

太奇怪了!
马修(Matthew)

Android很奇怪!
利亚姆

3

我想在以上答案中添加一些内容。与用户应用程序不同,无法在完全恢复出厂设置时删除系统应用程序。因此,如果您要删除所有个人文件,但又太多了,以至于无法方便地删除它们,那么恢复出厂设置仅是最方便的选择,并且您要保留应用程序,则可以将这些应用程序转换为系统应用程序,以使它们获胜。恢复出厂设置时不会被删除。


1
有趣的提示!我想将音乐现在移至系统大声笑
FreeSoftwareServers 17-10-6

2

系统应用程序的另一个功能是它们使用公共系统库目录(通常是/ system / lib/ system / lib64)中的本机库(libsomething.so文件),而不是应用程序专用库目录(例如/ data)中的本机/app/com.example.HelloJni/lib/arm)。在Android Nougat之前,用户应用程序可以自由加载和使用系统本机库。稍后施加了限制,请参阅https://developer.android.com/about/versions/nougat/android-7.0-changes.html#ndk

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.