keytool-importkeypair 下载地址

https://github.com/getfatday/keytool-importkeypair

前言

app 的 AndroidManifest.xml里有

android:sharedUserId=”android.uid.system”

添加这个属性就会有系统app同等的权限,修改系统时间啊,调用隐藏方法啊,系统关机重启啊,静默安装升级卸载应用等系统级app所有的权限

在AndroidStudio开发中需要用到系统签名 platform.pk8 和 platform.x509.pem

android原生的 目录下 build/target/product/security
fsl的目录 device/fsl/common/security

使用 keytool-importkeypair生成keystore

1 root@jason:/home/jason/tools/keytool-importkeypair-master# ./keytool-importkeypair -k ./platform.keystore -p ljs123 -pk8 platform.pk8 -cert platform.x509.pem -alias platform
2 Importing “platform” with SHA1 Fingerprint=3E:0C:AF:3D:79:9F:BA:EC:56:6F:AC:BE:1A:67:FB:25:0B:DE:FD:93
3 正在将密钥库 /tmp/keytool-importkeypair.3dse/p12 导入到 ./platform.keystore…
4 已成功导入别名 platform 的条目。
5 已完成导入命令: 1 个条目成功导入, 0 个条目失败或取消

6

7 Warning:
8JKS 密钥库使用专用格式。建议使用 “keytool -importkeystore -srckeystore ./platform.keystore -destkeystore ./platform.keystore -deststoretype pkcs12” 迁移到行业标准格式 PKCS12。

AS 中 Build->Generate Signed APK

%title插图%num

生成的APK 目录:

AndroidStudioProjects/JniDemo01/app/build/outputs/apk/

 

 

*近在做一个FOTA项目,在AndroidManifest.xml文件中有如下属性

android:sharedUserId=”android.uid.system”
在android studio中编译出来apk就是安装不上,报如下错误

INSTALL_FAILED_SHARED_USER_INCOMPATIBLE
看来是要系统的签名, 但是 由于客户lib库使用了自己扩展android SDK版本,没法放在我们的源码里面编译; 后来google了下,发现可以让android studio支持系统签名,这就用到了keytool-importkeypair ,

github地址

 

https://github.com/getfatday/keytool-importkeypair
使用起来也比较的简单,找到系统的 platform.pk8 和 platform.x509.pem 放在 keytool-importkeypair目录下执行:

./keytool-importkeypair -k ./platform.keystore -p android -pk8 platform.pk8 -cert platform.x509.pem -alias platform
修改 build.gradle 再次编译即可

signingConfigs {
releaseConfig {
keyAlias ‘platform’
keyPassword ‘android’
storeFile file(‘/home/gyniu/tools/keystore/platform.keystore’)
storePassword ‘android’
}
}

这样就不报错了。