Distribuya aplicaciones de Android a evaluadores usando Gradle

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

  1. 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 .

  2. 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.

  3. Vincula tu aplicación Firebase para Android a tu cuenta de desarrollador de Google Play:

    1. En la consola de Firebase, ve a tu Configuración del proyecto y luego seleccione la pestaña Integraciones .

    2. En la tarjeta de Google Play , haz clic en Enlace .
      Si ya tiene enlaces a Google Play, haga clic en Administrar .

    3. 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

  1. 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
    }
    
  2. 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'
    }
    
  3. 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.

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 = "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"
          }
      }
  }

  // ...
}

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 google-services.json o en Firebase console en la página Configuración general . El valor en su archivo build.gradle anula el valor resultante del complemento google-services .

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 "AAB" o "APK" .

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 alias de grupo , que puede encontrar en la pestaña Probadores de la consola Firebase App Distribution.

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

  1. Finalmente, para empaquetar su aplicación de prueba e invitar a los evaluadores, cree los objetivos BUILD-VARIANT y appDistributionUpload 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
    
  2. 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 y appDistributionRemoveTesters 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