Android 项目 构建、签名

Android 项目 构建 签名

文档

源码

配置

app/build.gradle.kts

import java.io.FileInputStream
import java.util.Properties


android {
    signingConfigs {
        create("release") {
            val keystorePropertiesFile = rootProject.file("keystore.properties")
            if (keystorePropertiesFile.exists()) {
                val keystoreProperties = Properties()
                keystoreProperties.load(FileInputStream(keystorePropertiesFile))
                storeFile = file(keystoreProperties["storeFile"] as String)
                keyAlias = keystoreProperties["keyAlias"] as String
                storePassword = keystoreProperties["storePassword"] as String
                keyPassword = keystoreProperties["keyPassword"] as String
            }
        }
    }

    buildTypes {
        release {
            val keystorePropertiesFile = rootProject.file("keystore.properties")
            if (keystorePropertiesFile.exists()) {
                signingConfig = signingConfigs.getByName("release")
            } else {
                System.err.printf("1. 证书配置文件 keystore.properties 不存在。\n")
                System.err.printf("2. 使用本机默认签名(不推荐)。\n")
                System.err.printf("3. 参考 README.md 创建证书。\n")
                System.err.printf("4. 参考 keystore.properties.template 配置证书签名。\n")
            }
        }
    }
}

keystore.properties

storeFile=../xuxiaowei.keystore
keyAlias=xxx
storePassword=xxx
keyPassword=xxx

.gitignore

# GitLab CI/CD 使用的文件夹
android-sdk-root
# 敏感文件
xuxiaowei.keystore
xuxiaowei.keystore.txt
xuxiaowei_restored.keystore
keystore.properties

构建

  1. 没有配置 keystore.properties 文件进行打包时,仅能得到 app/build/outputs/apk/release/app-release-unsigned.apk
  2. 正确配置 keystore.properties 文件进行打包时,能得到 app/build/outputs/apk/release/app-release.apk