Я хочу иметь возможность получить системное свойство из приложения как:
String isTesting = System.getProperty("IS_TESTING");
Я пытался передать аргумент, используя флаг -D в gradle, например ./gradlew assemble -DIS_TESTING
. Или сделать так:
task setCustomProp << {
System.setProperty("IS_TESTING", "true")
}
preBuild.dependsOn setCustomProp
Даже пытался изменить gradle.properties
, добавив эту строку:
org.gradle.jvmargs=-DIS_TESTING=true
Но ни одна из этих попыток не приводит к получению значения кода приложения. Я просто пытаюсь получить как:
@Override
public void onCreate() {
super.onCreate();
String isTesting = System.getProperty("IS_TESTING");
}
Я пытаюсь сделать это, потому что пытаюсь изменить переменную окружения здесь github.com/facebook/react-native/blob/… React использует этот IS_TESTING
для изменения некоторой конфигурации.
Вам нужно будет поговорить об этом с командой React Native. Я понятия не имею, почему у них есть этот код там.
Я могу представить себе два сценария, в которых может быть установлено системное свойство IS_TESTING
. Один из них связан с модульным тестом, так как он работает на JVM, поэтому я предполагаю, что у нас есть способ установки системных свойств при запуске модульных тестов. Другое дело, если Андроид устанавливает IS_TESTING
, возможно, как часть инструментального тестового прогона. Несмотря на это, ты не имеет возможности установить его напрямую для запуска обычного приложения Android конечным пользователем.
В итоге я изменил свойства системы внутри инструментальных тестов.
Почему бы вам просто не добавить:
buildConfigField "boolean", "IS_TESTING", "true"
построить.градле.
а затем в вашем:
@Override
public void onCreate() {
super.onCreate();
boolean isTesting = BuildConfig.IS_TESTING
}
Это хорошо, но я боюсь, что застрял с System.getProperty
, так как моя проблема связана с другой библиотекой - на самом деле с нативной реакцией вы можете взглянуть на github.com/facebook/react-native/blob/…
«ни одна из этих попыток не приводит к получению значения кода приложения» — код приложения работает в Android, а не на вашем компьютере для разработки. В Android нет настраиваемых системных свойств, за исключением создания собственного ПЗУ. Если вы хотите, чтобы системное свойство на вашем компьютере для разработки было встроено в ваше приложение для Android. пусть ваш скрипт Gradle использует
buildConfigField
, чтобы поместить значение системного свойства вBuildConfig
, или используетresValue
, чтобы поместить значение системного свойства в строковый ресурс.