You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Windows版Android Studio中让应用以android.uid.system运行的最简方案

让Android应用以system userId运行的最简方案

一、解决platform签名文件获取问题

Windows系统确实没有默认的platform.pk8和platform.x509.pem,这两个是Android开源项目(AOSP)的系统签名文件,不用特意搭建Linux+Android Studio编译环境,有两种更简便的获取方式:

  • 直接从AOSP源码的build/target/product/security目录提取,可单独克隆该目录或从可靠的公开镜像下载这两个文件
  • 如果是定制ROM,可从ROM包的system/etc/security目录提取相关签名文件,再转换为pk8和x509.pem格式

二、最简实现步骤(无需克隆完整AOSP、无需做成系统服务)

核心是给应用打上系统platform签名,并配置sharedUserId,具体步骤:

1. 生成系统签名的keystore

用openssl和keytool工具(需提前安装)执行以下命令:

  • 将pk8文件转换为PEM格式私钥:
    openssl pkcs8 -in platform.pk8 -inform DER -outform PEM -out platform.priv.pem -nocrypt
    
  • 生成PKCS12格式文件:
    openssl pkcs12 -export -in platform.x509.pem -inkey platform.priv.pem -out platform.p12 -name platform
    
  • 转换为Android可用的keystore:
    keytool -importkeystore -deststorepass android -destkeypass android -destkeystore platform.keystore -srckeystore platform.p12 -srcstoretype PKCS12 -srcstorepass android -alias platform
    
    (默认密码都是android,可自行修改)

2. 配置应用Manifest

在AndroidManifest.xml的<manifest>标签中添加:

android:sharedUserId="android.uid.system"

3. 用系统签名给应用打包

在Android Studio的app/build.gradle中配置签名信息:

signingConfigs {
    release {
        storeFile file("platform.keystore")
        storePassword "android"
        keyAlias "platform"
        keyPassword "android"
    }
}

buildTypes {
    release {
        signingConfig signingConfigs.release
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
}

之后直接构建release版本APK即可。

三、报错原因解析

你遇到的报错翻译为:

失败 [INSTALL_FAILED_SHARED_USER_INCOMPATIBLE: 无法将软件包安装到/data/app/de.blinkt.openvpn-1: 软件包de.blinkt.openvpn没有与共享用户android.uid.system匹配的签名;忽略!]

原因很明确:应用的签名和系统android.uid.system共享用户的签名不匹配,只有用系统原生的platform签名(和系统ROM使用的签名一致),才能成功使用该sharedUserId。

四、关于AOSP克隆与系统服务的疑问

不需要克隆完整AOSP,也不需要将应用构建为系统服务。只要给应用打上正确的系统platform签名,并配置android:sharedUserId="android.uid.system",应用就能以system userId运行,获得对应的系统级权限。只有当应用必须嵌入到系统分区(如/system/app)或需要作为系统守护进程运行时,才需要涉及AOSP编译或系统服务配置。

内容的提问来源于stack exchange,提问作者Danish Ilyas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 04:50:05