如何在android中创建系统应用程序

Posted

技术标签:

【中文标题】如何在android中创建系统应用程序【英文标题】:How to create System Apps in android 【发布时间】:2013-04-26 09:12:38 【问题描述】:

我想为无根应用程序创建一个系统应用程序(安装时会询问用户是否允许将其设置为系统应用程序)。由于我对android不熟悉,请告诉我如何创建它。

提前致谢。

【问题讨论】:

我不确定你能做到这一点。首先,您需要使用 Android 密钥对您的应用程序进行签名,并且由于您的手机未 root,我不知道您是否可以这样做 看这篇文章(androidauthority.com/…)。也许它会帮助你。 您的问题似乎自相矛盾。由于您告诉我们您不熟悉 Android,因此您必须在使用“系统应用程序”一词时准确说明其含义。例如,Android 上的 ios 开发人员肯定会对 Android 上的“系统应用”有完全不同的定义。 【参考方案1】:

真正的系统应用程序被烘焙到 ROM 映像中,并使用与 ROM 签名相同的密钥进行签名,从而为它们提供对系统的额外访问权限。

如果不更新设备的 ROM 映像,您就无法在同一级别上添加新的系统应用,即使这样,您也需要 OEM 密钥来签署您的应用,并且您必须要求他们将其包含在他们的 ROM 中.

拥有根设备允许标准应用获得额外访问权限,而无需成为系统应用。

【讨论】:

不完全正确。系统应用程序不需要需要在固件/ROM 中 - 它们可以像普通(非系统)应用程序一样安装。正如您所指出的,关键点是应用必须使用与固件应用签名相同的密钥进行签名。 @adelphus 但是如果像普通应用一样安装的话,也可以像iirc一样卸载。 它们可以被卸载,但这不一定是个问题。 (如果它们被正确地烘焙到 ROM 中,则只能卸载更新) @adelphus :(1)您是说如果应用程序使用与操作系统相同的密钥进行签名,那么即使它们驻留在数据/应用程序中,它们也像系统应用程序一样拥有所有权限? (2) 说,一旦我们用系统密钥签署了一个应用程序,我们有什么方法可以确认该应用程序真的成为了系统应用程序? @Basher51 (1) 是的。 (2)。要真正使应用程序以系统用户身份运行,您需要在应用程序的清单中指定 android:sharedUserId="android.uid.system" (当然,使用固件密钥对其进行签名)。确定应用程序是否实际作为系统运行的最简单方法是查看其在 logcat 消息中的 uid - 系统用户的 uid 始终为 1000。

以上是关于如何在android中创建系统应用程序的主要内容,如果未能解决你的问题,请参考以下文章

如何在 android 库中创建应用程序特定文件夹?

如何在 React Native 中创建 Android 即时应用程序?

如何使用mockito在安卓系统中创建模拟api响应[关闭]。

如何更改在 Google App Inventor 中创建的 android 应用程序的图标?

如何使用 asmack 在 android 中创建多用户聊天应用程序

如何在 android 中创建像 QuickPic 应用程序这样的裁剪工具?