1. Antes de comenzar
En este codelab, aprenderás a usar Firebase App Distribution y su complemento fastlane a fin de distribuir una app para iOS a los verificadores, recopilar UDIDs de dispositivos de prueba y registrarlos en el perfil de aprovisionamiento de tu app, de modo que puedas obtener compilaciones ad hoc rápidamente para los verificadores.
Qué aprenderás
- Cómo subir y distribuir una app para iOS previa al lanzamiento (ad hoc) a los verificadores con Firebase App Distribution y fastlane
- Cómo registrarte como verificador y descargar la app distribuida en un dispositivo de prueba
- Cómo registrar rápidamente dispositivos de prueba mediante la exportación de UDIDs con el complemento fastlane de App Distribution.
- Cómo actualizar el perfil de aprovisionamiento de tu app y volver a subirlo para su distribución
Requisitos
- Una Cuenta de Google
- Una máquina de Apple que tenga instalado XCode 11.7 o versiones posteriores
- Una app para iOS ad hoc previa al lanzamiento integrada en Xcode
- Una cuenta de desarrollador de Apple pagada
- Un dispositivo iOS físico para realizar pruebas
La app de simulador de iOS funcionará para la mayor parte del codelab, pero los simuladores no pueden descargar versiones.
De todos modos, puedes verificar que la configuración haya funcionado verificando que el botón “Descargar” aparezca en la app web de verificadores de App Distribution.
2. Comenzar
Configura fastlane
App Distribution se integra a fastlane para que puedas automatizar la distribución de las compilaciones de tu app previas al lanzamiento. App Distribution se integra en la configuración de fastlane.
- Instala y configura fastlane.
- Ejecuta
fastlane init
en el directorio raíz de tu proyecto durante la configuración y elige "Manual setup". Verás un subdirectorio llamadofastlane
que contieneFastfile
,Appfile
yPluginfile
, que usarás para configurar fastlane.
Instala Firebase CLI
También debes instalar Firebase CLI. Si usas macOS o Linux, puedes ejecutar el siguiente comando cURL:
curl -sL https://firebase.tools | bash
Si usas Windows, lee las instrucciones de instalación para obtener un objeto binario independiente o instalarlo a través de npm
.
Una vez que hayas instalado la CLI, ejecutar firebase --version
debería informar una versión de 12.0.0
o superior:
$ firebase --version 12.0.0
3. Compila tu app con fastlane
Cómo compilar tu app
- Configura algunas variables globales para fastlane en
./fastlane/Appfile.
. Incluye el ID de la app y el de Apple:
app_identifier("<your app's bundle identifier>")
apple_id("<your Apple id>")
- Crea tu primer carril y usa la acción
build_app
de fastlane (también conocida comogym
) para compilar la app. Para ello, agrega lo siguiente a tu./fastlane/Fastfile
:
default_platform(:ios)
lane :build do
build_app(export_method: "ad-hoc")
end
- Firma la app para distribuirla.
En este codelab, administrarás tu propia certificación y tu perfil con get_certificates
(también conocido como cert
), que genera certificados de firma de forma local y almacena todo en tu llavero de macOS. Sin embargo, por lo general, se recomienda usar fastlane sync_code_signing action
(también conocido como match
) para administrar de forma segura los perfiles y certificados de firma de código de tu equipo.
lane :build do
get_certificates()
build_app(export_method: "ad-hoc")
end
- Configura un perfil de aprovisionamiento para tu app con la acción
get_provisioning_profile
(también conocida comosigh
). Esta opción te permite compartir la app con los verificadores.
lane :build do
get_certificates()
get_provisioning_profile(adhoc: true)
build_app(export_method: "ad-hoc")
end
- [Opcional] Si nunca ejecutaste tu app, ejecuta el siguiente comando para crearla en la consola para desarrolladores de Apple:
$ fastlane produce --skip_itc
- Por último, ejecuta el carril para compilar tu app.
Se te pedirán tu ID de Apple, la contraseña (que está almacenada en el llavero) y el ID del paquete de tu app.
$ fastlane build
Si tienes algún problema, consulta la guía para solucionar problemas de fastlane.
4. Sube la app a Firebase
Ahora que compilaste tu app, puedes subirla a App Distribution.
Crea y configura un proyecto de Firebase
- Accede a Firebase.
- En Firebase console, crea o agrega un proyecto nuevo y, luego, asígnale el nombre “Codelab de exportación de UDID”.
No es necesario que habilites Google Analytics en este proyecto.
- Haz clic en Crear proyecto.
Agrega tu app para iOS al proyecto
- Haz clic en el ícono de iOS para crear una nueva app de Firebase para iOS y, luego, ingresa el ID del paquete de tu app.
- Omite los próximos pasos y, luego, haz clic en Ir a la consola. Podrás agregar SDKs a tu app más adelante.
Tu proyecto y app ahora están disponibles en la página Descripción general del proyecto.
Habilita App Distribution
- En la sección Lanzamiento y supervisión, haz clic en App Distribution.
- Después de aceptar las condiciones, haz clic en “Comenzar” para habilitar App Distribution en tu app.
Configura una distribución en fastlane
- Ejecuta el siguiente comando desde la raíz de tu proyecto de iOS para agregar App Distribution a tu configuración de fastlane.
Si el comando te muestra una opción, selecciona Opción 3: RubyGems.org:
$ fastlane add_plugin firebase_app_distribution
- Confirma que el complemento esté instalado:
$ fastlane
El resultado debería mostrar fastlane-plugin-firebase_app_distribution
en la lista de complementos instalados.
- Después de confirmar que se instaló el complemento, elige la opción 0 para cancelar.
Autentica el proyecto de Firebase
Para usar el complemento fastlane, primero debes autenticar el proyecto de Firebase.
- Ejecuta el siguiente comando para conectar la CLI a tu Cuenta de Google:
$ firebase login
- Cuando el comando imprima un vínculo de autenticación, ábrelo en un navegador.
- Cuando se te solicite, accede a tu Cuenta de Google y otorga permiso para acceder a tu proyecto de Firebase.
Cómo distribuir tu app
Ya está todo listo para distribuir tu app.
- En la parte superior de tu
./fastlane/Fastfile
, define una variable llamadafirebase_app_id
. Reemplaza<your_app_id>
por el ID de la app de Firebase que creaste (puedes encontrarlo en la página Configuración del proyecto).
Fastfile
está escrito en Ruby, así que usa la sintaxis de Ruby para definir las variables.
firebase_app_id = "<your_app_id>"
- Agrega un carril nuevo llamado
distribute
que llame al carril de compilación y, luego, distribuya tu app mediante la acciónfirebase_app_distribution
.
lane :distribute do
build
firebase_app_distribution(
app: firebase_app_id,
release_notes: "Try out this app!",
)
end
- Ejecuta el nuevo carril para compilar tu app y crear una distribución.
$ fastlane distribute
En este punto, tu Fastfile debería verse de la siguiente manera:
firebase_app_id = "<your Firebase app ID>"
default_platform(:ios)
lane :build do
get_certificates()
get_provisioning_profile(adhoc: true)
build_app(export_method: "ad-hoc")
end
lane :distribute do
build
firebase_app_distribution(
app: firebase_app_id,
release_notes: "Try out this app!",
)
end
Después de actualizar Firebase console, verás la versión nueva de tu app.
5. Invita a verificadores a descargar tu app
Cuando un verificador acepta una invitación para probar una compilación ad hoc, se le solicita permiso para compartir su UDID. Si aceptan, App Distribution recopila la información de su dispositivo y te notifica por correo electrónico. En esta sección, te agregarás como verificador para descargar y probar la app que distribuiste.
Cómo agregarte como verificador de la versión
- En
firebase_app_id
, en la parte superior de Fastfile, crea una variable que retenga a los verificadores. Incluye tu propia dirección de correo electrónico y otras direcciones de correo electrónico opcionales que quieras probar.
firebase_app_id = "<your Firebase app ID>"
app_testers = [
"your@email.com",
"another@email.com",
]
- Aplica el método Array#join de Ruby para convertir el array
app_testers
en una string separada por comas que espera el parámetrotesters
. Luego, pasa el resultado al parámetrotesters
defirebase_app_distribution.
.
lane :distribute do
build
firebase_app_distribution(
app: firebase_app_id,
release_notes: "Try out this app!"
testers: app_testers.join(","),
)
end
En este punto, tu Fastfile debería verse de la siguiente manera:
firebase_app_id = "<your Firebase app ID>"
app_testers = [
"your@email.com",
"another@email.com",
]
default_platform(:ios)
lane :build do
get_certificates()
get_provisioning_profile(adhoc: true)
build_app(export_method: "ad-hoc")
end
lane :distribute do
build
firebase_app_distribution(
app: firebase_app_id,
release_notes: "Try out this app!",
testers: app_testers.join(","),
)
end
- Vuelve a correr por el carril.
$ fastlane distribute
Cuando ejecutes el carril, los verificadores que hayas agregado recibirán un correo electrónico de invitación de App Distribution con la notificación de la nueva versión disponible. En Firebase console, ahora puedes ver los verificadores que agregaste a la versión de tu app.
Dado que incluiste tu dirección de correo electrónico, recibirás un mensaje de Firebase App Distribution en el que se te invitará a probar la app. Ahora eres el primer verificador. Continúa con la siguiente sección para prepararte como verificador en tu dispositivo de prueba.
Registra tu dispositivo de prueba
Como verificador, deberás acceder a Google en tu dispositivo de prueba para acceder a las versiones de la app para las que recibiste una invitación. Dado que tu compilación de prueba es una versión ad hoc, también deberás registrar el dispositivo de prueba mediante la instalación del perfil de Firebase. Luego, podrás acceder a las versiones que estén disponibles desde la app web para verificadores de App Distribution mediante el clip web que se agrega a la pantalla principal de tu dispositivo.
- En tu dispositivo de prueba iOS, abre el correo electrónico enviado desde Firebase App Distribution y presiona el vínculo Comenzar. Asegúrate de abrir el vínculo en Safari.
- Ahora te encuentras en la app web de verificadores de App Distribution. En la página que aparece, accede con tu Cuenta de Google y presiona Aceptar invitación.
- Ahora puedes ver los lanzamientos a los que te invitaron. Presiona Registrar dispositivo en una de las versiones.
- Cuando se te solicite, descarga el perfil de Firebase y, luego, instálalo en la app de Configuración.
Cuando se instala el perfil, se otorgan a Firebase los siguientes permisos:
- Registrar el dispositivo de prueba mediante la recopilación del ID de dispositivo único (UDID)
Firebase envía a todos los propietarios y editores del proyecto de Firebase un correo electrónico que incluye el UDID del dispositivo de prueba.
- Instalar un clip web en la pantalla principal del dispositivo de prueba. El clip web abre la app web de verificadores de App Distribution, que te permite instalar todas tus apps de prueba y acceder a ellas.
En la app web de verificadores de App Distribution, tu dispositivo de prueba ahora está registrado para la versión de tu app.
Ahora que compartiste el UDID de tu dispositivo de prueba con Firebase, puedes reanudar tu trabajo como desarrollador. En la pestaña Verificadores del panel de App Distribution, la información de verificadores ahora aparece debajo de la versión de la app con el estado "Aceptado":
En la siguiente sección, agregarás el UDID del dispositivo al perfil de aprovisionamiento de tu app y, luego, compilarás una versión de la app que funcione con el dispositivo de prueba.
Exporta los UDID de los dispositivos de verificadores
Como desarrollador, recibirás un correo electrónico de Firebase con el UDID del dispositivo de prueba. Como opción, App Distribution facilita la recopilación de varios UDID de dispositivos nuevos a la vez, ya que te permite exportarlos directamente desde Firebase console como un archivo de texto sin procesar.
- Para exportar todos los UDID, abre la pestaña Verificadores y grupos.
- Haz clic en Exportar UDIDs de Apple.
El archivo debe contener el UDID de tu dispositivo de prueba.
Device ID Device Name Device Platform
1234567890 udid.codelab.tester@gmail.com - iPhone SE 2nd Gen ios
Los UDID también se pueden exportar desde la línea de comandos con fastlane, que es lo que harás en la siguiente sección.
6. Actualiza el perfil de aprovisionamiento de tu app y vuelve a compilarlo
Ahora, agregarás el UDID de tu dispositivo de prueba al perfil de aprovisionamiento de tu app, volverás a compilar una versión de la app que funcione para el dispositivo y distribuirás la nueva versión.
Agregar carril de exportación de UDID
- Agrega otra variable en la parte superior del Fastfile y configúrala con una ruta de acceso al archivo en la que se descargarán los UDID de los dispositivos de los verificadores.
firebase_app_id = "<your Firebase app ID>"
app_testers = [
"your@email.com",
"another@email.com",
]
tester_udids_file = "tester_udids.txt"
- Configura un nuevo carril que use la acción de exportación de UDID del complemento de App Distribution para descargar los UDID de los verificadores, tal como lo hiciste desde la consola.
lane :download_udids do
firebase_app_distribution_get_udids(
app: firebase_app_id,
output_file: tester_udids_file,
)
end
- Ejecuta el siguiente carril para descargar los UDID.
$ fastlane download_udids
- Imprime el archivo descargado, que debe contener los UDID del dispositivo de prueba.
$ cat tester_udids.txt
Agrega dispositivos a la Consola para desarrolladores de Apple
- Crea el siguiente carril para agregar los UDID a tu lista de dispositivos en la consola para desarrolladores de Apple, de modo que puedas agregarlos a tu perfil de aprovisionamiento con la acción
register_devices
de fastlane :
lane :add_new_devices do
register_devices(devices_file: tester_udids_file)
end
- Luego, sigue por el carril:
$ fastlane add_new_devices
Deberías ver los dispositivos nuevos en la lista de dispositivos de la consola para desarrolladores.
Agrega dispositivos a tu perfil de aprovisionamiento
- Agrega el argumento
force
al paso del perfil de aprovisionamiento en tu carrilbuild
para forzarlo a recoger dispositivos nuevos cada vez que compiles.
lane :build do
get_certificates()
get_provisioning_profile(adhoc: true, force: true)
build_app(export_method: "ad-hoc")
end
Vuelve a ejecutar el carril para compilar y subir
Ahora, actualizarás tu carril distribute
con los nuevos carriles para agregar los dispositivos al perfil de aprovisionamiento, volver a compilar la app y, luego, distribuirla.
- Llama a los nuevos carriles desde
distribute
:
lane :distribute do
download_udids
add_new_devices
build
firebase_app_distribution(
app: "1:123456789:ios:abcd1234",
release_notes: "Try out this app!"
testers: app_testers.join(","),
)
end
- Ejecuta el carril
distribute
:
$ fastlane distribute
En este punto, tu Fastfile debería verse de la siguiente manera:
firebase_app_id = "<your Firebase app ID>"
app_testers = [
"your@email.com",
"another@email.com",
]
tester_udids_file = "tester_udids.txt"
default_platform(:ios)
lane :build do
get_certificates()
get_provisioning_profile(adhoc: true, force: true)
build_app(export_method: "ad-hoc")
end
lane :distribute do
download_udids
add_new_devices
build
firebase_app_distribution(
app: firebase_app_id,
release_notes: "Try out this app!",
testers: app_testers.join(","),
)
end
lane :download_udids do
firebase_app_distribution_get_udids(
app: firebase_app_id,
output_file: tester_udids_file,
)
end
lane :add_new_devices do
register_devices(devices_file: tester_udids_file)
end
Descarga la versión desde el dispositivo de prueba
Ahora que tu app incluye los UDID del dispositivo de prueba, se pueden instalar en los dispositivos de prueba.
- En tu dispositivo de prueba, regresa a la app web de verificadores de App Distribution mediante el vínculo que se incluye en el correo electrónico o el ícono que se encuentra en la pantalla principal del dispositivo.
Cuando navegas a la app del codelab de UDID, puedes ver que la versión está lista para descargarse.
- Si estás en un dispositivo físico, presiona Descargar; luego, instala y ejecuta la app.
7. ¡Felicitaciones!
Ya configuraste App Distribution y fastlane para automatizar el proceso de prueba previo al lanzamiento. Ahora, cuando quieras invitar a verificadores adicionales o agregar sus UDID a la app, solo tendrás que ejecutar un comando: fastlane distribute
.
Por lo tanto, ya no es necesario recopilar UDID de los verificadores de forma individual ni acceder a la consola para desarrolladores de Apple para actualizar las listas de dispositivos o los perfiles de aprovisionamiento. Ni siquiera es necesario abrir Xcode.
Este flujo de trabajo es fácil de configurar para que se ejecute por hora o por día en tu entorno de integración continua.
Lecturas adicionales
- Explora las funciones de Firebase App Distribution, incluido nuestro SDK en la aplicación para iOS.
- Más información sobre fastlane
- Administra la firma de código de tu equipo con
match
. - Integra fastlane en tu CI