2014-03-31 177 views
12

我想了解一些有关系统应用程序的一般信息。我正在和一个制造商合作,他愿意为我提供制作应用程序所需的信息。但是,我不确切知道这些信息应该是什么以及如何通过我的应用程序进行更改,以使其成为具有给定信息的系统应用程序。我相信我需要我这样的清单中的东西Android系统应用程序信息

android:sharedUserId="android.uid.system" 

然后我需要使用制造商密钥签署我的应用程序?我不确定有人可以向我解释究竟该怎么办?

此外,我的应用程序需要是系统应用程序的原因是,用户无法卸载它,但我的应用程序仍然需要更新。当它是系统应用程序时,是否可以更新我的应用程序?我会更新如果从谷歌播放正常。

感谢您的任何帮助,我根本无法找到关于此主题的很多信息,并希望得到帮助。

+0

...........有人知道吗? – alexward1230

+2

系统分区内的所有应用程序都会考虑为系统应用程序,不需要任何特定的功能或者在应用程序中实现,只需将apk内的system/app文件夹就够了,为此你需要root权限,如果你打算发布该设备的应用程序,然后设备制造商将您的应用程序放置在特定的文件夹中,然后再销售设备。 – CoolMonster

回答

11

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

系统应用程序不是由操作系统的 平台签名签名的应用程序。这是很多人认为的常见错误,我们将在稍后介绍。系统应用程序仅仅是一个 应用程序,它位于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文件放入系统文件夹中,并且它应该可以正常工作。

+0

链接导致只显示PHP错误的页面;( – OneWorld

+1

如果您将apk移至'/ system/priv-app'而不是'/ system/app',您将获得另一个好处:您现在有权使用系统权限如'android.permission.SHUTDOWN'。这是使用固件密钥进行签名的好方法。下面介绍如何移动应用程序:https://stackoverflow.com/questions/2007024/push-my-apk-to-system- app/30340018#30340018 – OneWorld

3
  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应用程序版本。 项目>> Android工具>>导出未签名应用程序包
  4. 使用/out/host//framework/signapk.jar在/ build/target/product/security中使用platform.x509.pem和platform.pk8签署您的应用程序/早先生成

java -jar signapk。jar platform.x509.pem platform.pk8 your_app_unsigned.apk your_app_signed.apk

Kumar Bibek已经给出了一些其他问题的答案。当我必须这样做时,这些是我遵循的步骤。这是在Android ICS中完成的。这些步骤可能已经改变,但仍值得一试。

+0

好吧,我已经完成了所有这些工作,并且安装了adb,但仍然无法运行,它说uid 1000不允许su。也许我需要以某种方式安装到系统文件夹,而不仅仅是adb安装? – djdance

+0

如果你有权访问根文件系统的系统文件夹,复制到系统/应用程序文件夹并重新启动,我不确定是否所有这些工作都已经完成,很多事情在ICS之后改变了,比如SELinux等增加了安全性 – digitizedx

+0

已移动to/system,not work。我认为su很有用。有趣的是,我可以自己更换su吗? – djdance

1

由于Android O(奥利奥),您需要使用开发密钥签署系统应用程序,与以前的版本不同,您可以将它们复制到过去不同的系统文件夹中。