android:sharedUserId="android.uid.system"
那我需要用制造商的密钥对我的应用进行签名吗?我不确定,请问有人能够详细解释一下这个过程吗?
我的应用需要成为系统应用的原因是,让用户无法卸载它,但我的应用还需要更新。如果我的应用成为系统应用后,是否有可能像普通应用一样从Google Play更新呢?
非常感谢任何帮助,我在这个主题上找到的信息非常有限,所以会非常感激您的帮助。
android:sharedUserId="android.uid.system"
那我需要用制造商的密钥对我的应用进行签名吗?我不确定,请问有人能够详细解释一下这个过程吗?
我的应用需要成为系统应用的原因是,让用户无法卸载它,但我的应用还需要更新。如果我的应用成为系统应用后,是否有可能像普通应用一样从Google Play更新呢?
非常感谢任何帮助,我在这个主题上找到的信息非常有限,所以会非常感激您的帮助。
这里的链接会给你一些信息。
系统应用程序并不是由操作系统平台签名的应用程序。这是许多人所误解的常见错误,我们稍后会谈到这个问题。系统应用程序只是指放置在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放入系统文件夹中,然后它应该工作。
/system/priv-app
而不是/system/app
,则可以获得另一个好处:您现在拥有使用系统权限(如android.permission.SHUTDOWN
)的权利。这是与固件密钥签名的良好替代方案。以下是移动应用程序的方法:https://dev59.com/_3I-5IYBdhLWcg3wHUjP#30340018 - OneWorldjava –jar signapk.jar platform.x509.pem platform.pk8 your_app_unsigned.apk your_app_signed.apk
Kumar Bibek已经回答了您其他问题的答案。这是我在执行相同操作时遵循的步骤。这是在Android ICS中完成的。步骤可能已更改,但仍然值得一试。