Ich möchte die Build-Variante zur Laufzeit erhalten. Ist dies ohne zusätzliche Konfiguration oder Code möglich?
Ich möchte die Build-Variante zur Laufzeit erhalten. Ist dies ohne zusätzliche Konfiguration oder Code möglich?
Antworten:
Schauen Sie sich die generierte BuildConfigKlasse an.
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_NAMEscheint ersetzt worden zu sein durchAPPLICATION_ID
Eine andere Möglichkeit wäre, für jede Build-Variante eine separate Build-Konfigurationsvariable zu erstellen und diese in Ihrem Code wie folgt zu verwenden:
In Ihrer build.gradle-Datei:
productFlavors {
production {
buildConfigField "String", "BUILD_VARIANT", "\"prod\""
}
dev {
buildConfigField "String", "BUILD_VARIANT", "\"dev\""
}
}
So verwenden Sie es in Ihrem Code:
if (BuildConfig.BUILD_VARIANT.equals("prod")){ // do something cool }
Hier ist ein Beispiel, um BuildConfigverschiedene Geschmacksrichtungen zu definieren und zu erhalten
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}\""
}
}
Verwenden von
BuildConfig.BASE_URL
Wenn Sie bereits aromatisieren, müssen Sie in Ihrem Gradle kein zusätzliches Zeichenfolgenfeld angeben. Befolgen Sie einfach die einfachen Schritte, um die Build-Details zu erhalten:
Für Build-Variante: BuildConfig.FLAVOR
Für Build-Versionscode: BuildConfig.VERSION_CODE
Für Build-Versionsname: BuildConfig.VERSION_NAME
BuildConfig.BUILD_TYPEsollte für die Build-Variante verwendet werden. BuildConfig.FLAVORsollte für alle von Ihnen angegebenen Geschmacksrichtungen verwendet werden.