android - 将构建机器签名添加到gradle生成的变量

标签 android gradle android-gradle-plugin user-agent

我想标记从gradle生成的一些变量(在我的情况下,它是稍后与HTTP请求一起使用的User Agent),以便以后能够区分是哪个开发者构建了该应用程序(例如,如果某个开发者犯了错误并且他的应用程序是DDoSing服务器)。

所以现在我可以通过以下方式区分releasedebug:

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

但是对于debug,我想添加一些信息以了解谁构建了该应用程序实例,它可能是git login,计算机名或其他名称。

最佳答案

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";

关于android - 将构建机器签名添加到gradle生成的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35266935/

相关文章:

android - 是否可以对 Android 应用程序的应用程序名称进行两次对齐?

android - 在 Windows 7 中找不到 HAXM 设备

android - Gradle 的冲突解决不适用于 Android 项目?

java - Eclipse 中的 gradle 未加载 axis2 1.7.0

android - 将不同的构建类型分配给Android中的不同口味

android - ADB 服务器在 macOS 上没有 ACK

android - 推送通知 GCM DELPHI XE8

Java LIBGDX,从另一个类调用InputHandler的TouchDown方法

android - 我正在尝试将Firebase添加到我的flutter项目中,但我不断收到此错误找不到方法实现()

android - Robolectric 单元测试没有响应