Android gradle 自动签名

    xiaoxiao2025-09-12  716

    Android gradle 自动签名

    上篇博客讲了如何自动生成多环境的包,但是现在生成的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

    读取配置文件并设置SigningConfig

    def getSignInfo(propFileName) { def com.android.build.gradle.internal.dsl.SigningConfig signingConfig = new com.android.build.gradle.internal.dsl.SigningConfig("signInfo") File propFile = file(propFileName); if (propFile.exists()) { def Properties props = new Properties() props.load(new FileInputStream(propFile)) signingConfig.storeFile = file(props['STORE_FILE']) signingConfig.storePassword = props['STORE_PASSWORD'] signingConfig.keyAlias = props['KEY_ALIAS'] signingConfig.keyPassword = props['KEY_PASSWORD'] println('signConfig is exits') } else { println('sign config is null') signingConfig = null } return signingConfig; }

    调用方式

    删除signingConfigs,修改buildTypes,demo如下

    buildTypes { //开发环境 debug { //实现自动签名 signingConfig getSignInfo("../sign.properties"); } //测试环境 Test { signingConfig getSignInfo("../testsign.properties"); } //生产环境 release { signingConfig getSignInfo("../sign.properties"); } }

    以上就完成了自动签名的流程.如需要为每个环境使用不同的签名,只需建不同的配置文件即可.

    转载请注明原文地址: https://ju.6miu.com/read-1302563.html
    最新回复(0)