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