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

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