Gradle自动签名release的apk

时间:2022-06-01 21:08:44

Gradle的任务可以帮我们自动完成很多重复的工作,这里介绍下如何自动对发布的apk进行签名。

signing.gradle

在app目录下新建signing.gradle文件,文件名可以根据需要修改。signing.gradle内容如下:

ext.signing = [
        storeFilePath : '/path/to/keystore file',
        storePassword : 'store password',
        keyAlias : 'key alias',
        keyPassword : 'key password',
]

这里配置了用于签名的四个属性,ext表示这些属性可以在其他的gradle文件中引用,如:

project.signing.storeFilePath

另外,为了避免keystore证书泄漏,建议不要把signing.gradle文件添加到类似SVN,Git仓库里。

build.gradle

在build.gradle文件里添加以下内容:

def signingFilePath = 'signing.gradle'
def performSigning = file(signingFilePath).exists()
if (performSigning) {
    apply from: signingFilePath
}

这里判断是否存在signing.gradle签名的配置文件。如果存在在应用该gradle文件。

android.signingConfigs

根据是否存在signing.gralde。如果存在,在android节点添加signingConfigs配置,内容如下:

android {
    if (performSigning) {
        signingConfigs {
            release {
                storeFile file(project.signing.storeFilePath)
                storePassword project.signing.storePassword
                keyAlias project.signing.keyAlias
                keyPassword project.signing.keyPassword
                v1SigningEnabled true
                v2SigningEnabled true
            }
        }
    }
}

android.buildTypes

在release的buildType里添加signingConfigs.release,如下:

buildTypes {
    release {
        ...
        if (performSigning) {
            signingConfig signingConfigs.release
        }
    }
}

这样就完成了Gradle自动签名release apk的任务。

执行

./gradlew assembleRelease