上篇博客讲了如何自动生成多环境的包,但是现在生成的apk除了debug之外都是unsign的.也是没有签名.还需要对jar包重新进行一次签名.比较费时,其它时gradle已经可以实现在生成apk时自动签名.只是需要手动配置一下.流程也不复杂.只需要在修改一下build.gradle文件
在build.gradle的adnroid层级中,加入如下配置
signingConfigs { debugConfig { storeFile file("yourDebugApp.keystore") storePassword "your password" keyAlias "your alias" keyPassword "your password" } testConfig { storeFile file("yourTestApp.keystore") storePassword "your password" keyAlias "your alias" keyPassword "your password" } releaseConfig { storeFile file("yourRelaseApp.keystore") storePassword "your password" keyAlias "your alias" keyPassword "your password" } }并修在buildType中加入
buildTypes { //开发环境 debug { //实现自动签名 signingConfig signingConfigs.debugConfig } //测试环境 Test { signingConfig signingConfigs.testConfig } //生产环境 release { signingConfig signingConfigs.releaseConfig } }安照上面的配置,只要运行gradle build,就是自动生成签名后apk,但是把keystore文件在密码放在gradle文件明显是不安全的,做代码管理时,是需要把这个build.gradle文件也纳入管理范围的.所以为了安权起见,我们可以装证书相关的信息放在一个配置文件里,每次build的时候,使用gradle读取配置文件,这个在做代码管理时,把配置文件排除在外,就可以了.下面我们就来实现这个功能.
建立sign.properties文件,内容如下.
STORE_FILE=yourAppStroe.keystore STORE_PASSWORD=yourStorePwd KEY_ALIAS=yourKeyAlias KEY_PASSWORD=yourAliasPwd删除signingConfigs,修改buildTypes,demo如下
buildTypes { //开发环境 debug { //实现自动签名 signingConfig getSignInfo("../sign.properties"); } //测试环境 Test { signingConfig getSignInfo("../testsign.properties"); } //生产环境 release { signingConfig getSignInfo("../sign.properties"); } }以上就完成了自动签名的流程.如需要为每个环境使用不同的签名,只需建不同的配置文件即可.