如何将System.property从Gradle传递到Android应用程序?
我希望能够从应用程序中获取系统属性,如下所示:如何将System.property从Gradle传递到Android应用程序?,android,gradle,android-gradle-plugin,Android,Gradle,Android Gradle Plugin,我希望能够从应用程序中获取系统属性,如下所示: String istest=System.getProperty(“正在测试”) 我尝试在gradle中使用-D标志传递参数,比如/gradlew assembly-DIS_TESTING。或这样做: task setCustomProp << { System.setProperty("IS_TESTING", "true") } preBuild.dependsOn setCustomProp 但是,所有这些尝试都无法获
String istest=System.getProperty(“正在测试”)代码>
我尝试在gradle中使用-D标志传递参数,比如/gradlew assembly-DIS_TESTING
。或这样做:
task setCustomProp << {
System.setProperty("IS_TESTING", "true")
}
preBuild.dependsOn setCustomProp
但是,所有这些尝试都无法获得应用程序代码的值。我只是想变得像:
@覆盖
public void onCreate(){
super.onCreate();
String istest=System.getProperty(“IS_测试”);
}
为什么不添加:
buildConfigField "boolean", "IS_TESTING", "true"
来建造格拉德尔
然后在你的
@Override
public void onCreate() {
super.onCreate();
boolean isTesting = BuildConfig.IS_TESTING
}
“所有这些尝试都不会导致获取应用程序代码的值”——应用程序代码在Android中运行,而不是在您的开发机器上运行。除了创建自定义ROM,Android中没有可配置的系统属性。如果您想在开发机器上拥有系统属性,请将其嵌入Android应用程序中。让Gradle脚本使用buildConfigField
将系统属性值放入BuildConfig
,或者使用resValue
将系统属性值放入字符串资源中。我之所以这样做,是因为我正在尝试更改此处的环境变量。React使用此正在测试的
更改一些配置。您需要与React本机团队讨论这一点。我不知道他们为什么会有这样的代码。我可以想到两种场景,其中可以设置正在测试系统属性。一个是单元测试,因为它在JVM上运行,所以我假设我们在运行单元测试时有一种设置系统属性的方法。另一种情况是,如果Android Set正在进行测试,可能是作为测试运行的一部分。无论如何,您无法直接为普通Android应用程序的最终用户运行设置它。我最终在插入指令的测试中更改了系统属性。这很好,但我恐怕无法使用system.getProperty
,因为我的问题是其他库-事实上,使用react native,您可以查看
@Override
public void onCreate() {
super.onCreate();
boolean isTesting = BuildConfig.IS_TESTING
}