在应用程序的AndroidManifest.xml中的manifest节点中加入android:sharedUserId=”android.uid.system”这个属性时,需要加入系统签名才可以直接安装,否则报错INSTALL_FAILED_SHARED_USER_INCOMPATIBLE
。
系统签名方式1
修改Android.mk文件,加入LOCAL_CERTIFICATE := platform这一属性
系统签名方式2
签名命令
java -Djava.library.path="out/host/linux-x86/lib64" -jar out/host/linux-x86/framework/signapk.jar build/target/product/security/platform.x509.pem build/target/product/security/platform.pk8 unsign_app.apk sign_app.apk
- signapk工具
out/host/linux-x86/framework/signapk.jar - 密钥文件
build/target/product/security/platform.x509.pem
build/target/product/security/platform.pk8 - 未签名apk:unsign_app.apk
- 签名的apk:sign_app.apk
注意事项
- 命令中的文件都要使用绝对路径,否则会出现各种错误
fangjian@PS2020KDZVZTZQ:/home/fangjian/signed$ java -jar signapk.jar -w platform.x509.pem platform.pk8 unsign_app.apk sign_app.apk
Exception in thread "main" java.lang.UnsatisfiedLinkError: org.conscrypt.NativeCrypto.get_cipher_names(Ljava/lang/String;)[Ljava/lang/String;
- 出现的第二种错误,添加这个
-Djava.library.path="out/host/linux-x86/lib64"
解决
fangjian@u123:/home3/fangjian/LA.UM.5.6$ java -jar out/host/linux-x86/framework/signapk.jar build/target/product/security/platform.x509.pem build/target/product/security/platform.pk8 unsign_app.apk sign_app.apk
Exception in thread "main" java.lang.UnsatisfiedLinkError: no conscrypt_openjdk_jni in java.library.path