参考文章
Android 如何获取系统签名 并使用系统签名_android 获取系统签名_菜鸟xiaowang的博客-CSDN博客
Android生成系统签名文件jks_ItJavawfc的博客-CSDN博客
Android查看、修改KeyAlias_keyalias是什么_lahhass的博客-CSDN博客
需要用到两个系统源文件
release/build/target/product/security/platform.pk8
release/build/target/product/security/platform.x509.pem
新建一个文件夹用于处理签名文件
在release文件夹下执行创建文件夹命令
mkdir signed_dir
将release文件夹下的这两个文件复制到新建的文件夹
在release文件夹下执行复制文件命令
cp -rf build/target/product/security/platform.pk8 signed_dir/
cp -rf build/target/product/security/platform.x509.pem signed_dir/
进入signed_dir文件夹
cd signed_dir/
接着在这个文件夹执行如下命令使用platform.pk8生成platform.pem文件,这时文件夹有了platform.pk8 platform.x509.pem platform.pem三个文件
openssl pkcs8 -inform DER -nocrypt -in platform.pk8 -out platform.pem
然后执行如下命令,使用刚才生成的platform.pem文件和platform.x509.pem文件生成第四个文件platform.pk12,执行后文件夹中有platform.pk8 platform.x509.pem platform.pem platform.pk12四个文件.另外输入这个命令会要求填写两次密码,调试用的话建议填写123456
openssl pkcs12 -export -in platform.x509.pem -inkey platform.pem -out platform.pk12 -name android_debug(这个android_debug是别名可以自定义,在app的gradle中配置签名文件时需要用到,是其中的keyAlias属性.在执行生成keystore签名文件命令时也需要用到,在执行生成jks文件命令时则不需要也能生成)
最后就是生成签名文件了,按照需要可以成keystore文件和jks文件
生成keystore文件
keytool -importkeystore -deststorepass test_name -destkeypass 123456(刚刚自己填写的密码) -destkeystore signed.keystore -srckeystore platform.pk12 -srcstoretype PKCS12 -srcstorepass 123456(刚刚自己填写的密码) -alias android_debug(这里是上一条命令命名的别名android_debug,前后不一致就无法生成xx.store文件)
生成jks文件:
keytool -importkeystore -deststorepass 12345678(自定义别名的密码) -destkeystore platform.jks(生成的签名文件名字) -srckeystore platform.pk12 -srcstoretype PKCS12 -srcstorepass 123456(刚刚自己填写的密码)
生成的jks文件如何修改别名
先使用如下命令查看别名
同样在signed_dir文件夹下执行keytool -list -v -keystore platform.jks(这是刚刚生成的签名文件) -storepass 12345678(别名对应的密码)
在前几行就能看到别名 我取的别名叫android
这是我这里的情况
/*
密钥库类型: PKCS12
密钥库提供方: SUN
您的密钥库包含 1 个条目
别名: android
创建日期: 2023年6月16日
条目类型: PrivateKeyEntry
证书链长度: 1
*/
修改别名命令,这个命令会要求输入签名文件密码,输入刚刚创建签名文件时添加的密码就行
keytool -changealias -keystore xxx.jks(签名文件) -alias 当前别名 -destalias 修改后的别名
app端使用签名文件
在src同级目录下创建signature文件夹并将签名文件放入
在编译配置的gradle中的android域下添加如下代码
signingConfigs {
release {
storeFile file("./signature/platform.jks")
storePassword '123456'
keyAlias 'android_debug'
keyPassword '123456'
}
debug {
storeFile file("./signature/platform.jks")
storePassword '12345678'//这个属性对应生成jks时最后一步生成文件的密码,是参数-deststorepass后的那个密码
keyAlias 'android_debug'
keyPassword '123456'//这个密码是platform.pk12生成时的密码 也是密钥的密码
}
}
即可使用该签名文件