【发布时间】:2020-04-10 21:05:19
【问题描述】:
我正在开发 Android 系统应用程序,这意味着我使用平台密钥对其进行签名并将其推送到“/system/priv-app”,但是当我使用“adb shell ps” 我发现用户是“u0_a40” 而不是“system”
谁能向我解释发生了什么以及我可以做些什么来与系统用户一起运行应用程序?
【问题讨论】:
标签: android embedded-linux android-source
我正在开发 Android 系统应用程序,这意味着我使用平台密钥对其进行签名并将其推送到“/system/priv-app”,但是当我使用“adb shell ps” 我发现用户是“u0_a40” 而不是“system”
谁能向我解释发生了什么以及我可以做些什么来与系统用户一起运行应用程序?
【问题讨论】:
标签: android embedded-linux android-source
AndroidManifest.xml 需要指定您的应用应该以system 用户身份运行:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.mysystemapp"
android:sharedUserId="android.uid.system"
coreApp="true">
为了完整起见,如果您想通过 Android.mk 文件将系统应用程序编译为 AOSP 构建过程的一部分,则需要将其放入 Android.mk:
LOCAL_PRIVILEGED_MODULE := true
LOCAL_CERTIFICATE := platform
这可确保应用以/system/priv-app 结尾并由平台密钥签名。
【讨论】:
实际上,您不需要将 coreApp="true" 添加到清单中,因为当应用程序需要在某些启动模式下运行时需要它,例如“安全模式”。 sharedUserId 和平台证书就足够了。
【讨论】: