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_NAME
parece haber sido reemplazado porAPPLICATION_ID
BuildConfig
se 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
BuildConfig
un 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_URL
fuente
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_TYPE
debe usarse para la variante de compilación.BuildConfig.FLAVOR
debe usarse para cualquier sabor que haya especificado.