Distribuye apps para Android a los verificadores con Gradle


Puedes integrar App Distribution en tu proceso de compilación de Android con el complemento de Gradle para App Distribution. El complemento te permite especificar los verificadores y las notas de la versión en el archivo Gradle de tu app, lo que te permite configurar distribuciones para diferentes tipos y variantes de compilación de tu app.

En esta guía, se describe cómo distribuir Android App Bundles (AAB) a los verificadores. con el complemento de Gradle para App Distribution.

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 tu proyecto de Android

  1. Agrega el complemento de Gradle para App Distribution como dependencia en el archivo de Gradle (<project>/build.gradle.kts o <project>/build.gradle) de nivel de raíz (a nivel del proyecto):

    Kotlin

    plugins {
        // ...
        id("com.android.application") version "7.3.0" apply false
    
        // Make sure that you have the Google services Gradle plugin dependency
        id("com.google.gms.google-services") version "4.4.2" apply false
    
        // Add the dependency for the App Distribution Gradle plugin
        id("com.google.firebase.appdistribution") version "5.0.0" apply false
    }

    Groovy

    plugins {
        // ...
        id 'com.android.application' version '7.3.0' apply false
    
        // Make sure that you have the Google services Gradle plugin dependency
        id 'com.google.gms.google-services' version '4.4.2' apply false
    
        // Add the dependency for the App Distribution Gradle plugin
        id 'com.google.firebase.appdistribution' version '5.0.0' apply false
    }
  2. En el archivo de Gradle (generalmente <project>/<app-module>/build.gradle.kts o <project>/<app-module>/build.gradle) del módulo (nivel de app), agrega el complemento de Gradle de App Distribution:

    Kotlin

    plugins {
      id("com.android.application")
    
      // Make sure that you have the Google services Gradle plugin
      id("com.google.gms.google-services")
    
      // Add the App Distribution Gradle plugin
      id("com.google.firebase.appdistribution")
    }

    Groovy

    plugins {
      id 'com.android.application'
    
      // Make sure that you have the Google services Gradle plugin
      id 'com.google.gms.google-services'
    
      // Add the App Distribution Gradle plugin
      id 'com.google.firebase.appdistribution'
    }
  3. Si estás detrás de un proxy o firewall empresarial, agrega la siguiente propiedad del sistema de Java que permite que App Distribution suba tus distribuciones a Firebase:

    -Djavax.net.ssl.trustStore=/path/to/truststore -Djavax.net.ssl.trustStorePassword=password
    

Paso 2. Autentica con Firebase

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

Paso 3: Configura las propiedades de distribución

En el archivo Gradle (generalmente, <project>/<app-module>/build.gradle.kts o <project>/<app-module>/build.gradle) en el módulo (nivel de app), configura App Distribution agregando al menos una sección firebaseAppDistribution.

Por ejemplo, para distribuir la compilación release a los verificadores, sigue estas instrucciones:

Kotlin

import com.google.firebase.appdistribution.gradle.firebaseAppDistribution

android {

  // ...

  buildTypes {
      getByName("release") {
          firebaseAppDistribution {
              artifactType = "AAB"
              releaseNotesFile = "/path/to/releasenotes.txt"
              testers = "ali@example.com, bri@example.com, cal@example.com"
          }
      }
  }

  // ...
}

Groovy

android {

  // ...

  buildTypes {
      release {
          firebaseAppDistribution {
              artifactType="AAB"
              releaseNotesFile="/path/to/releasenotes.txt"
              testers="ali@example.com, bri@example.com, cal@example.com"
          }
      }
  }

  // ...
}

Puedes configurar App Distribution para los tipos de compilación y variantes de producto.

Por ejemplo, para distribuir compilaciones de debug y release en variantes de producto “demo” y “full”, sigue estas instrucciones:

Kotlin

import com.google.firebase.appdistribution.gradle.firebaseAppDistribution

android {

  // ...

  buildTypes {
      getByName("debug") {...}
      getByName("release") {...}
  }

  flavorDimensions += "version"
  productFlavors {
      create("demo") {
          dimension = "version"
          firebaseAppDistribution {
              releaseNotes = "Release notes for demo version"
              testers = "demo@testers.com"
          }
      }
      create("full") {
          dimension = "version"
          firebaseAppDistribution {
              releaseNotes = "Release notes for full version"
              testers = "full@testers.com"
          }
      }
  }

  // ...
}

Groovy

android {

  // ...

  buildTypes {
      debug {...}
      release {...}
  }

  flavorDimensions "version"
  productFlavors {
      demo {
          dimension "version"
          firebaseAppDistribution {
              releaseNotes="Release notes for demo version"
              testers="demo@testers.com"
          }
      }
      full {
          dimension "version"
          firebaseAppDistribution {
              releaseNotes="Release notes for full version"
              testers="full@testers.com"
          }
      }
  }

  // ...
}

Usa los siguientes parámetros para configurar la distribución:

Parámetros de compilación de App Distribution
appId

El ID de app de Firebase de la aplicación. Solo es obligatorio si no tienes instalado el complemento de Gradle de los Servicios de Google. Puedes encontrar el ID de la app en el archivo google-services.json o en Firebase console en la página Configuración general. El valor de tu archivo build.gradle anula el resultado del valor del complemento google-services.

appId="1:1234567890:android:321abc456def7890"
serviceCredentialsFile

La ruta de acceso al archivo JSON de la clave privada de tu cuenta de servicio. Solo es obligatoria si usas la autenticación de cuentas de servicio.

artifactType

Especifica el tipo de archivo de tu app. Se puede configurar en "AAB" o "APK".

artifactPath

Es una ruta absoluta al archivo APK o AAB que quieres subir.

releaseNotes o releaseNotesFile

Las notas de la versión de esta compilación.

Puedes especificar las notas de la versión directamente o la ruta a un archivo de texto sin formato.

testers o testersFile

Las direcciones de correo electrónico de los verificadores a los que quieres distribuir las compilaciones.

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

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

O bien, puedes especificar la ruta de acceso a un archivo que contenga una lista separada por comas de direcciones de correo electrónico.

testersFile="/path/to/testers.txt"
groups o groupsFile

Los grupos de verificadores a los que quieres distribuir las compilaciones (consulta Administra verificadores). Los grupos se especifican con alias de grupos, que puedes encontrar en la pestaña Verificadores en la consola de Firebase App Distribution.

Puedes especificar los grupos como una lista separada por comas de alias de grupos:

groups="qa-team, android-testers"

O bien, puedes especificar la ruta de acceso a un archivo que contenga una lista separada por comas de alias de grupos.

groupsFile="/path/to/tester-groups.txt"
testDevices o testDevicesFile

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 en una lista de especificaciones de dispositivos separada por punto y coma:

testDevices="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 que contenga una lista de especificaciones del dispositivo separada por punto y coma:

testDevicesFile="/path/to/testDevices.txt"
testUsername

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

testPassword o testPasswordFile

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:

testPasswordFile="/path/to/testPassword.txt"
testUsernameResource

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

testPasswordResource

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

testNonBlocking

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

stacktrace

Imprime el seguimiento de pila para las excepciones de usuario. Esto es útil para depurar problemas.

Paso 4: Distribuye la app a los verificadores

  1. Por último, para empaquetar la app de prueba, así como invitar a los verificadores, compila los destinos BUILD-VARIANT y appDistributionUploadBUILD-VARIANT con el wrapper de Gradle de tu proyecto, en el que BUILD-VARIANT es la variante de producto opcional y el tipo de compilación que configuraste en el paso anterior. Para obtener más información sobre las variantes de producto, consulta Cómo configurar variantes de compilación.

    Por ejemplo, para distribuir tu app con la variante de compilación release, ejecuta el siguiente comando:

    ./gradlew bundleRelease appDistributionUploadRelease
    

    O, si realizaste la autenticación con tu Cuenta de Google y no proporcionaste credenciales en el archivo de compilación Gradle, incluye la variable FIREBASE_TOKEN:

    export FIREBASE_TOKEN=1/a1b2c3d4e5f67890
    ./gradlew --stop // Only needed for environment variable changes
    ./gradlew bundleRelease appDistributionUploadRelease
    
  2. También puedes anular los valores establecidos en el archivo build.gradle si pasas los argumentos de la línea de comandos con el formato --<property-name>=<property-value>. Por ejemplo:

    • Para subir una compilación de depuración a App Distribution, haz lo siguiente:

      ./gradlew bundleDebug appDistributionUploadDebug
          --artifactType="AAB"
    • Sigue estos pasos para invitar a verificadores adicionales o quitar verificadores existentes de tu proyecto de Firebase:

      ./gradlew appDistributionAddTesters
          --projectNumber=<project_number>
          --emails="anothertester@email.com, moretesters@email.com"
      ./gradlew appDistributionRemoveTesters
          --projectNumber=<project_number>
          --emails="anothertester@email.com, moretesters@email.com"

      Una vez que se agrega un verificador a tu proyecto de Firebase, puedes agregarlo a versiones individuales. Los verificadores que se quiten ya no tendrán acceso a las versiones del proyecto, pero podrán conservar el acceso a las versiones durante un período determinado.

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

    Las tareas appDistributionAddTesters y appDistributionRemoveTesters también aceptan los siguientes argumentos:

    • projectNumber: Es el número de tu proyecto de Firebase.

    • serviceCredentialsFile: Es la ruta de acceso al archivo de credenciales del servicio de Google. Este es el mismo argumento que usa la acción de carga.

El complemento de Gradle 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:

  • firebase_console_uri: 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.
  • testing_uri: 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.
  • binary_download_uri: 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 (cinco meses). Cuando falten 30 días para el vencimiento de la compilación, se mostrará un aviso de vencimiento en la consola y en la lista de compilaciones de tu verificador, en el dispositivo de prueba.

Los verificadores que no recibieron invitaciones para probar la app las recibirán por correo electrónico para comenzar, y los verificadores existentes recibirán notificaciones por correo electrónico en las que se indicará que hay una nueva compilación lista para probar (consulta la guía de preparación para verificadores si necesitas instrucciones para instalar la app de prueba). En Firebase console, puedes supervisar el estado de cada verificador (si aceptó la invitación y si descargó la app).

Los verificadores tendrán 30 días para aceptar una invitación a fin de probar la app antes de que venza. Cuando falten 5 días para que venza la invitación, aparecerá un aviso en Firebase console junto al verificador en una versión. Para renovar una invitación, puedes usar el menú desplegable de la fila del verificador para reenviarla.

Próximos pasos