Android系统应用信息

14
我想了解有关系统应用程序的一般信息。我正在与一家制造商合作,他愿意提供必要的信息,使我的应用程序成为系统应用程序。但是,我不知道这些信息应该是什么,以及如何根据给定的信息更改我的应用程序,使其成为系统应用程序。我认为我需要在我的清单文件中添加类似于以下内容的内容。
android:sharedUserId="android.uid.system"

那我需要用制造商的密钥对我的应用进行签名吗?我不确定,请问有人能够详细解释一下这个过程吗?

我的应用需要成为系统应用的原因是,让用户无法卸载它,但我的应用还需要更新。如果我的应用成为系统应用后,是否有可能像普通应用一样从Google Play更新呢?

非常感谢任何帮助,我在这个主题上找到的信息非常有限,所以会非常感激您的帮助。


有人知道吗? - alexward1230
2
所有位于系统分区内的应用程序都将被视为系统应用程序,无需在应用程序中实现任何特定功能或实现,只需将apk放置在system/app文件夹中即可。为此,您需要Root访问权限。如果您计划发布带有设备的应用程序,则设备制造商将在重新销售设备之前将您的应用程序放置在特定文件夹中。 - CoolMonster
3个回答

13

这里的链接会给你一些信息。

系统应用程序并不是由操作系统平台签名的应用程序。这是许多人所误解的常见错误,我们稍后会谈到这个问题。系统应用程序只是指放置在Android设备的/system/app文件夹下的应用程序。只有当我们可以访问操作系统的ROM(system.img)时,才能将应用程序安装在该文件夹中。ROM提取完成后,应用程序会被放置在/app文件夹下。加载自定义ROM的设备将添加新的系统应用程序。系统应用程序的好处在于其无法从设备中删除(用户无法卸载),这仅因为/system/app是只读文件夹。

http://ricston.com/blog/explaining-behavior-android-application-system-apps-nonsystem-apps/

至于通过Play商店更新您的应用程序,我假设如果应用程序已经在Play商店上,并且每次使用相同的签名,那么您应该可以毫无问题地这样做。它不需要是制造商证书,但最好使用该证书来签署您的应用程序。

因此,您唯一需要确保的事情就是,在构建ROM时,制造商将您的apk放入系统文件夹中,然后它应该工作。


该链接导致的页面仅显示 PHP 错误 ;( - OneWorld
1
如果您将apk移动到/system/priv-app而不是/system/app,则可以获得另一个好处:您现在拥有使用系统权限(如android.permission.SHUTDOWN)的权利。这是与固件密钥签名的良好替代方案。以下是移动应用程序的方法:https://dev59.com/_3I-5IYBdhLWcg3wHUjP#30340018 - OneWorld

5
  1. 使用mkkey.sh脚本 http://www.kandroid.org/online-pdk/guide/release_keys.html 来创建新的证书,包括x509证书。如果制造商已经提供了密钥,则您不需要执行此步骤。
  2. 在您的应用程序的AndroidManifest.xml文件中:在元素下添加属性 android:sharedUserId=”android.uid.system”
  3. 使用eclipse导出您的Android应用程序的未签名版本。 Project >> Android Tools >> Export Unsigned Application Package
  4. 使用/build/target/product/security/中生成的platform.x509.pem和platform.pk8来使用/out/host//framework/signapk.jar对您的应用程序进行签名

java –jar signapk.jar platform.x509.pem platform.pk8 your_app_unsigned.apk your_app_signed.apk

Kumar Bibek已经回答了您其他问题的答案。这是我在执行相同操作时遵循的步骤。这是在Android ICS中完成的。步骤可能已更改,但仍然值得一试。


好的,我已经完成了所有这些步骤,并执行了adb安装,但仍然无法su。它显示uid 1000不允许su。也许我需要以某种方式将其安装到系统文件夹中,而不仅仅是通过adb安装? - djdance
如果您可以访问根文件系统的系统文件夹,请将其复制到system/app文件夹并重新启动。我不确定所有这些是否仍然有效。在ICS之后,许多事情都发生了变化,例如添加了SELinux等安全功能。 - digitizedx
移动到/system,不起作用。我认为su非常老旧。有趣的是,我可以自己物理替换su吗? - djdance
不是系统文件夹,而是/system/app文件夹。至少我们过去是这样做的。我猜你的手机已经root了,并且你正在尝试从Android应用程序中运行su。 - digitizedx
嗨,有没有办法创建这些密钥? - Gevaria Purva
我不再在此平台上工作了。这是6年前的事情。我不确定现在是否仍然有效。我认为你可以使用openssl命令来创建密钥和证书对。 - digitizedx

2
自从Android O(奥利奥)版本开始,你需要使用开发密钥签署系统应用程序,而不像以前的版本可以直接将它们复制到过去不同的系统文件夹中。

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