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 paquetes de aplicaciones de Android (AAB) a los evaluadores mediante el complemento Gradle de distribución de aplicaciones.
App Distribution se integra con el servicio interno para compartir aplicaciones de Google Play para procesar los AAB que usted carga y ofrecer APK que están optimizados para las configuraciones de dispositivos de sus evaluadores. La distribución de AAB le permite hacer lo siguiente:
Ejecute APK optimizados (servidos por Google Play) que estén optimizados para los dispositivos de sus evaluadores.
Descubra y depure problemas específicos del dispositivo.
Pruebe las funciones del paquete de aplicaciones, como Play Feature Delivery y Play Asset Delivery .
Reduzca el tamaño de las descargas para sus evaluadores.
Permisos requeridos
Para cargar AAB en App Distribution, debes vincular tu aplicación de Firebase a una aplicación en Google Play . Debe tener el nivel de acceso requerido para realizar estas acciones.
Si no tiene el acceso necesario a Firebase, puede pedirle al propietario del proyecto de Firebase que le asigne el rol correspondiente a través de la configuración de IAM de la consola de Firebase . Si tienes preguntas sobre cómo acceder a tu proyecto de Firebase, incluida la búsqueda o asignación de un propietario, consulta las preguntas frecuentes sobre "Permisos y acceso a proyectos de Firebase" .
La siguiente tabla se aplica a vincular una aplicación de Firebase a una aplicación en Google Play, así como a cargar AAB.
Acción en la consola Firebase | Permiso IAM requerido | Roles de IAM que incluyen los permisos necesarios de forma predeterminada | Roles adicionales requeridos |
---|---|---|---|
Vincular una aplicación de Firebase a una aplicación en Google Play | firebase.playLinks.update | Uno de los siguientes roles: | Acceso a una cuenta de desarrollador de Google Play como administrador |
Cargar AAB en la distribución de aplicaciones | firebaseappdistro.releases.update | Uno de los siguientes roles: | –– |
Antes de que empieces
Si aún no lo has hecho, agrega Firebase a tu proyecto de Android . Al final de este flujo de trabajo, tendrás una aplicación Firebase para Android en tu proyecto de Firebase.
Si no utiliza ningún otro producto de Firebase, solo necesita crear un proyecto y registrar su aplicación. Si decide utilizar productos adicionales, asegúrese de completar todos los pasos en Agregar Firebase a su proyecto de Android .
Para crear un enlace de Firebase a Google Play y cargar AAB, asegúrese de que su aplicación cumpla con los siguientes requisitos:
La aplicación en Google Play y la aplicación Firebase para Android están registradas con el mismo nombre de paquete.
La aplicación en Google Play se configura en el panel de la aplicación y se distribuye a una de las pistas de Google Play (pruebas internas, pruebas cerradas, pruebas abiertas o producción).
Se completa la revisión de la aplicación en Google Play y la aplicación está publicada. Su aplicación se publica si la columna Estado de la aplicación muestra uno de los siguientes estados: Prueba interna (no prueba interna preliminar), Prueba cerrada, Prueba abierta o Producción.
Vincula tu aplicación Firebase para Android a tu cuenta de desarrollador de Google Play:
En la consola de Firebase, ve a tu
En la tarjeta de Google Play , haz clic en Enlace .
Si ya tiene enlaces a Google Play, haga clic en Administrar .Siga las instrucciones en pantalla para habilitar la integración de distribución de aplicaciones y seleccione qué aplicaciones de Android de Firebase vincular a Google Play.
Obtén más información sobre cómo vincular a Google Play .
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: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
}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: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")
}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
Utilice las credenciales de la cuenta de servicio de Firebase
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).
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.
Iniciar sesión con Firebase CLI
Paso 3. Configure sus propiedades de distribución
<project>/<app-module>/build.gradle.kts
o <project>/<app-module>/build.gradle
), configure App Distribution agregando al menos una sección firebaseAppDistribution
.
release
a los evaluadores, siga estas instrucciones:
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"
}
}
}
// ...
}
android {
// ...
buildTypes {
release {
firebaseAppDistribution {
artifactType="AAB"
releaseNotesFile="/path/to/releasenotes.txt"
testers="ali@example.com, bri@example.com, cal@example.com"
}
}
}
// ...
}
debug
y release
en versiones de productos "demo" y "completos", siga estas instrucciones:
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"
}
}
}
// ...
}
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"
}
}
}
// ...
}
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 objetivos 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 bundleRelease 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 bundleRelease 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="AAB"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.
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.
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 .