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 =trueenableV2Signing =trueenableV3Signing =trueenableV4Signing =truestoreFile = 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 trueshrinkResources true// 不显示LogbuildConfigField "boolean", "LOG_DEBUG", "false"proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-rules.pro'aaptOptions.cruncherEnabled = falseaaptOptions.useNewCruncher = falseapkName = "szyj.apk"signingConfig signingConfigs.release}release {
// minifyEnabled false//混淆minifyEnabled trueshrinkResources true// 不显示LogbuildConfigField "boolean", "LOG_DEBUG", "false"proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-rules.pro'aaptOptions.cruncherEnabled = falseaaptOptions.useNewCruncher = falseapkName = "szyj.apk"signingConfig signingConfigs.release}}