1. Android签名证书(.keystore)
Android平台打包发布apk应用,需要使用数字证书(.keystore文件)进行签名,用于表明开发者身份。
Android证书的生成是自助和免费的,不需要审批或付费。
可以使用JRE环境中的keytool命令生成。以下是windows平台生成证书的方法
1.1. 生成签名证书
使用cmd命令生成证书:
keytool -genkey -alias testalias -keyalg RSA -keysize 2048 -validity 36500 -keystore testalias.keystore
testalias是证书别名,可修改为自己想设置的字符,建议使用英文字母和数字
test.keystore是证书文件名称,可修改为自己想设置的文件名称,也可以指定完整文件路径
36500是证书的有效期,表示100年有效期,单位天,建议时间设置长一点,避免证书过期
Enter keystore password: //输入证书文件密码,输入完成回车
Re-enter new password: //再次输入证书文件密码,输入完成回车
What is your first and last name?
[Unknown]: //输入名字和姓氏,输入完成回车
What is the name of your organizational unit?
[Unknown]: //输入组织单位名称,输入完成回车
What is the name of your organization?
[Unknown]: //输入组织名称,输入完成回车
What is the name of your City or Locality?
[Unknown]: //输入城市或区域名称,输入完成回车
What is the name of your State or Province?
[Unknown]: //输入省/市/自治区名称,输入完成回车
What is the two-letter country code for this unit?
[Unknown]: //输入国家/地区代号(两个字母),中国为CN,输入完成回车
Is CN=XX, OU=XX, O=XX, L=XX, ST=XX, C=XX correct?
[no]: //确认上面输入的内容是否正确,输入y,回车
Enter key password for <testalias>
(RETURN if same as keystore password): //确认证书密码与证书文件密码一样(HBuilder|HBuilderX要求这两个密码一致),直接回车就可以
以上命令运行完成后就会生成证书,路径为生成路径。
注意:上述信息填写要规范,乱填有可能会影响应用上架应用市场。
1.2. 查看证书信息
keytool -list -v -keystore testalias.keystore
Enter keystore password: //输入密码,回车
2. 配置指定的签名文件
2.1. Android studio给项目工程配置指定的签名文件
项目只要打包生成Apk时,一定是需要签名文件的,当我们打debug包时只不过是默认的用了系统给的签名文件而已,如果我们想给自己的项目指定特定的签名文件改如何呢?
步骤:【File→Project Structure→Moduls→app→Signing Configs】(快捷键Ctrl+Shift+Alt+S)
查看build.gradle中多了:
signingConfigs {
getByName("debug") {
enableV1Signing =true
enableV2Signing =true
enableV3Signing =true
enableV4Signing =true
storeFile = file("./keystore/insour_szyj.keystore")
storePassword = "insour_szyj"
keyAlias = "insour_szyj"
keyPassword = "insour_szyj"
}
}
2.2. 给相应的包配置对应的签名文件,debug或者release包:
查看build.gradle中多了:
buildTypes {
debug {
// minifyEnabled false//混淆
minifyEnabled true
shrinkResources true
// 不显示Log
buildConfigField "boolean", "LOG_DEBUG", "false"
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
aaptOptions.cruncherEnabled = false
aaptOptions.useNewCruncher = false
apkName = "szyj.apk"
signingConfig signingConfigs.release
}
release {
// minifyEnabled false//混淆
minifyEnabled true
shrinkResources true
// 不显示Log
buildConfigField "boolean", "LOG_DEBUG", "false"
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
aaptOptions.cruncherEnabled = false
aaptOptions.useNewCruncher = false
apkName = "szyj.apk"
signingConfig signingConfigs.release
}
}