1 在Linux环境中,以Android源码目录为根目录
cd build/target/product/security/
2. 生成临时文件platform.pem
openssl pkcs8 -inform DER -nocrypt -in platform.pk8 -out platform.pem
3. 在目录下生成platform.p12文件,它本质上应该就是一个数字证书。
脚本如下:
openssl pkcs12 -export -in platform.x509.pem -out platform.p12 -inkey platform.pem -password pass:[jks的别名的密码] -name [jks的别名]
解释一下参数的意思:
1. -export:这个选项指定了一个PKCS#12文件将会被创建。
2. -in filename:指定私钥和证书读取的文件,默认为标准输入。必须为PEM格式。
3. -out filename:指定输出的pkcs12文件,默认为标准输出。
- -inkey filename:指定私钥文件的位置。如果没有被指定,私钥必须在-in filename中指定。
- -name name:指定证书以及私钥的友好名字。当用软件导入这个文件时,这个名字将被显示出来。
例如我的
openssl pkcs12 -export -in platform.x509.pem -out platform.p12 -inkey platform.pem -password pass:123456 -name hoyouly
5. 生成 eclipse和AS都识别 platform.jks
脚本如下
keytool -importkeystore -deststorepass [jks的密码] -destkeystore ./[jks文件] -srckeystore ./platform.p12 -srcstoretype PKCS12 -srcstorepass [jks的别名的密码]
解释一下参数的意思:
- -destkeystore <目标密钥库>
- -deststorepass <目标存储库口令>
- -srckeystore <源密钥库>
- -srcstoretype <源存储类型>
- -srcstorepass <源存储库口令>
例如我的脚本:
keytool -importkeystore -deststorepass 123456 -destkeystore ./hoyouly.jks -srckeystore ./platform.p12 -srcstoretype PKCS12 -srcstorepass 123456
6 配置gradle(app)
android {
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
applicationId "com.hoyouly.demo"
minSdkVersion 15
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
signingConfigs {
release {
storeFile file("../SignAPK/hoyouly.jks") //相对于本文件的路径
storePassword '123456' //密码
keyAlias 'hoyouly' //别名
keyPassword '123456' //别名密码
}
debug {
storeFile file("../SignAPK/hoyouly.jks")
storePassword '123456'
keyAlias 'hoyouly'
keyPassword '123456'
}
}
}