productflavors - dependencies android studio
Obtener sabor de producto o variante de compilaciĆ³n en una aplicaciĆ³n de Android (2)
Editar: Esto ahora se hace automáticamente comenzando con la versión 0.7 del plugin. BuildConfig.java
contendrá
public static final String BUILD_TYPE = "debug";
public static final String FLAVOR = "f1Fa";
public static final String FLAVOR_group1 = "f1";
public static final String FLAVOR_group2 = "fa";
FLAVOR
es el nombre de sabor combinado con todas las dimensiones / grupos de sabor aplicados. Entonces, cada dimensión está disponible como FLAVOR_<group name>
.
Finalmente, BUILD_TYPE
contiene el nombre del tipo de compilación utilizado.
Si tiene una única dimensión de sabor, entonces solo tiene la constante FLAVOR
.
Esta es la única forma de hacerlo ahora.
Una cosa que podrías hacer es automatizarlo. Entonces podrías hacer algo como esto:
android {
productFlavors.whenObjectAdded { flavor ->
flavor.buildConfig "public static final String PRODUCT_FLAVOR = /"${flavor.name}/";"
}
// your normal config here.
}
De esta forma, no tiene que hacerlo manualmente para cada sabor.
Tengo una aplicación de Android con varios sabores de productos diferentes configurados en mi archivo build.gradle, por ejemplo
productFlavors {
someFlavor {}
anotherFlavor {}
}
En mi código de aplicación, deseo poder obtener el nombre del sabor compilado actualmente (o variante de compilación). Una solución es esta:
productFlavors {
someFlavor {
buildConfig "public static final String PRODUCT_FLAVOR = /"someFlavor/";"
}
anotherFlavor {
buildConfig "public static final String PRODUCT_FLAVOR = /"anotherFlavor/";"
}
}
Y luego en mi aplicación para Android, llame a BuildConfig.PRODUCT_FLAVOR
.
¿Hay alguna forma de que pueda conseguir que Gradle lo haga automáticamente? ¿O hay alguna otra API en Android que pueda usar para obtener el nombre de sabor del producto?
La solución aceptada es asombrosa. Para algunos casos, un alternativo puede ser útil.
Puede agregar un archivo de configuración, diga ''Appconfig.java'' a su producto. Deleite carpetas de origen específicas, por ejemplo, src/<productflavor>/java/<packagename>/Appconfig.java
; luego puede usar Appconfig.PRODUCT_FLAVOR
en su aplicación. El compilador lo mantendrá honesto y asegúrese de agregar esto para todos los sabores.
Como dije, en este caso particular, la solución aceptada es probablemente mejor ya que ni siquiera necesita agregar nada para nuevos productosFlavors pero este enfoque podría ser útil para otros casos.