一、使用命令签名
这种方式不需要系统源码编译环境,可以直接对 apk 文件进行签名。
1、获取系统签名文件
首先,从系统源码环境中获取制作系统签名所需相关文件,在 build/target/product/security/ 下的 platform.pk8 和 platform.x509.pem。获取 signapk.jar,在 /out/host/linux-x86/framework/ 下。
2、使用命令进行签名
bash
java -jar signapk.jar platform.x509.pem platform.pk8 你的应用.apk 签名后的应用名.apk
二、使用 Studio 签名
1、制作签名文件
制作签名文件同样需要用到上面的相关文件 platform.pk8 和 platform.x509.pem。
1)将pkcs8格式的私钥 platform.pk8 转化成 pkcs12格式。
bash
openssl pkcs8 -in platform.pk8 -inform DER -outform PEM -out shared.priv.pem -nocrypt
2)把公钥 platform.x509.pem 转换成 pkcs12 格式,并指定 密钥别名。
openssl pkcs12 -export -in platform.x509.pem -inkey shared.priv.pem -out shared.pk12 -name 密钥别名
3)生成指定 密钥名称 的密钥文件。
bash
keytool -importkeystore -srckeystore shared.pk12 -srcstoretype pkcs12 -srcstorepass 密钥密码 -alias 密钥别名 -deststorepass 密钥密码 -destkeypass 密钥密码 -destkeystore 密钥名称 -deststoretype pkcs12
2、配置签名脚本
这里直接将签名文件放到了 app 目录下,
bash
android {
...
defaultConfig {
...
}
signingConfigs {
release {
storeFile file("platform.keystore")
storePassword '123456'
keyAlias 'platform'
keyPassword '123456'
}
debug {
storeFile file("platform.keystore")
storePassword '123456'
keyAlias 'platform'
keyPassword '123456'
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
debug {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.debug
}
}
...
}
在xml中添加系统属性
bash
android:sharedUserId="android.uid.system"