Android usando Gradle Construir sabores en el código como un caso if
Estoy tratando de trabajar con los sabores de la construcción. En mi build.gradle he definido 2 sabores, un sabor normal y un sabor de administrador.
Básicamente, el sabor de administrador tiene un botón adicional en la actividad principal.
- Varios archivos dex definen Lcom / google / firebase / FirebaseException
- Cómo establecer severityOverrides en lintOptions?
- Android - transformar clases con Dex para depurar
- Utilizando facebook sdk en android studio
- Versión Gradle y gradle-wrapper.properties
Entiendo que puedo definir diferentes paquetes / clases para diferentes sabores. ¿Pero hay una manera de hacer una clase de caso de si para agregar / quitar un pedazo de código dependiendo del sabor?
Básicamente necesitaría dos versiones de una actividad. Pero no quiero dos versiones diferentes de la actividad y mantenerlas.
Así que en mi actividad me gustaría hacer
=> Gradle comprobar si el sabor es 'admin' => si es así, añada este código del botón
¿es posible? ¿O necesitaría dos actividades físicas diferentes y así mantener ambas cosas cuando añada funcionalidad después.
- ¿Es posible definir un recurso de array de cadenas Android en Gradle?
- Android gradle duplicado librerías nativas compartidas
- ¿Es posible especificar testApplicationId por sabor en Gradle?
- Muchos problemas después de actualizar a Android Studio 1.0
- Duplicar archivos al agregar la compilación con Gradle en Android Studio
- Comandos de Gradle fallan en API 23 Imagen del emulador de la API de Google (armeabi-v7a)
- Vector Drawables bandera no funciona en la Biblioteca de Soporte 24+
- Cómo cambiar / cambiar testInstrumentationRunner dinámicamente con gradle
BuildConfig.FLAVOR
le da el sabor combinado del producto. Así que si usted tiene una sola dimensión de sabor:
productFlavors { normal { } admin { } }
A continuación, sólo puede comprobarlo:
if (BuildConfig.FLAVOR.equals("admin")) { ... }
Pero si tiene múltiples dimensiones de sabor:
flavorDimensions "access", "color" productFlavors { normal { dimension "access" } admin { dimension "access" } red { dimension "color" } blue { dimension "color" } }
También BuildConfig.FLAVOR_access
campos BuildConfig.FLAVOR_access
y BuildConfig.FLAVOR_color
para que deba comprobarlo de la siguiente manera:
if (BuildConfig.FLAVOR_access.equals("admin")) { ... }
Y BuildConfig.FLAVOR
contiene el nombre completo del sabor. Por ejemplo, adminBlue
.
Para evitar una cadena simple en la condición, puede definir una propiedad booleana:
productFlavors { normal { flavorDimension "access" buildConfigField 'boolean', 'IS_ADMIN', 'false' } admin { flavorDimension "access" buildConfigField 'boolean', 'IS_ADMIN', 'true' } }
Entonces usted puede utilizarlo como esto:
if (BuildConfig.IS_ADMIN) { ... }
- Iniciar un script como root a través de ADB
- InstantiateItem en PagerAdapter y AddView en la confusión ViewPager