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
来源: https://majing.io/posts/10000006671192