Tag Archives: Desarrollo

Como tener una version Debug y PROD de forma simultánea (Android)

Android

Cuando desarrollamos una app Android, nos puede interesar tener diferentes versiones de desarrollo, como por ejemplo, versiones con diferentes funcionalidades, o que la versión de PROD ataque una api diferente a la de DEV. Otro caso también, la de compilar nuestra versión PRO o Free de una aplicación.

Si esto lo intentamos sin ninguna configuración, cuando, por ejemplo, tenemos la versión de producción y queremos seguir desarrollando, nos va a avisar que ya existe una aplicación en el dispositivo y nos dará la opción de sobrescribirla.

Pues con Gradle, tenemos la solución, definiendo Flavors y Build types. Los Flavors de Gradle sirve para definir diferentes caracteristicas de una aplicación, como el siguiente ejemplo:

Como ves, hemos definido un flavor para la versión free, donde la ID de la aplicación será “com.dimaslz.appname” donde el nombre de la version será “v0.0.1 free” y terminado en “.pro” y version “v0.0.1 pro” para la versión de pago (premium) de nuestra app.

Esto es algo muy básico, pero podemos configurar otras caracteristicas como:

  • minSdkVersion
  • targetSdkVersion
  • versionCode
  • versionName
  • package name (sobresscribe el valor del manifiesto)
  • release signing info (keystore, key alias, passwords,…).
  • BuildConfig: Ability to provide custom Java code.
  • NDK ABI filter (Not implemented yet)
  • test info
    • package name for test app (optional, default is <base>.test)
    • InstrumentationTestRunner class (optional)
  • Additionally, Product Flavor can provide their own source code, resources and manifest.

Opciones extraídas de: http://tools.android.com/tech-docs/new-build-system/build-system-concepts (También referencia para consultar sobre Flavors)

Y ahora, supongamos que para cuando estamos desarrollando, queremos que nuestra app, sea independiente de la versión en producción, por lo que en los buildTypes, deberíamos añadir nuestra compilación cuando estemos en modo debug:

Como puedes ver, en este caso tenemos definido que cuando estemos en modo debug, a la app se le añadirá un sufijo “.debug”, por lo que el appID será “com.dimaslz.appname.debug”.

Esto, funcionaría por defecto, pero por ejemplo, si queremos compilar la versión “premium” en modo debug, deberemos ir a la ventana buildVariants  y elegimos la opción “premiumDebug”, esto nos compilará y ejecutará una aplicación con el appID “com.dimaslz.appname.pro.debug”.

Build Variant Android Studio

Es bastante intuitivo, asociaréis enseguida la variante. Tenéis mas información aquí: https://developer.android.com/tools/building/configuring-gradle.html 

Con todo esto, podremos definir resources que sean visibles para cada tipo de build. Por ejemplo, queremos que la versión de Debug, nos aparezca el título “AppName-Debug”, pues creamos un resource llamado “debug.xml” donde sobre-escribimos el nombre de nuestra string “app_name” y le ponemos el texto que gustemos.

Un ejemplo visual:

Ejemplo string version PremiumEjemplo string version FREE

Y como intento acostumbrar, os dejo el ejemplo practico en un repo de Github para que probéis algo muy básico. Hay bastante documentación al respecto y la distribución de recursos ya depende de ti y de la magnitud del proyecto.

Repositorio Github: https://github.com/dimaslz/DemoAndroidThings

tags: , , ,