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