Вы можете использовать метод buildConfigField или resValue блока buildType в плагине Android Gradle. Первый генерирует глобальные константы Java, а второй - ресурсы Android.
Вы можете просмотреть официальные документы, показывающие пример использования обоих здесь .
Я все равно укажу здесь, если это поможет.
Сначала вы определяете одно или несколько полей конфигурации или значения res в вашем файле build.gradle
. В качестве примера для идентификатора AdMob вы должны определить строковые константы.
android {
buildTypes {
release {
buildConfigField "String", "ADMOB_ID", '"ConstantIdForRelease"'
resValue "string", "admob_id", "StringResourceForRelease"
}
debug {
buildConfigField "String", "ADMOB_ID", '"ConstantIdForDebug"'
resValue "string", "admob_id", "StringResourceForDebug"
}
}
Это создаст файлы BuildConfig.java
и temp generated.xml
для вариантов выпуска и отладки:
Release:
/ приложение / сборки / генерироваться / источник / buildConfig / выпуск / ваш / пакет / приложение / BuildConfig.java:
public final class BuildConfig {
public static final String ADMOB_ID = "ConstantIdForRelease";
}
/ приложение / сборки / сгенерированные / RES / resValues / выпуск / значения / generated.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Values from build type: releaes -->
<string name="admob_id" translatable="false">StringResourceForRelease</string>
</resource>
Debug:
/ приложение / сборки / генерироваться / источник / buildConfig / отлаживать / ваш / пакет / приложение / BuildConfig.java:
public final class BuildConfig {
public static final String ADMOB_ID = "ConstantIdForDebug";
}
/ приложение / сборки / сгенерированные / RES / resValues / отлаживать / значения / generated.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Values from build type: debug -->
<string name="admob_id" translatable="false">StringResourceForDebug</string>
</resource>
Тогда в вашем коде вы просто используете константу или ресурс как обычно:
callMethodThatNeedsAdModId(BuildConfig.ADMOB_ID);
// OR
callMethodThatNeedsAdModId(context.getString(R.string.admob_id));
Фактическое значение переменной конфигурации сборки или строкового ресурса будет определяться в зависимости от текущего типа / варианта сборки.
В любом случае работает, так что вы должны использовать?
Если вам нужен доступ к строке конфигурации в ресурсах XML (скажем, вы хотите изменить label
Действия в файле AndroidManifest.xml
при отладке), вы должны использовать этот ресурс. В противном случае просто используйте свойство конфигурации сборки, так как вам не нужен контекст для доступа к нему.
Надеюсь, это поможет!