Android keystore
一、keystore文件背景
签名有两个主要作用:
1.确定发布者身份。由于应用开发者可以通过使用相同的包名来替换已经安装的程序,因此使用签名可以避免发生这种情况。
2.确保应用的完整性。签名会对应用包中的每个文件进行处理,从而确保程序包中的文件不会被替换。
二、keystore签名文件生成
1. 通过Android studio生成keystore
1)点击Build->Generate Signed APK

2)弹出Android App Bundle和APK选项界面,其中Android App Bundle是Google新推出的动态发布方案,这种发布方式的App更小、安装更快,但目前最大的问题时仅支持Google Play,国内经常404,因此我们选择“APK”

3)点击Create New,新建签名文件

4)配置签名信息

2. 通过命令行生成keystore
具体命令如下:
keytool -genkeypair -alias east -keyalg RSA -validity 4000 -keystore east.jks

选项说明,可通过如下命令查看:
keytool -genkeypair -help
3. 查看keystore信息
打开命令行,进入签名 文件目录,输入如下命令:
keytool -list -keystore "east.jks"
三、对应用进行签名
1. build.gradle配置自动签名
1) 将签名文件east.jks拷贝到源码的app目录下;
2)配置app/build.gradle文件,具体修改如下:
android {
... ...
//自动签名
signingConfigs {
mySign {
keyAlias ’east’
keyPassword '123456'
storeFile file('./east.jks')
storePassword '123456'
}
}
buildTypes {
debug {
signingConfig signingConfigs.mySign
... ...
}
release {
signingConfig signingConfigs.mySign
... ...
}
}
... ...
}
2. 通过命令行对apk文件签名
1)jarsigner签名
jarsigner是JDK提供的针对jar包签名的通用工具,位于JDK/bin/jarsigner.exe,签名命令如下:
jarsigner -verbose -keystore east.jks -storepass 123456 -signedjar test-signed.apk test.apk east
2)apksigner签名
apksigner是Google官方提供的针对Android apk签名及验证的专用工具,apksigner.bat位于Android SDK的build-tools目录下。签名命令如下:
D:\tools\sdk\gradle\build-tools\29.0.1\apksigner.bat sign --ks east.jks --ks-key-alias east test.apk
3. 查看apk的签名信息
1)keytool,只支持V1签名校验。具体命令如下:
keytool -list -v -keystore east.jks
2)apksigner,支持V1和V2签名校验。具体命令如下:
D:\tools\sdk\gradle\build-tools\29.0.1\apksigner.bat verify -v --print-certs test-signed.apk
浙公网安备 33010602011771号