首页 > 解决方案 > 如何从 Java 访问 Gradle 额外属性?

问题描述

我正在为我的应用程序做一些浓缩咖啡测试,并且我正在与我的测试中的真实 API 进行交互。因此,我正在尝试从一些环境变量中读取这些 API 凭据:

假设我正在使用 Netflix API。bash_profile我在 MAC 上声明了凭据:

export NETFLIX_ID='123'
export NETFLIX_TOKEN='xxx'
launchctl setenv NETFLIX_ID $NETFLIX_ID
launchctl setenv NETFLIX_TOKEN $NETFLIX_TOKEN

现在在 Gradle 上,我创建了一些额外的属性,如下所示:

ext {
  netflixId = System.getenv("NETFLIX_ID")
  netflixToken = System.getenv("NETFLIX_TOKEN")
}

如果我打印netflixId并且netflixToken正确打印了凭据,则表示System.getenv()有效。

我现在要做的是从 Java 代码中读取那些额外的属性。你知道有没有办法做到这一点?还是更好的方法?任何帮助,将不胜感激

标签: javaandroidtestinggradleautomated-tests

解决方案


您可以将环境变量的值构建到您的应用程序中。您可以将它们放在构建配置字段中build.gradle

android {
    defaultConfig {
        buildConfigField "String", "NETFLIX_ID", "\"" + System.getenv('NETFLIX_ID') + "\""
    }
}

然后这些值最终会在BuildConfig与该 gradle 模块的 AndroidManifest 包对应的包中的编译时生成类中,然后您可以BuildConfig.NETFLIX_ID使用该值。


推荐阅读