Answers:
/system
是只读用户,没有root用户,因此可以防止从/system/app
和卸载应用程序/system/priv-app
。至关重要的应用程序放置在此处,以便无法卸载。他们不想让您删除的运营商产品也放置在此处。如果您是root用户,则可以删除后一类应用;前者不是很多。
/system/priv-app
还允许在那里安装的应用程序使用signatureOrSystem
和其他特权。斯蒂芬的答案有一些例子。
至于为什么应用程序可能很关键,这取决于ROM。举例来说,HTC的Sense在很大程度上取决于其内置的应用程序。他们只是没有设计出能够与第三方应用程序本地兼容的UI(如果缺少系统应用程序,则可能会失败)。其他应用实质上是Android操作系统的一部分,但Google将它们编码为应用/服务(可能出于封装和可靠性的原因)。
某些系统应用程序的更新可以通过Play商店下载,例如Google Maps。如果尚未将其作为系统应用程序预先安装在设备上,则可以使用Titanium将其从用户应用程序转换为系统应用程序。
其他答案是正确的,但没有指出几个区别:
系统应用程序被授予请求某些特定于系统的权限的能力,而这些权限对于用户应用程序是永远不可用的。这不是一样根/须藤/苏权限。
我知道并每天使用的一个示例是重置未接来电通知计数器的功能。我有Go Dialer,它可以代替股票拨号器和联系人应用程序(拨打电话的方式)。当我错过来电时,android会通过通知告知我。但是,即使在安装应用程序时,Go Dialer要求该权限,也不允许重置该计数器。Android 2.2及更早版本允许用户应用重置它,但将此权限设为android 2.3的仅系统可访问权限
通过将我的Go Dialer应用程序移动到系统分区,可以重置此计数器。应用程序不需要根目录(当然,实际将应用程序移至系统分区除外)。
另一个系统权限是能够设置当前gps位置。现在,Android确实有您可以允许模拟位置的首选项,因此您安装的任何gps欺骗应用程序都可以声明gps位置。但是,如果应用程序位于系统分区中,则可以禁用模拟位置,同时仍然让应用程序欺骗gps位置。
系统应用程序可以像用户应用程序一样进行更新,但是更新从未集成到原始rom中。也就是说,系统应用程序具有回退到首次安装rom时存在的版本的独特功能。
Android让用户移动 user
应用程序从内部存储器到SD卡。系统应用程序无法移动,并且始终占用一些内部空间。但是,大多数(所有?)设备在不同的分区上都具有内部用户应用程序,因此,卸载系统应用程序不会给您更多的用户应用程序空间(除了被删除的dalvik缓存外)。
如果您卸载系统应用程序的任何更新,则将恢复一些空间。如上所述,更新未与rom集成,因此存储在用户空间中。更新也不允许移动到sd卡,但是如果删除,则将恢复用户空间。
如果您是休闲的android用户,则可能不会遇到系统与用户应用会有所作为的情况。如果您是高级用户,则您可能具有root权限,因此如果遇到以下情况之一,则可以将系统应用程序更改为用户(反之亦然)。
sudo
,su
并且不一样-至少在Unix和Linux中。
sudo
在这里更适用,因为sudo要求root特权,而su
只是要求切换用户。为了使用su,您只需要知道要切换到的帐户的密码即可。如果您未指定帐户,则要求成为root用户。但是,在Android中,没有root密码,也没有任何其他帐户,因此su
用户知道在终端中运行以获取root特权的命令。
su
,因为这是某些Android用户等同于root用户的含义。
系统应用程序是系统中包含的应用程序。它们位于/ system / app文件夹中。
他们中的绝大多数是使设备运行所必需的。其中的一个例子是拨号器,它设置了所有的网络连接,以及浏览器,没有它们,应用程序内的Web视图将无法工作。
我想在以上答案中添加一些内容。与用户应用程序不同,无法在完全恢复出厂设置时删除系统应用程序。因此,如果您要删除所有个人文件,但又太多了,以至于无法方便地删除它们,那么恢复出厂设置仅是最方便的选择,并且您要保留应用程序,则可以将这些应用程序转换为系统应用程序,以使它们获胜。恢复出厂设置时不会被删除。
系统应用程序的另一个功能是它们使用公共系统库目录(通常是/ 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。