Как определить выбранную "конфигурацию" в Android?
В Android Studio я создал две конфигурации:
Как я могу определить в коде, какую конфигурацию я выбрал?
Я знаю что есть buildConfigField
в /app/build.gradle
но имена buildTypes
не соответствуют configuration
имена, так что мне интересно, как это все сочетается.
android {
...
defaultConfig {
...
}
buildTypes {
debug {
...
buildConfigField 'boolean', 'DEBUG', 'true'
}
release {
...
}
}
}
Я предполагаю, что в Android Studio configuration
соответствует schema
в Xcode и buildConfigField
соответствует Environment Variable
в Xcode (я пришел из мира iOS).
2 ответа
Как я могу определить в коде, какую конфигурацию я выбрал?
Вы этого не делаете, поскольку конфигурация запуска - это IDE, а не Android.
я хочу определить значения переменных среды, которые я могу использовать в коде, например, в варианте отладочной сборки, который я хочу подключить к базе данных разработки, в варианте сборки выпуска, которую я хочу подключить к рабочей базе данных
Ничто из этого не имеет ничего общего с конфигурациями запуска. Конфигурации запуска предназначены для настройки того, что должно быть запущено:
- главный
app
- тесты по основным
app
- тесты для
something
библиотека - и т.п.
debug
против release
Типы сборки, одно измерение варианта сборки. Вы выбираете, какой вариант сборки использовать конфигурации запуска, с помощью инструмента Build Variants, по умолчанию закрепленного в левой нижней части окна IDE Android Studio.
Иметь другое поведение кода на основе debug
против release
, вы можете:
исследовать
BuildConfig.BUILD_TYPE
, который будет либоdebug
или жеrelease
использование
buildConfigField
ввести значения вBuildConfig
от Gradle, в зависимости от типа сборки и / или вкуса продуктаиспользование
resConfig
вводить значения в ресурсы, такие как строковые ресурсыИспользуйте пользовательские наборы источников для каждого типа сборки (например,
src/main/
для вашего общего кода,src/debug/
для отладочного кода,src/release/
для конкретного кода выпуска)
Вы можете настроить различные наборы ресурсов. По умолчанию main
а также debug
уже существует. Чтобы определить во время выполнения, какой набор использовался для сборки apk, создайте новый файл ресурсов в каждом наборе ресурсов, например
app/src/main/res/values/resourceset.xml
а также app/src/debug/res/values/resourceset.xml
и поместите одну строковую или целочисленную величину внутрь следующим образом:
<resources>
<string name="resource_set">debug</string>
</resources>
а также
<resources>
<string name="resource_set">main</string>
</resources>
Вы можете использовать getString()
чтобы получить значение для R.string.resource_set
и вы можете определить, какой набор ресурсов был использован.
Я использую эту технику для включения различных идентификаторов клиентов API Google в зависимости от набора ресурсов, который использовался (для включения отладки с помощью API Google и выпуска с другим отпечатком, а затем отладки).