Job Build Android Apps

Página sobre cómo se configura un job en el jenkins para poder hacer builds de aplicaciones Android.

=Descargar e Instalar SDK=

Descargar
1. Descargar Stand Alone SDK Tools https://developer.android.com/sdk/installing/index.html

2. Descomprimir el archivo: tar xzvf android-sdk_rXX.X.X-linux.tgz

Agregar paquetes SDK faltantes
Fuente: https://developer.android.com/sdk/installing/adding-packages.html

1. Abrir el programa Android SDK Manager

 * Windows: Doble click en el archivo SDK Manager.exe que esta ubicado en la raíz de la carpeta descomprimida.
 * Mac/Linux: Abrir una terminal, entrar al directorio tools/ en la carpeta descomprimida y ejecutar: ./android sdk

Se abrirá una ventana como la siguiente:



2. Seleccionar los paquetes

 * En la carpeta Tools, seleccionar:
 * Android SDK Tools
 * Android SDK Platform-tools
 * Android SDK Build-tools (ultima version)


 * En la carpeta Android X.X.X (la ultima version) seleccionar:
 * SDK Platform
 * Una imagen de sistema para el emulador, ejemplo: ARM EABI v7a System Image
 * Google APIs


 * En la carpeta Extras, seleccionar:
 * Android Support Repository
 * Android Support Library
 * Google Repository
 * Google Play services

3. Instalar los paquetes

 * Click Install X packages.
 * En la próxima ventana, se deben aceptar las licencias de cada paquete.




 * Click Install.


 * Esperar a que se termine la instalación de paquetes y no cerrar nada.



=Configurar el Job=

Precondicion

 * Asegurarse de que el usuario jenkins sea el dueño del directorio.

chown -R jenkins /dir/to/sdk

Pasos del job

 * Obtener el codigo del repositorio. En el paso Source Code Management.


 * En el paso Build
 * Primero se necesita agregar la variable de entorno ANDROID_HOME que es el directorio de instalación del sdk dentro de un Execute shell, ejemplo: export ANDROID_HOME=/opt/android-sdk-linux
 * Y después se utiliza Invoke Gradle script. Ejemplo de configuracion:



ARTIFACT=`find mf_android/build/outputs/apk/ -name mf_android-release*.apk | grep -v 'unaligned'` ARTIFACT_BN=${ARTIFACT/.apk/-$BUILD_NUMBER.apk} mv $ARTIFACT $ARTIFACT_BN BASE_NAME=`basename $ARTIFACT_BN` ARTIFACT_MD5=`md5sum $ARTIFACT_BN | cut -d ' ' -f 1` echo "BUILD_DESCRIPTION MD5 ($BASE_NAME) = $ARTIFACT_MD5"
 * Luego otro Execute shell con la logica que obtenga el nombre del nuevo apk. Ejemplo de captura:
 * 1) !/bin/bash


 * Para finalizar se puede usar el paso Archive Artifacts para guardar el archivo creado. Ejemplo de captura.

Files to archive: mf_android/build/outputs/apk/mf_android-release*.apk Excluded Files: mf_android/build/apk/mf_android-release*unaligned.apk

rm -r {directorio de de apk anteriores}
 * Para disponibilizar el apk para su descarga se debe agregar un Execute Shell

cp target/*.war {directorio de apk disponibles}