Crear múltiples productFlavors con Android Studio

| 2016-12-6 | No hay comentarios »

En muchas ocasiones necesitamos probar diferentes algoritmos para una misma aplicación o reutilizar el código para hacer una app parecida. Muchas soluciones consistente en crear un proyecto nuevo, ir cambiando las llamadas a las diferentes funciones para cada versión y modificar las variables de entorno cada vez (application id, content provider, assets, etc). Utilizando estos metodos el código se vuelve dificil de mantener, de entender y de actualizar.

Cada versión de nuestra aplicación puede tener diferentes características o requerimientos para diferentes dispositivos. Además los flavors se pueden combinar con diferentes tipos compilación (build types). Cada combinación de productFlavor y buildType constituyen una variante de compilación. En función de la variante que se utilice se generarán diferentes APKs o aplicaciones.

ProductFlavor + BuildType = Variante

Build Types

Esta etiqueta de gradle controla como compilar y empaquetar las apps. Por defecto, el sistema define 2 tipos: debug y release. Debug añade código adicional de depuración en el código fuente y además firma la app (aplicación) con una clave de depuración. Release no está firmado por defecto y sería la versión comercial que se sube al Google Play. Se podrían añadir más tipos de compilación según las necesidades.

Product Flavors

Un productFlavor define versiones personalizadas de nuestra aplicación utilizando un único proyecto, un mismo proyecto puede tener diferentes flavors. Para conseguirlo primero debemos crear el núcleo de nuestra aplicación, el cual encierra todas las funcionalidades báscias de la app, y luego con los flavors ampliar dicha funcionalidad permitiéndonos crear nuevas versiones e incluso nuevas aplicaciones android.

A continuación vemos un ejemplo de productFlavor, los pasos que vamos a seguir son:

  1. Definir un flavor en el archivo build.gradle.
  2. Crear los paquetes de los diferents flavors.
  3. Añadir el código fuente necesario en cada flavor.

1- Definir productFlavor

Para definir los flavors utilizaremos la etiqueta productFlavors de gradle y dentro de esta declararemos nuestros flavors, como se aprecía:

productFlavors {
 demo {
 applicationId "com.programacioncompy.app.demo"
 versionName "1.0-demo"
 }
 
 full {
 applicationId "com.programacioncompy.app.full"
 versionName "1.0-full"
 }
}

2- Crear los paquetes del flavor

Una vez definidos los flavors es necesario crear las carpetas de las variantes y sus paquetes. Las carpetas de los flavors se deben crear dentro del directorio app > src a la misma altura que la carpeta main. Los directorios de flavors siguen la misma estructura que main:

flavor/
 java/
  nuestros páquetes y código
 res/
  drawable/
  values/
  layout/

3 – Añadir el código fuente necesario en cada flavor.

En cada flavor solamente tenemos que crean las carpetas que contengan contenido nuevo Por ejemplo:

  1. Si queremos cambiar el icono creamos las carpetas: flavor > res > drawables.
  2. Si queremos pone run  nuevo algoritmo crearemos la estructura: flavor > java > paquete.

flavor

Esto es posible gracias a la utilidad de gradle, las partes que no está definidas en los flavors se mezclan con las del proyecto principal de la carpeta app > main permitiendo generar una apk nueva.

Antes de compilar la aplicación para probar van a tener que elegir el build variant, que en nuestro caso sería full o demo, les dejo este screen como ilustración:

builvariants

Si tienen dudas escribannos en la caja de comentarios que con gusto les estaremos respondiendo.

Acerca del autor: Rodrigo Paszniuk

Ingeniero Informático, amante de la tecnología, la música, el ciclismo y aprender cosas nuevas.

Posts Relacionados

  • Flutter: Escribiendo código personalizado para plataformas (Android / iOS)
  • Crear APP utilizando Flutter (Dart)
  • Gson: Librería para parsear JSON en Android
  • Butter Knife: librería para inyectar vistas en Android



SEGUÍNOS EN FACEBOOK


GITHUB