签名文件keystore一般有两种:jks后缀或者keystore后缀,Android Studio中创建的为jks后缀,keytool创建的为keystore后缀,两种文件均可用于APP打包。
开发版SHA1:是指在开发调试时,从Android Studio或者Eclipse中直接运行的APP在打包时使用了开发工具默认的开发版(debug)签名文件,开发版签名文件对应有唯一的SHA1。一般开发版签名文件是C:\Users\surface.android\debug.keystore,默认无密码。
发布版SHA1:是指在提交测试或发布时,APP签名打包过程中选择的指定签名文件,一般此签名文件为开发者或者开发团队持有,与具体的开发工具无关,发布版签名文件同样也对应有唯一的SHA1。
Keytool.exe工具一般位于JDK的安装路径bin目录下。例如:D:\Program Files\java\jdk1.8.0_3011\bin,通过cmd进入。
简单用法:keytool -genkey -keystore D:\keys
详解:
keytool -genkey -alias com.nw.amap -keyalg RSA -validity 200000 -keystore D:\keys
命令说明:
-genkey参数表示:要生成一个证书(版权、身份识别的安全证书)
-alias 别名(一般我使用的是包名):com.nw.amap
-keyalg 秘钥算法:RSA
-validity 有效期:200000表示有效时间200000天
-keystore 存储路径:D:\keys
-keypass 表示别名秘钥
-storepass 表示签名秘钥
警告:
使用的 SHA1withRSA 签名算法被视为存在安全风险。此算法将在未来的更新中被禁用。
JKS 密钥库使用专用格式。建议使用 "keytool -importkeystore -srckeystore d:\keys\com.nw.amap -destkeystore d:\keys\com.nw.amap -deststoretype pkcs12" 迁移到行业标准格式 PKCS12。
用keytool生成签名文件后,使用上面的命令迁移到行业标准格式PKCS12。
在项目中使用签名文件,在build.gradle中的android项写入
//签名信息
signingConfigs {
signApp {
storeFile file('../mvpmagic.keystore')
storePassword "123456"
keyAlias "com.nw.amap"
keyPassword "123456"
}
}
buildTypes {
release {
debuggable false
minifyEnabled true
signingConfig signingConfigs.signApp
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
debug {
debuggable true
minifyEnabled false
signingConfig signingConfigs.signApp
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
查看签名文件中的信息(MD5、SHA256等)
keytool -list -v -keystore d:\keys\key.keystore