Configuración Aplicaciónes para debug y release

De Telstock Wiki
Revisión del 02:37 28 mar 2019 de Caorta (discusión | contribuciones)
(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Saltar a: navegación, buscar

Con los cambios para la integración continua es necesario cambiar la forma en que se configuran los valores de QA y Producción de las aplicaciones. Actualmente lo que se realiza es tener archivos de configuración dentro del código java de las aplicaciones, se comenta y descomenta dependiendo del ambiente que se va ha liberar. Esto debe cambiar y el siguiente manual trata de explicar el como se configuran estos valores desde el archivo gladle.


Configuración de variables para debug y reléase.

Cuando se requiere configurar alguna constante como el caso de las urls que cambia dependiendo el ambiente se pueden declarar desde la propiedad buildTypes y dentro de las etiquetas release o debug, se crea la variable que puede ser utilizada. EJ


1.png


Para hacer uso de esas variables, se mandan llamar con la clase BuildConfig + el nombre de la variable.

Androiddebugreleaseconfig 2.png


Res Values.

También en ocaciones es necesario tener valores de recursos que sean parametrisables, por ejemplo el nombre de la aplicación, colores diferentes, para esto se utiliza la propiedad resValue, puede ser usada para propiedades de tipo: string, color, bool,array, etc.

Esta es llamada dentro del BuildConfig.


ejemplo de creacion de resValue

El llamado de estos recursos se realiza de la misma forma en que si son creados desde los archivos xml.


llamado de resvalue



ApplicationID – Diferente.

Si se requiere que la aplicación de debug y la productiva tengan un applicationId diferente, ya sea para que los registros de logs sean diferentes o que se puedan instalar en el mismo dispositivo, se puede configurar 1 prefijo a la aplicación. Se configura en la propiedad buildTypes dentro del gradle:

defaultConfig {

       applicationId "mx.com.telstock"   

}

buildTypes {

   release {
       applicationIdSuffix ".dci"
   }
   debug {
       applicationIdSuffix ".dci_d"
   }

}

De esta manera se generaría por ejemplo un paquete mx.com.telstock.dci_d para la app de debug y el paquete mx.com.telstock.dci para la app de release. Importante: En caso de que se haya utilizado firebase es necesario agregar ambos aplicationID al proyecto.



Configuracion de productFlavors:

En ciertos proyectos es necesario tener configuraciones de recursos o funcionalidades diferentes, p.e. En DCI-Intervali, es la misma aplicación, pero hace uso de drawables diferentes. En estos casos se utilizan los productosFlavors.


Para crear 1 productFlavor este se crea debajo de la propiedad buildType.


debugrelease_producflavor


De esta manera ya podemos tener 1 aplicación que va poder hacer uso de recursos compartidos y cada 1 va ha poder tener recursos propios.

Después de ejecutar el sync al gradle, si abrimos desde Android studio la ventana de build variants, podremos ver que se nos despliegan los relese y debug para cada 1 de las aplicaciones.


debugrelease6


Después de esto es necesario crear las carpetas de los flavors que creamos, en este caso DCI e intervali, en la carpeta de src del proyecto al mismo nivel que main.

debugrelease_siete


En cada una de las carpetas se crean los directorios java y res.


debug_release_ocho


En el directorio java se crea el mismo paquete de main.


debug_release_nueve


Main va a contener todos los recursos y funcionalidades que compartirá la aplicación, y en las carpetas dci e intervali, será los recursos y funcionalidades propias de cada proyecto. En el caso de ejemplo solo son los drawables los que varían de aplicación, por lo que se copiaran los drawables para cada aplicación en la respectiva carpeta de res en cada directorio.


androiddebugreleaseconfig_10.png


Al generar las aplicaciones, se generaran con un paquete diferente y con los recursos diferentes, En caso p.e. que tengan configuraciones de colores o string diferentes se podrían crear sus archivos propios para cada aplicación o se pueden crear desde el archivo gradle como propiedades resValue.


Paginas a consultar:

https://developer.android.com/studio/build/application-id https://developer.android.com/studio/build/build-variants?hl=ES https://developer.android.com/studio/build/build-variants?hl=ES#sourcesets https://bluefletch.com/blog/specifying-your-android-host-url-using-gradle/