写在前面
今天郭霖老师推送了一篇文章,就如题目说的,看了之后发现有不少学习的地方,想起以前没有这个意识,每次打包都是导入key什么的,现在看来还可以更快。
创建钥匙
如果早先没有钥匙的话,我们这里先生成jks,也就是以前的keystore,选择“Build”——“Generate Sign APK”,然后创建新的钥匙。
然后点击“OK”即创建完毕。
生成签名APK
它这里有两种方法,一种就是我以前常用的,每次打包都通过“Build”——“Generate Sign APK”去选择jks然后填写信息来打包,这种就属于**“手动”;另外一种则是配置build.gradle来达到一劳永逸,更加高效的目的,应该算是“自动”**。
手动
这个我就不多写了,通过Build”——“Generate Sign APK”,选择钥匙,然后填写相关信息去生成,按照提示一步步做即可:
自动
配置自动签名
- 在“File”——“Project Structure”里选择我们的“app”,然后在“Signing”里添加我们的钥匙。
- 填写相关信息
- 为“Build Type”构建类型添加签名配置*(在默认的debug模式下,是已经有签名配置了,而这里我们使用的是自己的类型,所以需要为它指定签名配置,否则会报出没有签名配置的错误。)*:
- 选择“OK”,我们就可以在同步后的“build.gradle”文件里看到写好的配置:
- 当我们类似如此根据不同的类型配置好了不同的签名后,以后我们只需要通过选择不同的类型进行Build APK即可,就不用再去填写什么签名信息了。
选择“Build”——“Select Build Variant”,然后在下拉里选择我们的构建变量,Android Studio会自动为我们进行切换构建:
- 最后我们只要点击“Build”——“Build APK”即可生成我们要的类型:
隐藏签名信息
我们看到在build.gradle文件里有签名的信息,如果不需要被别人看到的话也可以对其进行隐藏:
- 创建属性文件(如“keystore.properties”),可以在当前module下创建一个属性文件用来存放钥匙的信息:
keyAlias = edao_jd
keyPassword = android
storeFile = D:/edao_jd_keystore.jks
storePassword = android
- 从build.gradle里读取文件内容,重新填上即可:
Properties keystoreProperties = new Properties()
keystoreProperties.load(file("keystore.properties").newDataInputStream())
android {
signingConfigs {
release {
storeFile file(keystoreProperties.getProperty('release.keyFile'))
storePassword keystoreProperties.getProperty('release.storePassword')
keyAlias = keystoreProperties.getProperty('release.keyAlias')
keyPassword keystoreProperties.getProperty('release.keyPassword')
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
}
}
- 最后要做的是不要把keystore.properties文件提交svn,git之类的即可,只是我们本地使用。