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
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.
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.
Vincula tu app de Firebase para Android a tu cuenta de desarrollador de Google Play:
En Firebase console, ve a la
y, luego, selecciona la pestaña Integraciones. Configuración del proyecto 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.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
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 }
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' }
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 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
|
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 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
Por último, para empaquetar la app de prueba, así como invitar a los verificadores, compila los destinos
BUILD-VARIANT
yappDistributionUploadBUILD-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
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
yappDistributionRemoveTesters
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
Implementa los comentarios directos desde la app para facilitar que los verificadores envíen comentarios sobre tu app (incluidas capturas de pantalla).
Descubre cómo mostrar alertas en la app a los verificadores cuando haya nuevas compilaciones de tu app disponibles para instalar.
Visita el codelab de Android App Bundle si necesitas información para distribuir las versiones de los paquetes de aplicaciones paso a paso.
Conoce las prácticas recomendadas a fin de distribuir apps para Android a verificadores de QA con CI/CD.