Я хотів би отримати варіант збірки під час виконання, чи можливо це без додаткових налаштувань або коду?
Я хотів би отримати варіант збірки під час виконання, чи можливо це без додаткових налаштувань або коду?
Відповіді:
Подивіться на сформований BuildConfig
клас.
public final class BuildConfig {
public static final boolean DEBUG = Boolean.parseBoolean("true");
public static final String APPLICATION_ID = "com.example.app";
public static final String BUILD_TYPE = "debug";
public static final String FLAVOR = "";
public static final int VERSION_CODE = 1;
public static final String VERSION_NAME = "";
}
PACKAGE_NAME
здається, його замінивAPPLICATION_ID
BuildConfig
його немає. Його називають BuildConfig не дарма
Іншим варіантом було б створити окрему змінну конфігурації збірки для кожного варіанту збірки та використовувати її у своєму коді так:
У вашому файлі build.gradle:
productFlavors {
production {
buildConfigField "String", "BUILD_VARIANT", "\"prod\""
}
dev {
buildConfigField "String", "BUILD_VARIANT", "\"dev\""
}
}
Щоб використовувати його у своєму коді:
if (BuildConfig.BUILD_VARIANT.equals("prod")){ // do something cool }
Ось приклад для визначення та отримання BuildConfig
різного смаку
android {
defaultConfig {
...
buildTypes {
...
}
flavorDimensions "default"
productFlavors {
develop {
applicationIdSuffix ".dev"
versionNameSuffix "-dev"
}
staging {
applicationIdSuffix ".stg"
versionNameSuffix "-stg"
}
production {
applicationIdSuffix ""
versionNameSuffix ""
}
}
applicationVariants.all { variant ->
def BASE_URL = ""
if (variant.getName().contains("develop")) {
BASE_URL = "https://localhost:8080.com/"
} else if (variant.getName().contains("staging")) {
BASE_URL = "https://stagingdomain.com/"
} else if (variant.getName().contains("production")) {
BASE_URL = "https://productdomain.com/"
}
variant.buildConfigField "String", "BASE_URL", "\"${BASE_URL}\""
}
}
Використовуючи
BuildConfig.BASE_URL
Якщо ви вже ароматизуєте, тоді не потрібно вводити додаткове поле рядка у вашій градації. Просто виконайте прості кроки, щоб отримати деталі збірки:
Для варіанту збірки: BuildConfig.FLAVOR
Для коду версії збірки: BuildConfig.VERSION_CODE
Для імені версії збірки: BuildConfig.VERSION_NAME
BuildConfig.BUILD_TYPE
слід використовувати для варіанта збірки. BuildConfig.FLAVOR
слід використовувати для будь-яких зазначених вами ароматів.