Я хочу получить вариант сборки во время выполнения, возможно ли это без каких-либо дополнительных настроек или кода?
Как получить вариант сборки во время выполнения в Android Studio?
Ответ 1
Посмотрите на сгенерированный класс BuildConfig
.
public final class BuildConfig {
public static final boolean DEBUG = Boolean.parseBoolean("true");
public static final String APPLCATION_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 = "";
}
Ответ 2
Другой вариант - создать отдельную конфигурационную конфигурацию сборки для каждого варианта сборки и использовать ее в вашем коде следующим образом:
В файле build.gradle:
productFlavors {
production {
buildConfigField "String", "BUILD_VARIANT", "\"prod\""
}
dev {
buildConfigField "String", "BUILD_VARIANT", "\"dev\""
}
}
Чтобы использовать его в своем коде:
if (BuildConfig.BUILD_VARIANT.equals("prod")){ // do something cool }
Ответ 3
Вы можете попробовать с помощью
getPackageName();
он вернет то, что вы определили в build.gradle
productFlavours{
flavour1{
applicationId 'com.example.package.flavour1'
}
flavour2{
applicationId 'com.example.package.flavour2'
}
}
Ответ 4
Вот пример, чтобы определить и получить 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
Ответ 5
Если вы уже используете ароматизатор, вам не нужно указывать дополнительное поле в вашем Gradle. Просто следуйте простым шагам, чтобы получить детали сборки:
Для варианта сборки: BuildConfig.FLAVOR
Для кода версии сборки: BuildConfig.VERSION_CODE
Для имени версии сборки: BuildConfig.VERSION_NAME