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

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

使系统应用程序与操作系统本身更加不可或缺的系统应用程序是什么?

#1 楼

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

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

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

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

评论


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

–ashashsony
2012年1月11日在8:08



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

–马修·雷德(Matthew Read)
2012年1月11日在16:29



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

– Ashesh Kumar Singh
15年1月2日,16:06

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

– Zala Janaksinh
2015年9月17日在9:27

#2 楼

其他答案是正确的,但没有指出几个不同之处:

权限

系统应用程序被授予请求某些特定于系统的权限的能力,而这些权限永远无法使用。用户应用。这与root / sudo / su权限不同。

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

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

更新

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

移至SD

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

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

它如何影响您

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

评论


您是说“这与root / su权限不同”吗?我似乎记得sudo和su是不一样的-至少在Unix和Linux中。

– ChuongPham
2013年6月10日22:08



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

–斯蒂芬·施劳格(Stephen Schrauger)
2013年6月11日13:33



无论如何,我都会将答案更新为包括su,因为这是某些Android用户等同于root用户的意思。

–斯蒂芬·施劳格(Stephen Schrauger)
2013年6月11日13:34

#3 楼

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

它们中的绝大多数是设备运行所必需的。其中的一个例子是拨号器,它设置了所有的网络连接,而浏览器则没有这些应用程序内的Web视图。

评论


拨号程序设置网络连接?

–马修·雷德(Matthew Read)
2012年1月4日17:59

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

– Liam W
2012年1月5日在6:59

#4 楼

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

评论


有趣的提示!我现在想将音乐移至系统大声笑

– FreeSoftwareServers
17-10-6在10:27

#5 楼

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