将构建计算机签名添加到gradle生成的变量

时间:2016-02-08 10:08:32

标签: android gradle android-gradle user-agent

我希望标记一些由gradle生成的变量(在我的情况下,它的用户代理稍后用于HTTP请求),以便稍后能够区分哪个开发人员构建应用程序(例如,如果某些开发人员犯了一个错误,他的应用程序是DDoSing服务器。)

所以现在我可以将releasedebug区分开来:

buildTypes {
    debug {
        buildConfigField "String", "USER_AGENT", "\"Android-debug\""
    }
    release {
        buildConfigField "String", "USER_AGENT", "\"Android-release\""
    }
}

但是对于debug我想添加一些知道构建应用实例的人,可能是git登录,机器名称或其他。

1 个答案:

答案 0 :(得分:0)

gradle构建文件实际上是Groovy代码,您可以自由地将任何内容放入其中。您必须确保代码在用于描述构建的DSL之前运行。因此,如果您想从系统中获取内容,只需编写Groovy代码即可。 Groovy很像Java,你可以在运行时使用完整的JDK,因此它应该很容易上手。

如果要访问有关构建计算机和环境的内容,可能需要使用不同的命令来收集这些数据。用该数据填充一些变量。然后使用buildConfigField,因为您已经将这些值放入BuildConfig.java。

请记住,您可能希望在调试和发布中提供某些值,以便它们生成相同的BuildConfig符号。否则,您的应用可能无法在一个配置或另一个配置中编译。

顺便说一句。您可以使用已添加到BuildConfig的属性来区分调试和发布之间的区别,因此您不需要添加任何其他内容来区分它们。这些行总是会出现(查看生成的BuildConfig.java以便自己查看):

public static final boolean DEBUG = Boolean.parseBoolean("true");
public static final String BUILD_TYPE = "debug";