有人可以向我解释一下Android系统应用程序相对于“普通”应用程序有什么好处 (除了无法卸载系统应用程序的事实)? 特殊权限?
答案 0 :(得分:22)
这里有一些混乱。
首先,如果您所说的“系统应用程序”只是设置了FLAG_SYSTEM,那么这一切都意味着应用程序位于/ system分区,这是一个只读分区,基本上是固件装置。 (它只能作为OTA固件更新的一部分进行修改。)这些应用程序无法删除,因为它们位于无法修改的分区上。
除此之外,系统应用程序的唯一特殊之处在于,还有一些签名权限也可以授予系统映像上的任何应用程序。例如,有权直接与软件包管理器通信以安装此应用程序可以拥有的应用程序(无需通过系统UI);这对于预先加载到设备上的任何应用商店/市场非常有用。
使用平台证书进行签名是一个正交的概念 - 这样的应用程序既可以在系统映像上,也可以作为第三方应用程序安装(尽管几乎在所有情况下都预先安装了这些应用程序)。此类应用程序可以访问一整套低级权限,以便与平台进行交互。很少有应用程序使用此证书签名;它仅适用于核心平台应用程序。除非您在设备上与硬件供应商合作,否则您将无法访问此设备。
所有平台的证书(无论是否可供所有应用程序使用,需要使用平台证书签名的应用程序,或者系统分区上安装的应用程序可用)均由平台清单声明,就像任何其他应用程序一样:
https://android.googlesource.com/platform/frameworks/base/+/master/core/res/AndroidManifest.xml
答案 1 :(得分:1)
只有系统应用才能获得权限。例如,每个应用都可以请求permission brick,但它仅授予作为系统应用签名的应用。还有一些其他功能更有意义我认为直接安装和删除应用程序也只是系统权限。
答案 2 :(得分:0)
根据您的解释,我猜您的意思是预安装的应用程序(如浏览器或消息应用程序)。您可以在https://android.googlesource.com查看这些应用。 (搜索平台/ packages / apps /...).
您会发现这些应用程序与您自定义开发的应用程序没有区别,除非您无法删除它们。它们无法移除,因为它们提供了操作手机/设备的基本功能。因此,同样的安全限制适用于那里。