Puede integrar App Distribution en su proceso de compilación de Android utilizando el complemento App Distribution Gradle. El complemento le permite especificar sus probadores y notas de la versión en el archivo Gradle de su aplicación, lo que le permite configurar distribuciones para diferentes tipos de compilación y variantes de su aplicación.
Esta guía describe cómo distribuir APK a los evaluadores utilizando el complemento App Distribution Gradle.
Antes de que empieces
Si aún no lo has hecho, agrega Firebase a tu proyecto de Android .
Si no estás utilizando ningún otro producto de Firebase, solo tienes que crear un proyecto y registrar tu aplicación. Sin embargo, si decide utilizar productos adicionales en el futuro, asegúrese de completar todos los pasos en la página vinculada anteriormente.
Paso 1. Configura tu proyecto de Android
En su archivo Gradle de nivel raíz (nivel de proyecto) (
<project>/build.gradle.kts
o<project>/build.gradle
), agregue el complemento App Distribution Gradle como una dependencia: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.1" apply false // Add the dependency for the App Distribution Gradle plugin id("com.google.firebase.appdistribution") version "4.2.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.1' apply false // Add the dependency for the App Distribution Gradle plugin id 'com.google.firebase.appdistribution' version '4.2.0' apply false }
En el archivo Gradle de su módulo (nivel de aplicación) (generalmente
<project>/<app-module>/build.gradle.kts
o<project>/<app-module>/build.gradle
), agregue el complemento App Distribution Gradle: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á detrás de un proxy o firewall corporativo, agregue la siguiente propiedad del sistema Java que permite que App Distribution cargue sus distribuciones en Firebase:
-Djavax.net.ssl.trustStore=/path/to/truststore -Djavax.net.ssl.trustStorePassword=password
Paso 2. Autenticarse con Firebase
Antes de poder usar el complemento Gradle, primero debes autenticarte en tu proyecto de Firebase de una de las siguientes maneras. De forma predeterminada, el complemento Gradle busca credenciales de Firebase CLI si no se utiliza ningún otro método de autenticación.
La autenticación con una cuenta de servicio le permite utilizar el complemento de manera flexible con su sistema de integración continua (CI). Hay dos formas de proporcionar credenciales de cuenta de servicio:
- Pase el archivo de clave de su cuenta de servicio a
build.gradle
. Puede que este método le resulte útil si ya tiene el archivo de clave de su cuenta de servicio en su entorno de compilación. - Configure la variable de entorno
GOOGLE_APPLICATION_CREDENTIALS
para que apunte al archivo de clave de su cuenta de servicio. Es posible que prefiera este método si ya tiene las Credenciales predeterminadas de la aplicación (ADC) configuradas para otro servicio de Google (por ejemplo, Google Cloud).
Para autenticarse utilizando las credenciales de la cuenta de servicio:
- En la consola de Google Cloud, seleccione su proyecto y cree una nueva cuenta de servicio.
- Agregue la función de administrador de distribución de aplicaciones de Firebase .
- Cree una clave json privada y muévala a una ubicación accesible para su entorno de compilación. Asegúrate de guardar este archivo en un lugar seguro , ya que otorga acceso de administrador a App Distribution en tu proyecto de Firebase.
- Omita este paso si creó su aplicación después del 20 de septiembre de 2019: en la consola de API de Google, habilite la API de distribución de aplicaciones de Firebase. Cuando se le solicite, seleccione el proyecto con el mismo nombre que su proyecto de Firebase.
Proporcione o localice las credenciales de su cuenta de servicio:
- Para pasarle a Gradle su clave de cuenta de servicio, en su archivo
build.gradle
, establezca la propiedadserviceCredentialsFile
en el archivo JSON de clave privada. Para ubicar sus credenciales con ADC, configure la variable de entorno
GOOGLE_APPLICATION_CREDENTIALS
en la ruta del archivo JSON de clave privada. Por ejemplo:export GOOGLE_APPLICATION_CREDENTIALS=/absolute/path/to/credentials/file.json
Para obtener más información sobre la autenticación con ADC, lea Proporcionar credenciales a su aplicación.
- Para pasarle a Gradle su clave de cuenta de servicio, en su archivo
Consulta Iniciar sesión con Firebase CLI para obtener instrucciones sobre cómo autenticar tu proyecto.
Paso 3. Configure sus propiedades de distribución
En el archivo Gradle de su módulo (nivel de aplicación) (generalmente <project>/<app-module>/build.gradle.kts
o <project>/<app-module>/build.gradle
), configure App Distribution agregando al menos una sección firebaseAppDistribution
.
Por ejemplo, para distribuir la versión release
a los evaluadores, siga estas instrucciones:
Kotlin
import com.google.firebase.appdistribution.gradle.firebaseAppDistribution android { // ... buildTypes { getByName("release") { firebaseAppDistribution { artifactType = "APK" releaseNotesFile = "/path/to/releasenotes.txt" testers = "ali@example.com, bri@example.com, cal@example.com" } } } // ... }
Groovy
android { // ... buildTypes { release { firebaseAppDistribution { artifactType="APK" releaseNotesFile="/path/to/releasenotes.txt" testers="ali@example.com, bri@example.com, cal@example.com" } } } // ... }
Puede configurar App Distribution para tipos de compilación y tipos de productos .
Por ejemplo, para distribuir versiones debug
y release
en versiones de productos "demo" y "completos", siga 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" } } } // ... }
Utilice los siguientes parámetros para configurar la distribución:
Parámetros de compilación de distribución de aplicaciones | |
---|---|
appId | El ID de la aplicación Firebase de tu aplicación. Solo es necesario si no tiene instalado el complemento Gradle de servicios de Google. Puede encontrar el ID de la aplicación en el archivo appId="1:1234567890:android:321abc456def7890" |
serviceCredentialsFile | La ruta al archivo JSON de clave privada de su cuenta de servicio. Solo es necesario si utiliza la autenticación de cuenta de servicio. |
artifactType | Especifica el tipo de archivo de su aplicación. Se puede configurar en |
artifactPath | Ruta absoluta al archivo APK o AAB que deseas cargar. |
releaseNotes o releaseNotesFile | Notas de la versión para esta compilación. Puede 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 evaluadores a los que desea distribuir las compilaciones. Puede especificar los evaluadores como una lista de direcciones de correo electrónico separadas por comas: testers="ali@example.com, bri@example.com, cal@example.com" O puede especificar la ruta a un archivo que contenga una lista de direcciones de correo electrónico separadas por comas: testersFile="/path/to/testers.txt" |
groups o groupsFile | Los grupos de probadores a los que desea distribuir compilaciones (consulte Administrar probadores ). Los grupos se especifican usando Puede especificar los grupos como una lista de alias de grupo separados por comas: groups="qa-team, android-testers" O puede especificar la ruta a un archivo que contenga una lista de alias de grupo separados por comas: groupsFile="/path/to/tester-groups.txt" |
testDevices o testDevicesFile | Los siguientes tipos de distribución forman parte de la función beta del probador automatizado . Los dispositivos de prueba a los que desea distribuir compilaciones (consulte Pruebas automatizadas ). Puede especificar los dispositivos de prueba como una lista de especificaciones de dispositivos separadas por punto y coma: testDevices="model=shiba,version=34,locale=en,orientation=portrait;model=b0q,version=33,locale=en,orientation=portrait" O puede especificar la ruta a un archivo que contenga una lista de especificaciones del dispositivo separadas por punto y coma: testDevicesFile="/path/to/testDevices.txt" |
testUsername | El nombre de usuario para el inicio de sesión automático que se utilizará durante las pruebas automatizadas . |
testPassword o testPasswordFile | La contraseña para el inicio de sesión automático que se utilizará durante las pruebas automatizadas . O puede especificar la ruta a un archivo de texto sin formato que contenga una contraseña: testPasswordFile="/path/to/testPassword.txt" |
testUsernameResource | Nombre del recurso para el campo de nombre de usuario para el inicio de sesión automático que se utilizará durante las pruebas automatizadas . |
testPasswordResource | Nombre del recurso para el campo de contraseña para el inicio de sesión automático que se utilizará durante las pruebas automatizadas . |
testNonBlocking | Ejecute pruebas automatizadas de forma asincrónica. Visite la consola de Firebase para ver los resultados de las pruebas automáticas. |
stacktrace | Imprime el seguimiento de la pila para las excepciones del usuario. Esto es útil al depurar problemas. |
Paso 4. Distribuya su aplicación a los evaluadores
Finalmente, para empaquetar su aplicación de prueba e invitar a los evaluadores, cree los destinos
BUILD-VARIANT
yappDistributionUpload BUILD-VARIANT
con el contenedor Gradle de su proyecto, donde BUILD-VARIANT es el tipo de producto opcional y el tipo de compilación que configuró en el paso anterior. Para obtener más información sobre los tipos de productos, consulte Configurar variantes de compilación .Por ejemplo, para distribuir su aplicación usando la variante de compilación
release
, ejecute el siguiente comando:./gradlew assembleRelease appDistributionUploadRelease
O, si te autenticaste con tu cuenta de Google y no proporcionaste credenciales en tu archivo de compilación de Gradle, incluye la variable
FIREBASE_TOKEN
:export FIREBASE_TOKEN=1/a1b2c3d4e5f67890 ./gradlew --stop // Only needed for environment variable changes ./gradlew assembleRelease appDistributionUploadRelease
También puede anular los valores establecidos en su archivo
build.gradle
pasando argumentos de línea de comando en el formato--<property-name>=<property-value>
. Por ejemplo:Para cargar una compilación de depuración en App Distribution:
./gradlew bundleDebug appDistributionUploadDebug --artifactType="APK"
Para invitar a testers adicionales o eliminar testers 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 haya agregado un tester a su proyecto de Firebase, puede agregarlo a versiones individuales. Los evaluadores que sean eliminados ya no tendrán acceso a las versiones de su proyecto, pero aún podrán conservar el acceso a sus versiones durante un período de tiempo.
También puede especificar evaluadores usando
--file="/path/to/testers.txt"
en lugar de--emails
.Las tareas
appDistributionAddTesters
yappDistributionRemoveTesters
también aceptan los siguientes argumentos:projectNumber
: el número de tu proyecto de Firebase.serviceCredentialsFile
: la ruta a su archivo de credenciales de servicio de Google. Este es el mismo argumento utilizado por la acción de carga.
El complemento Gradle genera los siguientes enlaces después de la carga del lanzamiento. Estos enlaces lo ayudan a administrar archivos binarios y garantizar que los evaluadores y otros desarrolladores tengan la versión correcta:
-
firebase_console_uri
: un enlace a Firebase console que muestra una versión única. Puede compartir este enlace con otros desarrolladores de su organización. -
testing_uri
: un enlace a la versión en la experiencia del evaluador (aplicación nativa de Android) que permite a los evaluadores ver las notas de la versión e instalar la aplicación en su dispositivo. El evaluador necesita acceso a la versión para poder utilizar el enlace. -
binary_download_uri
: un enlace firmado que descarga e instala directamente el binario de la aplicación (archivo APK o AAB). El enlace caduca después de una hora.
Una vez que distribuyas tu compilación, estará disponible en el panel de distribución de aplicaciones de Firebase console durante 150 días (cinco meses). Cuando faltan 30 días para que expire la compilación, aparece un aviso de vencimiento tanto en la consola como en la lista de compilaciones del evaluador en su dispositivo de prueba.
Los evaluadores que no han sido invitados a probar la aplicación reciben invitaciones por correo electrónico para comenzar, y los probadores existentes reciben notificaciones por correo electrónico de que una nueva versión está lista para probar (lea la guía de configuración del probador para obtener instrucciones sobre cómo instalar la aplicación de prueba). Puedes monitorear el estado de cada tester (si aceptaron la invitación y si descargaron la aplicación) en Firebase console.
Los evaluadores tienen 30 días para aceptar una invitación para probar la aplicación antes de que caduque. Cuando faltan 5 días para que expire una invitación, aparece un aviso de vencimiento en Firebase console junto al evaluador en una versión. Se puede renovar una invitación reenviándola usando el menú desplegable en la fila del probador.
Próximos pasos
Implemente comentarios en la aplicación para que a los evaluadores les resulte más fácil enviar comentarios sobre su aplicación (incluidas capturas de pantalla).
Aprenda cómo mostrar alertas en la aplicación a sus evaluadores cuando haya nuevas versiones de su aplicación disponibles para instalar.
Visite el codelab de Android App Bundle para aprender cómo distribuir los lanzamientos de paquetes de aplicaciones paso a paso.
Conozca las mejores prácticas para distribuir aplicaciones de Android a evaluadores de control de calidad mediante CI/CD .