Índice
- Introducción
- Entorno
- Proceso
- Conclusiones
1. Introducción
Firebase incorporó en septiembre de 2019 (aún en fase beta) a su plataforma para aplicaciones móviles una herramienta para la distribución de aplicaciones beta. En este tutorial se va a explicar cómo instalarla y utilizarla junto a Fastlane para simplificar la distribución entre grupos de tester o usuarios particulares a los cuales queramos proporcionar acceso a una versión preliminar de nuestra aplicación.
2. Entorno
El tutorial está escrito usando el siguiente entorno:
- Hardware: Portátil MacBook Pro 15’ (2.3 GHz Intel Core i9, 32 GB 2400 MHz DDR4)
- Sistema Operativo: Mac OS X Catalina 10.15.4
- Ruby 2.6.3
-
Fastlane 2.145.0
3. Proceso
Configuración de Firebase.
En primer lugar es necesario habilitar la distribución de nuestra app en nuestro proyecto de Firebase yendo a Quality -> App Distribution
Posteriormente seleccionamos la aplicación sobre la que queremos permitir la distribución y pulsamos en «Get Started».
Lo siguiente que vamos a hacer es crear un grupo para las pruebas, vamos a la pestaña de la herramientas «Testers and Groups» y seleccionamos añadir grupo. En mi caso usaré el nombre «testers» y añadiré mi correo a dicho grupo. (También es posible añadir testers individuales que podríamos especificar individualmente en el momento de realizar la distribución).
Tras dejar configurados los grupos, ahora sí, vamos al meollo de la cuestión… ¡la automatización!
Automatización con Fastlane
Abrimos un terminal y lo primero que vamos a hacer es instalar el cliente de firebase que nos permitirá logarnos y que fastlane pueda posteriormente usar el plugin de distribución. Para instalarlo ejecuta en el terminal
curl -sL firebase.tools | bash
y hacemos login ejecutando
firebase login
(Si necesitas hacer logout puedes ejecutar firebase logout)
Se abrirá el navegador solicitándote los permisos de tu cuenta de google. Una vez aceptados estamos listos para proseguir.
Ahora será necesario ir al directorio del proyecto que queramos distribuir en firebase y ejecutar
fastlane add_plugin firebase_app_distribution
Una vez añadido el plugin podemos crear una lane en nuestro Fastfile como el siguiente con un bloque firebase_app_distribution() :
desc "Submit a new Beta Build to FirebaseAppDistribution" lane :beta do |options| #Tarea que tengamos definida para realizar build. Para este tutorial simplificamos con gradle(task: "clean assembleDebug") firebase_app_distribution( app: "APP_ID", testers: "", groups: options[:group], release_notes: options[:notes], firebase_cli_path: "/usr/local/bin/firebase", apk_path: "./app/build/outputs/apk/debug/app-debug.apk" #ipa_path: "" Para aplicaciones para iOS ) end
En mi caso he pasado por parámetro ciertos valores de bloque pero esto puede ser adaptado a las necesidades de cada proyecto.
Los parámetros del bloque de firebase consisten en lo siguiente:
- app: Aquí debes introducir el AppId de firebase que encontrarás en la sección de configuración del proyecto.
- testers: Lista de emails para compartir la aplicación
- groups: Lista de ids de grupos de testers. El id de un grupo lo puedes encontrar en el apartado de app distribution como se muestra en la imagen.
- release_notes: Texto descriptivo con las notas de la release.
- firebase_cliepath: Ruta del cliente de firebase.
- apk_path/ipa_path: Ruta al archivo de la aplicación.
(Podéis ver más opciones aqui)
Una vez configurado podríamos realizar la distribución de la siguiente manera.
fastlane beta note:"Release notes" group:testers
[10:43:58]: --------------------------------------- [10:43:58]: --- Step: firebase_app_distribution --- [10:43:58]: --------------------------------------- [10:43:58]: ▸ i getting app details... [10:44:01]: ▸ i uploading distribution... [10:44:07]: ▸ ✔ uploaded distribution successfully! [10:44:07]: ▸ i adding release notes... [10:44:08]: ▸ ✔ added release notes successfully [10:44:08]: ▸ i adding testers/groups... [10:44:09]: ▸ ✔ added testers/groups successfully +------+---------------------------+-------------+ | fastlane summary | +------+---------------------------+-------------+ | Step | Action | Time (in s) | +------+---------------------------+-------------+ | 1 | default_platform | 0 | | 2 | clean assembleDebug | 14 | | 3 | firebase_app_distribution | 11 | +------+---------------------------+-------------+ [10:44:10]: fastlane.tools finished successfully ?
4. Conclusiones
Esta integración entre firebase y fastlane agiliza la distribución y nos ahorra tiempo generando apks, subiéndolos a la plataforma, etc. Se puede complementar con otros scripts o mejorando el bloque con otros de los parámetros posibles. Podéis documentaros más en las correspondientes webs de firebase y fastlane.
El siguiente paso sería aprovechar esta funcionalidad en sistemas de integración continua para desarrollos mobile como la de este ejemplo y configurarlo para que ante ciertos eventos de actualización del repositorio se distribuya automáticamente la beta. De dicha integración hablaré en un futuro tutorial ya que tiene sus particularidades. ¡Hasta el siguiente!