Android系统签名的制作涉及到使用Java密钥库(Java Keystore)格式的文件来存储签名信息。
场景:要求基于系统方案商提供了的Android系统进行产品开发
提供内容:Android 系统,系统签名(.pk8,.pem)
,接口文档等等
文章重点:
1.使用signapk.jar
和相关文件来生成签名
2.如何把.pk8
、.pem
这样的系统签名文件生成 app 开发过程中build.gradle
可使用的 storeFile ?
- 获取系统签名文件
- 从系统源码环境中获取制作系统签名所需的相关文件,通常在
build/target/product/security/
目录下,可以找到platform.pk8
和platform.x509.pem
这两个文件 - 获取
signapk.jar
,它通常位于/out/host/linux-x86/framework/
目录下
- 从系统源码环境中获取制作系统签名所需的相关文件,通常在
- 制作签名 app
- 使用
signapk.jar
和相关文件来生成签名
运行命令java -jar signapk.jar platform.x509.pem platform.pk8 xxx.apk xxx_sign.apk
来签名APK文件 - 使用 jks 制作签名 app
-
storeFile 制作
@echo 即将为您把系统签名转成 APP 可用的 .jks 签名文件 set sys_pk8="D:\xxx\xxx\platform.pk8" set sys_x509_pem="D:\xxx\xxx\platform.x509.pem" set out_name=sign_debug.jks set out_alias="signdebug" set out_password=123456 set openssl="D:\xxx\xxx\Git\usr\bin\openssl.exe" set keytool="D:\xxx\xxx\Java\jre1.8.0_251\bin\keytool.exe" @echo 正在使用 Git 的 openssl 将 pk8 解密为 pem 文件, 此时将会生成一个 signdebug.pem 文件 %openssl% pkcs8 -inform DER -nocrypt -in %sys_pk8% -out signdebug.pem ::将两个pem 文件导入 platform.p12 文件中, ::并设置 别名(keyAlias)为:signdebug 和 密码(keyPassword)为:123456 (别名和密码可自定义),且同时会新生成 platform.p12 %openssl% pkcs12 -export -in %sys_x509_pem% -inkey signdebug.pem -out platform.p12 -password pass:%out_password% -name %out_alias% ::使用 keytool 将之前生成的 platform.p12 导入 sign_debug.jks 签名中,并设置 storePassword 密码(123456) ::此时需要正确提供 keyPassword 密码 ::此时即生成了需要的 sign_debug.jks 签名文件 %keytool% -importkeystore -deststorepass 123456 -destkeystore %out_name% -srckeystore platform.p12 -srcstoretype PKCS12 -srcstorepass %out_password% ::查看生成的 签名信息 %keytool% -list -v -keystore %out_name% pause
-
build.gradle 配置
android { compileSdkVersion 30 buildToolsVersion "30.0.2" defaultConfig { applicationId "com.itaso.xxx" minSdkVersion 23 targetSdkVersion 30 versionCode 1 versionName "1.0.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" signingConfigs { debug { storePassword 'storePassword' keyAlias 'keyAlias' keyPassword 'keyPassword' storeFile file('../xxx.keystore') } release { storePassword 'storePassword' keyAlias 'keyAlias' keyPassword 'keyPassword' storeFile file('../xxx.keystore') } sign_debug{ storePassword '123456' keyAlias 'signdebug' keyPassword '123456' storeFile file('../sign_debug.jks') } } } 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.sign_debug } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } } ......
-
- 使用