Distribuye apps para Android a los verificadores con fastlane


En esta guía, se describe cómo distribuir compilaciones de AAB a los verificadores con fastlane, una plataforma de código abierto que automatiza la compilación y el lanzamiento de apps para iOS y Android. Sigue las instrucciones simples que se definen en un Fastfile. Después de configurar fastlane y tu Fastfile, puedes integrar App Distribution en tu configuración de fastlane.

App Distribution se integra en el servicio de uso compartido interno de apps de Google Play para procesar los AAB que subes y entregar APK optimizados para la configuración de los dispositivos de tus verificadores. La distribución de AAB te permite hacer lo siguiente:

  • Ejecutar APK optimizados (entregados por Google Play) para los dispositivos de tus verificadores

  • Descubrir y depurar los problemas específicos del dispositivo

  • Probar funciones del paquete de aplicación, como Play Feature Delivery y Play Asset Delivery

  • Reducir el tamaño de las descargas para los verificadores

Permisos necesarios

Para subir AAB a App Distribution, debes vincular tu app de Firebase con una app en Google Play. Debes tener el nivel de acceso necesario para realizar estas acciones.

Si no tienes el acceso necesario a Firebase, puedes pedirle al propietario del proyecto de Firebase que te asigne el rol correspondiente usando la configuración de IAM de Firebase console. Si tienes preguntas sobre el acceso a tu proyecto de Firebase, incluida la búsqueda o asignación de propietarios, revisa las Preguntas frecuentes sobre "Permisos y acceso a los proyectos de Firebase".

La siguiente tabla se aplica a la vinculación de una app de Firebase con una app en Google Play y a la carga de AAB.

Acción en Firebase console Permiso de IAM obligatorio Roles de IAM que incluyen permisos obligatorios de forma predeterminada Roles adicionales requeridos
Vincula una app de Firebase a una app en Google Play firebase.playLinks.update Uno de los siguientes roles: Accede a una cuenta de desarrollador de Google Play como Administrador
Sube AAB a App Distribution firebaseappdistro.releases.update Uno de los siguientes roles: ––

Antes de comenzar

  1. Si aún no lo hiciste, agrega Firebase a tu proyecto de Android. Al final de este flujo de trabajo, tendrás una app de Firebase para Android en tu proyecto de Firebase.

    Si no utilizas ningún otro producto de Firebase, solo debes crear un proyecto y registrar tu app. Si decides usar productos adicionales, asegúrate de completar todos los pasos que se indican en Agrega Firebase al proyecto de Android.

  2. Para crear un vínculo de Firebase a Google Play y subir AAB, asegúrate de que la app cumpla con los siguientes requisitos:

    • La app en Google Play y la app de Firebase para Android deben estar registradas con el mismo nombre de paquete.

    • La app en Google Play debe estar configurada en el panel de apps y se distribuye en uno de los segmentos de Google Play (Pruebas internas, Pruebas cerradas, Pruebas abiertas o Producción).

    • La revisión de la app en Google Play debe estar completa y la app debe estar publicada. La app está publicada si en la columna Estado de la app se muestra uno de los siguientes estados: Pruebas internas (no pruebas internas en borrador), Pruebas cerradas, Pruebas abiertas o Producción.

  3. Vincula tu app de Firebase para Android a tu cuenta de desarrollador de Google Play:

    1. En Firebase console, ve a la Configuración del proyecto y, luego, selecciona la pestaña Integraciones.

    2. En la tarjeta de Google Play, haz clic en Vincular.
      Si ya tienes vínculos a Google Play, haz clic en Administrar en su lugar.

    3. Sigue las instrucciones en pantalla para habilitar la integración de App Distribution y seleccionar las apps de Firebase para Android que quieres vincular a Google Play.

    Obtén más información para realizar vinculaciones a Google Play.

Paso 1: Configura fastlane

  1. Instala y configura fastlane.

  2. Para agregar App Distribution a tu configuración de fastlane, ejecuta el siguiente comando desde la raíz de tu proyecto de Android:

    fastlane add_plugin firebase_app_distribution

    Si el comando te muestra una opción, selecciona Option 3: RubyGems.org.

Paso 2. Autentica con Firebase

Antes de usar el complemento de fastlane, debes autenticarte con tu proyecto de Firebase de una de las siguientes maneras. Según la configuración predeterminada, el complemento de fastlane busca credenciales de Firebase CLI si no se utiliza ningún otro método de autenticación.

Paso 3: Configura el Fastfile y distribuye tu app

  1. En un carril de ./fastlane/Fastfile, agrega un bloque firebase_app_distribution. Usa los siguientes parámetros para configurar la distribución:
    Parámetros de firebase_app_distribution
    app

    Obligatorio: El ID de app de Firebase de tu app. Puedes encontrar el ID de la app en Firebase console, en la página de Configuración general.

    app: "1:1234567890:android:0a1b2c3d4e5f67890"
    firebase_cli_token

    Un token de actualización que se imprime cuando autenticas el entorno de CI con Firebase CLI (consulta Usa la CLI con sistemas de CI para obtener más información).

    service_credentials_file

    La ruta al archivo JSON de tu cuenta de servicio de Google. Consulta la sección anterior sobre cómo autenticar con credenciales de cuenta de servicio.

    android_artifact_type

    Especifica el tipo de archivo de Android (APK o AAB).

    android_artifact_path

    Reemplaza apk_path (obsoleto). Es una ruta absoluta al archivo APK o AAB que quieres subir. Si no se especifica, fastlane determina la ubicación del archivo desde el carril en el que se generó el archivo.

    release_notes
    release_notes_file

    Son las notas de la versión de esta compilación.

    Puedes especificar las notas de la versión directamente, como sigue:

    release_notes: "Text of release notes"

    O bien, especificar la ruta de acceso a un archivo de texto sin formato:

    release_notes_file: "/path/to/release-notes.txt"
    testers
    testers_file

    Las direcciones de correo electrónico de los verificadores que quieres invitar.

    Puedes especificar los verificadores como una lista de direcciones de correo electrónico separada por comas, como sigue:

    testers: "ali@example.com, bri@example.com, cal@example.com"

    O bien, puedes especificar la ruta de acceso a un archivo de texto sin formato que contenga una lista de direcciones de correo electrónico separada por comas, de la siguiente manera:

    testers_file: "/path/to/testers.txt"
    groups
    groups_file

    Los grupos de verificadores que deseas invitar (consulta Administra verificadores). Los grupos se especifican con alias de grupos, que puedes consultar en Firebase console.

    Puedes especificar los grupos como una lista separada por comas, como sigue:

    groups: "qa-team, trusted-testers"

    O bien, puedes especificar la ruta de acceso a un archivo de texto sin formato que contenga una lista de nombres de grupo separada por comas, de la siguiente manera:

    groups_file: "/path/to/groups.txt"
    test_devices
    test_devices_file

    Los siguientes tipos de distribución forman parte de la función beta de verificadores automatizados.

    Los dispositivos de prueba a los que deseas distribuir las compilaciones (consulta Pruebas automatizadas).

    Puedes especificar los dispositivos de prueba como una lista de dispositivos de prueba separada por punto y coma:

    test_devices: "model=shiba,version=34,locale=en,orientation=portrait;model=b0q,version=33,locale=en,orientation=portrait"

    También puedes especificar la ruta de acceso a un archivo de texto sin formato que contenga una lista de dispositivos de prueba separada por punto y coma:

    test_devices_file: "/path/to/test-devices.txt"
    test_username

    El nombre de usuario del acceso automático que se usará durante las pruebas automatizadas.

    test_password
    test_password_file

    La contraseña del acceso automático que se usará durante las pruebas automatizadas.

    O bien, puedes especificar la ruta de acceso a un archivo de texto sin formato que contenga una contraseña:

    test_password_file: "/path/to/test-password.txt"
    test_username_resource

    El nombre del recurso del campo de nombre de usuario del acceso automático que se usará durante las pruebas automatizadas.

    test_password_resource

    El nombre de recurso del campo de contraseña para el acceso automático que se usará durante las pruebas automatizadas.

    test_non_blocking

    Ejecuta pruebas automatizadas de forma asíncrona. Visita Firebase console para ver los resultados de la prueba automática.

    debug

    Una marca booleana. Puedes configurarla como true para imprimir una salida de depuración detallada.

platform :android do
    desc "My awesome app"
    lane :distribute do
        build_android_app(task: "bundle", ...)
        # build_android_app is a built-in fastlane action.
        release = firebase_app_distribution(
            app: "1:123456789:android:abcd1234",
            testers: "tester1@company.com, tester2@company.com",
            release_notes: "Lots of amazing new features to test out!",
            android_artifact_type: "AAB"
        )
    end
end

Para hacer que la compilación esté disponible para los verificadores, ejecuta el carril de la siguiente manera:

fastlane <lane>

El valor que se muestra de la acción es un hash que representa la versión que se subió. Este hash también está disponible mediante lane_context[SharedValues::FIREBASE_APP_DISTRO_RELEASE]. Para obtener más información sobre los campos disponibles en este hash, consulta la documentación de la API de REST.

El complemento de fastlane genera los siguientes vínculos después de la carga de la versión. Estos vínculos te ayudan a administrar objetos binarios y garantizar que los verificadores y otros desarrolladores tengan la versión correcta:

  • Es un vínculo a Firebase console que muestra una sola versión. Puedes compartir este vínculo con otros desarrolladores de tu organización.
  • Es un vínculo a la versión en la experiencia de verificador (aplicación nativa para Android) que permite que los verificadores vean las notas de la versión y, luego, instalen la app en su dispositivo. El verificador necesita acceso a la versión para poder usar el vínculo.
  • Es un vínculo firmado que descarga e instala directamente el objeto binario de la app (archivo APK o AAB). El vínculo vence después de una hora.

Una vez que distribuyas la compilación, estará disponible en el panel de App Distribution de Firebase console por 150 días. Cuando falten 30 días para que venza la compilación, se mostrará un aviso de vencimiento en la consola y en la lista de compilaciones del verificador, en el dispositivo de prueba.

Los verificadores que no recibieron invitaciones para probar la app las recibirán por correo electrónico a fin de comenzar. Los verificadores existentes reciben notificaciones por correo electrónico en las que se indica que hay una compilación nueva lista para probarse. Para obtener más información sobre cómo instalar la app de prueba, consulta la guía de configuración de verificadores. En Firebase console, puedes supervisar el estado de cada verificador para determinar si aceptó la invitación y si descargó la app.

Para aumentar automáticamente el número de la compilación cada vez que creas una versión nueva en App Distribution, puedes usar la acción firebase_app_distribution_get_latest_release y, por ejemplo, el complemento increment_version_code de fastlane (opcional). En el siguiente código, se proporciona un ejemplo de cómo aumentar automáticamente el número de la compilación:

lane :increment_version do
  latest_release = firebase_app_distribution_get_latest_release(
    app: "<your Firebase app ID>"
  )
  increment_version_code({ version_code: latest_release[:buildVersion].to_i + 1 })
end

Para ver más detalles sobre la acción firebase_app_distribution_get_latest_release, consulta Obtén información sobre la versión más reciente de la app.

Paso 4 (opcional): Administra verificadores para la distribución

Puedes agregar y quitar verificadores de tu proyecto o grupo con el archivo Fastfile o mediante la ejecución directa de acciones de fastlane. Ejecutar acciones directamente anula los valores establecidos en el Fastfile.

Una vez que se agrega un verificador a tu proyecto de Firebase, puedes incluirlo en versiones individuales. Los verificadores que se quitan de tu proyecto de Firebase ya no tienen acceso a las actualizaciones del proyecto, pero es posible que conserven el acceso a las versiones durante un período determinado.

Si tienes muchos verificadores, deberías usar grupos.

Utilizar Fastfile

# Use lanes to add or remove testers from a project.
lane(:add_testers) do
  firebase_app_distribution_add_testers(
    emails: "foo@google.com,bar@google.com"
    # or file: "/path/to/testers.txt"
    group_alias: "qa-team" # (Optional) add testers to this group
  )
end

lane(:remove_testers) do
  firebase_app_distribution_remove_testers(
    emails: "foo@google.com,bar@google.com"
    # or file: "/path/to/testers.txt"
    group_alias: "qa-team" # (Optional) remove testers from this group only
  )
end
# Add or remove testers with the terminal
$ fastlane add_testers
$ fastlane remove_testers

Ejecuta acciones de fastlane

fastlane run firebase_app_distribution_create_group display_name:"QA Team" alias:"qa-team"
fastlane run firebase_app_distribution_add_testers group_alias:"qa-team" emails:"foo@google.com,bar@google.com"
fastlane run firebase_app_distribution_remove_testers group_alias:"qa-team" emails:"foo@google.com,bar@google.com"
fastlane run firebase_app_distribution_delete_group alias:"qa-team"

También puedes especificar verificadores con --file="/path/to/testers.txt, en lugar de --emails.

Las tareas firebase_app_distribution_add_testers y firebase_app_distribution_remove_testers también aceptan los siguientes argumentos:

  • project_name: Es el número de tu proyecto de Firebase.
  • group_alias (opcional): Si se especifica, los verificadores se agregan (o se quitan) del grupo especificado.
  • service_credentials_file: Es la ruta de acceso al archivo de credenciales del servicio de Google.
  • firebase_cli_token: Es el token de autenticación de Firebase CLI.

service_credentials_file y firebase_cli_token son los mismos argumentos que usa la acción de carga.

Paso 5 (opcional): Obtén información sobre la versión más reciente de la app

Puedes usar la acción firebase_app_distribution_get_latest_release para recuperar información sobre la versión más reciente de tu app en App Distribution, incluidos los datos y las notas de la versión de la app, así como la hora de creación. Los casos de uso incluyen aumentar automáticamente la versión y transferir las notas de la versión anterior.

El valor que se muestra de la acción es un hash que representa la versión más reciente. Este hash también está disponible mediante lane_context[SharedValues::FIREBASE_APP_DISTRO_LATEST_RELEASE]. Para obtener más información sobre los campos disponibles en este hash, consulta la documentación de la API de REST.

Parámetros

Parámetros de firebase_app_distribution_get_latest_release
app

Obligatorio: El ID de app de Firebase de tu app. Puedes encontrar el ID de la app en Firebase console, en la página de Configuración general.

app: "1:1234567890:android:0a1b2c3d4e5f67890"
firebase_cli_token

Un token de actualización que se imprime cuando autenticas el entorno de CI con Firebase CLI (consulta Usa la CLI con sistemas de CI para obtener más información).

service_credentials_file

La ruta al archivo JSON de tu cuenta de servicio de Google. Consulta la sección anterior sobre cómo autenticar con credenciales de cuenta de servicio.

debug

Es una marca booleana. Puedes configurarla como true para imprimir una salida de depuración detallada.

Próximos pasos