除了系统应用程序不能被卸载这一事实外,有人能解释一下Android系统应用程序相对于“普通”应用程序的好处吗?是否具备特殊权限?
这里存在一些混淆。
首先,如果您所说的“系统应用程序”只是指设置了FLAG_SYSTEM标志的应用程序,那么这意味着该应用程序位于/system分区上,这是只读分区,基本上是设备固件。(它只能作为OTA固件更新的一部分进行修改。)这些应用程序之所以不能被删除,仅仅是因为它们位于不能被修改的分区上。
除此之外,系统应用程序的唯一特殊之处在于有少量签名权限也可以授予系统映像上的任何应用程序。例如,有一个权限可直接与包管理器交流以安装应用程序(无需通过系统UI),这对于预装在设备上的任何应用商店/市场都很有用。
使用平台证书签署是一个正交概念——这样的应用程序既可以位于系统镜像中,也可以作为第三方应用程序安装(虽然显然在几乎所有情况下这些应用程序都是预安装的)。这些应用程序可以访问与平台交互的整套低级权限。只有核心平台应用程序才会使用此证书进行签署。除非您正在与硬件供应商合作开发设备,否则您将无法访问此证书。
平台的所有证书(无论是对所有应用程序可用、要求应用程序使用平台证书进行签署,还是对安装在系统分区上的应用程序可用)都像任何其他应用程序一样在平台清单中声明:
https://android.googlesource.com/platform/frameworks/base/+/master/core/res/AndroidManifest.xml有些权限只能由系统应用程序获得。例如,permission brick 可以被每个应用程序请求,但只授予签名为系统应用程序的应用程序。还有一些其他功能,我认为直接安装和删除应用程序也应该是系统权限。