Как определить выбранную "конфигурацию" в 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 и выпуска с другим отпечатком, а затем отладки).

Другие вопросы по тегам