Me gustaría obtener la variante de compilación durante el tiempo de ejecución, ¿es esto posible sin ninguna configuración o código adicional?
android
android-studio
android-gradle-plugin
styler1972
fuente
fuente

PACKAGE_NAMEparece haber sido reemplazado porAPPLICATION_IDBuildConfigse ha ido. Se llama BuildConfig por una razónOtra opción sería crear una variable de configuración de compilación separada para cada variante de compilación y usarla en su código de esta manera:
En su archivo build.gradle:
productFlavors { production { buildConfigField "String", "BUILD_VARIANT", "\"prod\"" } dev { buildConfigField "String", "BUILD_VARIANT", "\"dev\"" } }Para usarlo en su código:
if (BuildConfig.BUILD_VARIANT.equals("prod")){ // do something cool }fuente
Puedes probar con
getPackageName();devolverá lo que ha definido en build.gradle
productFlavours{ flavour1{ applicationId 'com.example.package.flavour1' } flavour2{ applicationId 'com.example.package.flavour2' } }fuente
Aquí hay un ejemplo para definir y obtener
BuildConfigun sabor diferente.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}\"" } }Utilizando
BuildConfig.BASE_URLfuente
Si ya está aromatizando, no es necesario que proporcione un campo de cadena adicional en su gradle. Simplemente siga unos sencillos pasos para obtener los detalles de la compilación:
fuente
BuildConfig.BUILD_TYPEdebe usarse para la variante de compilación.BuildConfig.FLAVORdebe usarse para cualquier sabor que haya especificado.