安卓系统应用 101

13

除了系统应用程序不能被卸载这一事实外,有人能解释一下Android系统应用程序相对于“普通”应用程序的好处吗?是否具备特殊权限?

3个回答

22

这里存在一些混淆。

首先,如果您所说的“系统应用程序”只是指设置了FLAG_SYSTEM标志的应用程序,那么这意味着该应用程序位于/system分区上,这是只读分区,基本上是设备固件。(它只能作为OTA固件更新的一部分进行修改。)这些应用程序之所以不能被删除,仅仅是因为它们位于不能被修改的分区上。

除此之外,系统应用程序的唯一特殊之处在于有少量签名权限也可以授予系统映像上的任何应用程序。例如,有一个权限可直接与包管理器交流以安装应用程序(无需通过系统UI),这对于预装在设备上的任何应用商店/市场都很有用。

使用平台证书签署是一个正交概念——这样的应用程序既可以位于系统镜像中,也可以作为第三方应用程序安装(虽然显然在几乎所有情况下这些应用程序都是预安装的)。这些应用程序可以访问与平台交互的整套低级权限。只有核心平台应用程序才会使用此证书进行签署。除非您正在与硬件供应商合作开发设备,否则您将无法访问此证书。

平台的所有证书(无论是对所有应用程序可用、要求应用程序使用平台证书进行签署,还是对安装在系统分区上的应用程序可用)都像任何其他应用程序一样在平台清单中声明:

https://android.googlesource.com/platform/frameworks/base/+/master/core/res/AndroidManifest.xml

我觉得这个答案已经过时了。当构建定制 rom 时,您应该能够使用平台证书对文件进行签名。还有提到的“低级函数”和系统应用程序可用的特殊权限列表吗? - Matthias Weiler
你可能还想查看https://dev59.com/6FzUa4cB1Zd3GeqPzhAX。 - Matthias Weiler

1

有些权限只能由系统应用程序获得。例如,permission brick 可以被每个应用程序请求,但只授予签名为系统应用程序的应用程序。还有一些其他功能,我认为直接安装和删除应用程序也应该是系统权限。


你知道在这样的权限列表中(只有系统应用程序可以使用吗)? - m88m

0
从您的解释中,我猜您指的是预安装的应用程序(如浏览器或消息应用程序)。您可以在这些应用程序中查看https://android.googlesource.com(搜索平台/包/应用程序/...)。
您会发现,这些应用程序与您自己定制开发的应用程序没有区别,除了您无法删除它们。它们不能被删除,因为它们提供了操作您的手机/设备的基本功能。因此,同样的安全约束也适用于它们。

你只有在固件中预装并使用“平台密钥”签名才能成为系统应用程序,对吗? - m88m
我认为你是从制造商的角度在谈论。我知道某些平板电脑制造商会预装Skype,而其他制造商由于市场限制可能不会预装。但这些可以再次删除,值得研究。我从未见过市场上提供系统应用程序下载的情况,那将是相当危险的安全风险。想想Janusz在下面提到的BRICK权限。 - Sebastian Roth
嗨!MobileDefense应用正在搞类似的事情(我猜!)在这里看看http://support.mobiledefense.com/viewtopic.php?id=569读一下最上面的声明:“我们将很快发布一个新的APK,自动化整个系统应用安装过程。”我想有一种方法...... - m88m

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接