crear versiones android con gradle

Cómo crear multiples apps con productFlavors en Android Studio Flavors

Cómo crear multiples apps con productFlavors en Android Studio Flavorss

¿ Para que sirve crear versiones de una app en Android Studio Flavors ? Muchas veces se quiere 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). Uilizando estos metodos el código se vuelve dificil de mantener, de entender y de actualizar.

Una buena solución para realizar variantes de una applicación en Android Studio son los productFlavors. Cada versión de nuestra app 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. En el video 1 y el video 2 explicamos con más detalles perqué es importante la etiquita buidTypes y cómo utilizarla de forma adecuada.

Ejemplo 1: Definimos los métodos de compilación release y debug

 

Video 1: Que son BuildTypes

Para subir una apk a Google Play es necesario firmarla, como hemos dicho, la versión debug firma con una clave de depuración y la versión release no tiene firma. Un método para firma la aplicación consiste en utilizar Android Studio, para ello accedemos al menú Build > Generate Signed APK … . Otro método sería configuarar el ficero build.gradle, utilizando la etiqueta signingConfigs (Ver video 2)

 

Video 2: Cómo firmar una aplicación automáticamnte.

 

Método 1: Android Studio

Acceder al menú de Android Studio Build > Generated Signed APK … y seguir los pasos que nos indican.

Método 2: signingConfigs

Ejemplo 2: Utilizamos la etiqueta signingConfigs para firmar automáticamente la versión release de nuestra aplicación.

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 (ver video 3):

  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 en el ejemplo 3:

Ejemplo 3: Definir flavors

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 (ver ejemplo 4):

Ejemplo 4: Estructura flavor

 

Viendo el ejemplo 4 puedes pensar que no hay diferencia entre crear un flavor y un proyecto nuevo ya que tenemos que volvemos a crear toda la estructura. La verdad es que si hay una gran diferencia. En los flavors solo tenemos que crean las carpetas que contengan contenido nuevo Por ejemplo:

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

Esto es posible gracias a 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.

ejemplo_flavor

Imagen 1: Estructura flavor

 

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

 

Video 3: Cómo crear flavors con Gradle en Android Studio

Los ejemplos los puedes encontrar pulsando aquí:
https://github.com/PalmeraLabs/ejemploFlavors.git

Si tienes alguna duda contacta con nosotros en palmeralabs@gmail.com o escribiendo un comentario.