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

22

我想创建一个系统应用程序(在安装时会询问用户权限,将其设置为系统应用程序),用于未root的应用程序。由于我对Android不熟悉,请告诉我如何创建它。

提前致谢。


3
我不确定你能够这么做。首先,你需要用 Android 密钥签署你的应用程序,而且由于你的手机未经 root 处理,我不知道你是否有能力这样做。 - edoardotognoni
看看这篇文章(http://www.androidauthority.com/install-user-app-as-system-app-how-to-93522/),或许能帮到你。 - Alexey Odintsov
1
你的问题似乎有矛盾之处。因为您告诉我们您不熟悉Android,所以在使用“系统应用程序”这个术语时,您必须明确指定其确切含义。例如,在Android上的iOS开发人员肯定会对“系统应用程序”的定义完全不同于在Android上的定义。 - Stephan Branczyk
1个回答

35

真正的系统应用程序已经预置在ROM镜像中,并使用与ROM相同的密钥进行签名,从而赋予它们对系统的额外访问权限。

您无法在同一级别上添加新的系统应用程序,除非更新设备的ROM镜像,即使如此,您也需要OEM密钥来签署您的应用程序,并且您必须请求他们将其包含在他们的ROM中。

拥有Root权限的设备允许标准应用程序获得额外的访问权限,而不必成为系统应用程序。


23
并不完全正确。系统应用程序不一定需要在固件/ROM中 - 它们可以像普通(非系统)应用程序一样安装。正如您所指出的那样,关键点在于该应用程序必须使用与固件应用程序签名相同的密钥进行签名。 - adelphus
@adelphus 但如果它们像普通应用程序一样安装,那么据我所知也可以通过相同的方式卸载。 - Raghav Sood
2
它们可以被卸载,这并不一定是个问题。(如果它们被正确地嵌入到ROM中,只有更新才能被卸载) - Delyan
你好,我正在考虑这样做:1)以编程方式获取手机的Root权限;2)将apk安装在System/apps文件夹中;3)取消设备的Root权限。这种方法可行吗?我需要制作一个默认应用程序,它永远不会从设备上卸载。请分享任何可能实现此目标的方法。谢谢。 - Hardik Joshi
3
@Basher51 (1) 是的。(2) 如果要将应用程序真正运行为系统用户,则需要在应用程序的清单中指定android:sharedUserId="android.uid.system"(当然,还需要使用固件密钥进行签名)。确定应用程序是否实际上正在以系统身份运行的最简单方法是查看其在logcat消息中的UID - 系统用户始终具有1000的UID。 - adelphus
显示剩余3条评论

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