【问题标题】:Reading system environment variable in gradle在 gradle 中读取系统环境变量
【发布时间】:2021-10-14 07:49:43
【问题描述】:

我有点好奇我们如何在 Android build.gradle 或任何其他 gradle 配置文件中从系统环境变量 (Windows/Mac/Linux) 加载私有凭据。 可能有一些方法或方法可以实现这一点,但我们确实在寻找方向。

我已经探索过但对我不起作用的几件事是:

注意:我在 Windows 环境下尝试并获得了null

In Gradle, is there a better way to get Environment Variables?

https://javabydeveloper.com/gradle-system-properties-via-command-line-step-by-step-example/

How to give System property to my test via Gradle and -D

https://dzone.com/articles/specifying-gradle-build

https://discuss.gradle.org/t/how-should-i-be-handling-passing-system-properties-from-gradle-to-my-tests/7171/3

【问题讨论】:

  • “不适合我”是什么意思?你的症状是什么?另外,您在哪里以及如何使用 Gradle:命令行? CI服务器?安卓工作室?其他 IDE?
  • 如果您需要用于签署密钥的数据,我会创建 gradle.properties 文件并将其存储在:~/.gradle/gradle.properties。 (在 Mac 上)
  • 我正在尝试访问 Android Studio 中的 build.gradle 文件以获取系统环境变量,并通过链接中提到的每种方法获得 NULL
  • 这可能会有所帮助:stackoverflow.com/a/16414092/6645076

标签: android android-studio security gradle environment-variables


【解决方案1】:

您可以在 Gradle 脚本中使用 System.getenv('MY_VAR') 访问名为 MY_VAR 的变量。如果变量不存在,则返回 null。这应该在所有平台上都同样适用。

例如,使用build.gradle 脚本

def myVar = System.getenv('MY_VAR')
println(myVar)

Gradle 命令MY_VAR='it works!' ./gradlew projects 在控制台上输出以下(以及更多内容)(在带有 Gradle 7.2 的 Linux shell 中测试):

> Configure project :
it works!

【讨论】:

  • 很奇怪,当我像你一样尝试访问它时得到Null
  • 我假设你得到了null(全部小写)?您是否在 Linux bash shell 中运行了 exact same 命令?您确定为您尝试访问它的进程设置了环境变量吗?
  • 我使用的是 Windows 10,一旦我设置了系统环境变量,当我运行它时,我在 gradle 中没有得到任何东西。请在你的 Windows 上试试?
  • 不幸的是,我没有 Windows 系统来测试这个。但是,这个问题听起来像是环境变量根本没有正确地提供给gradle 进程。当您在build.gradle 中打印整个环境变量集时,您是否看到了该变量(例如,使用println(System.getenv()))?
猜你喜欢
  • 1970-01-01
  • 2011-04-27
  • 2019-08-10
  • 1970-01-01
  • 1970-01-01
  • 2013-06-17
  • 2015-08-29
  • 1970-01-01
  • 2015-04-04
相关资源
最近更新 更多