2

是否有任何 gradle 函数/插件可以从特殊的配置/属性文件中读取/绑定一些秘密属性(api 密钥、密码)?

例如,在 android 插件中,您可以在~/.gradle/gradle.properties文件中设置属性:

apiKey=SUPER_SECRET_VALUE

比项目build.gradle

android {
    buildTypes {
        debug {
            buildConfigField "String", "API_KEY", apiKey
        }
    }    
}

在项目本身中,您使用BuildConfig.API_KEY字符串常量。

对于其他(java)项目,gradle中是否有类似的解决方案?

或者这种方法可能是错误的,应该使用其他一些解决方法?

4

2 回答 2

1

您可以随时过滤文件。您通过复制命令传递资源或源文件,并将@API_KEY@(with filterand ReplaceTokens) 或${API_KEY}(using expand) 等标记替换为 Gradle 变量。

例如:

processResources {
    filter(ReplaceTokens, tokens: [API_KEY: apiKey])
}

@API_KEY@将用您的任何资源文件中的实际 API 密钥替换子字符串。

于 2016-09-25T17:15:48.353 回答
0

作为我之前回答的替代方案,您可以编写一个使用CodeModel的自定义 Gradle 任务。是一个例子。

于 2016-09-27T00:03:24.033 回答