Ich möchte die Build-Variante zur Laufzeit erhalten. Ist dies ohne zusätzliche Konfiguration oder Code möglich?
android
android-studio
android-gradle-plugin
styler1972
quelle
quelle
PACKAGE_NAME
scheint 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 }
quelle
Sie können mit versuchen
getPackageName();
Es wird das zurückgeben, was Sie in build.gradle definiert haben
productFlavours{ flavour1{ applicationId 'com.example.package.flavour1' } flavour2{ applicationId 'com.example.package.flavour2' } }
quelle
Hier ist ein Beispiel, um
BuildConfig
verschiedene Geschmacksrichtungen zu definieren und zu erhaltenandroid { 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
quelle
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:
quelle
BuildConfig.BUILD_TYPE
sollte für die Build-Variante verwendet werden.BuildConfig.FLAVOR
sollte für alle von Ihnen angegebenen Geschmacksrichtungen verwendet werden.