【问题标题】:Android Gradle keyAlias variables stored in separate fileAndroid Gradle keyAlias 变量存储在单独的文件中
【发布时间】:2018-07-15 04:56:15
【问题描述】:

我正在开发依赖 Jenkins CI 的 Android 项目。所有签名密钥都存储在加密的 gradle.properties 文件中的单独存储库中。在项目存储库中, gradle.properties 文件被跟踪并且(显然)不包含密钥。

这是项目模块的示例 build.gradle 签名部分:

signingConfigs {
    release {
        keyAlias KEY_ALIAS
        storeFile file(KEYSTORE_PATH)
        storePassword KEYSTORE_PASSWORD
        keyPassword MOBILE_KEY_PASSWORD
    }

我的问题是:如何将这些密钥存储在我的本地开发机器上,并且能够在不更改 gradle.properties 文件和修改构建文件的情况下构建项目?

【问题讨论】:

    标签: android android-studio jenkins gradle android-gradle-plugin


    【解决方案1】:

    首先在项目根目录下创建一个名为external.properties的文件。

    然后检查这个文件是否存在

    def externalPropertyFile = file("${rootProject.projectDir.path}${File.separator}external.properties")
    
    if (!propertyFile.exist()) {
        throw new GradleException("external.property file doesn't exist")
    }
    

    验证当前上下文中是否存在属性,如果不加载属性文件

    if (!rootProject.ext.has("externalProperties")) {
        rootProject.ext {
            externalProperties = new Properties()
            externalProperties.load(propertyFile.newReader())
        }
    }
    

    如果属性不可用,您可以在signingConfigs 中执行相同的检查并省略发布版本:

    signingConfigs {
        if (rootProject.ext.has("externalProperties")) {
            release {
                keyAlias rootProject.externalProperties.KEY_ALIAS
                storeFile file(rootProject.externalProperties.KEYSTORE_PATH)
                storePassword rootProject.externalProperties.KEYSTORE_PASSWORD
                keyPassword rootProject.externalProperties.MOBILE_KEY_PASSWORD
            }
        }
    }
    

    【讨论】:

    【解决方案2】:

    设法弄清楚这一点。根据Gradle docs,配置按以下顺序应用:

    项目根目录中的gradle.properties。

    GRADLE_USER_HOME 目录中的 gradle.properties。

    系统属性,例如在命令上设置 -Dgradle.user.home 时 行。

    所以我要做的就是在 gradle 主目录(Mac 上的 /USERNAME/.gradle/)中添加自定义 gradle.properties 文件

    【讨论】:

    • 请注意,其他应用程序中的配置也会被覆盖
    • @LionelBriand 你是对的,谢谢你的警告!
    猜你喜欢
    • 1970-01-01
    • 2014-10-17
    • 1970-01-01
    • 2013-03-22
    • 1970-01-01
    • 2011-07-12
    • 2017-12-16
    • 2012-09-29
    • 1970-01-01
    相关资源
    最近更新 更多