Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

Distribuir aplicativos Android para testadores usando Gradle

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

Você pode integrar o App Distribution ao processo de compilação do Android usando o plug-in Gradle do App Distribution. O plug-in permite que você especifique seus testadores e notas de versão no arquivo build.gradle de seu aplicativo, permitindo que você configure distribuições para diferentes tipos de compilação e variantes de seu aplicativo.

Este guia descreve como distribuir APKs para testadores usando o plug-in App Distribution Gradle.

Antes de você começar

Se ainda não o fez, adicione o Firebase ao seu projeto Android .

Se você não estiver usando nenhum outro produto Firebase, basta criar um projeto e registrar seu aplicativo. No entanto, se você decidir usar produtos adicionais no futuro, certifique-se de concluir todas as etapas na página vinculada acima.

Etapa 1. Configure seu projeto Android

  1. Em seu arquivo Gradle de nível raiz (nível de projeto) ( <project>/build.gradle ou <project>/build.gradle.kts ), adicione o plug-in App Distribution Gradle como uma dependência buildscript:

    Groovy

    buildscript {
      repositories {
        // Make sure that you have the following two repositories
        google()  // Google's Maven repository
        mavenCentral()  // Maven Central repository
      }
    
      dependencies {
          ...
          classpath 'com.android.tools.build:gradle:7.2.0'
    
          // Make sure that you have the Google services Gradle plugin dependency
          classpath 'com.google.gms:google-services:4.3.15'
    
          // Add the dependency for the App Distribution Gradle plugin
          classpath 'com.google.firebase:firebase-appdistribution-gradle:3.2.0'
      }
    }
    

    KotlinGenericName

    buildscript {
      repositories {
        // Make sure that you have the following two repositories
        google()  // Google's Maven repository
        mavenCentral()  // Maven Central repository
      }
    
      dependencies {
          ...
          classpath("com.android.tools.build:gradle:7.2.0")
    
          // Make sure that you have the Google services Gradle plugin dependency
          classpath("com.google.gms:google-services:4.3.15")
    
          // Add the dependency for the App Distribution Gradle plugin
          classpath("com.google.firebase:firebase-appdistribution-gradle:3.2.0")
      }
    }
    
  2. No arquivo Gradle do módulo (nível do aplicativo) (geralmente <project>/<app-module>/build.gradle ou <project>/<app-module>/build.gradle.kts ), adicione o plug-in Gradle do App Distribution:

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

    KotlinGenericName

    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. Se você estiver atrás de um proxy ou firewall corporativo, adicione a seguinte propriedade de sistema Java que permite que o App Distribution carregue suas distribuições no Firebase:

    -Djavax.net.ssl.trustStore=/path/to/truststore -Djavax.net.ssl.trustStorePassword=password
    

Etapa 2. Autenticar com o Firebase

Antes de poder usar o plug-in do Gradle, primeiro você deve se autenticar com seu projeto do Firebase de uma das seguintes maneiras. Por padrão, o plug-in Gradle procura credenciais da Firebase CLI se nenhum outro método de autenticação for usado.

Etapa 3. Configurar suas propriedades de distribuição

No arquivo Gradle do módulo (nível do aplicativo) (geralmente <project>/<app-module>/build.gradle ou <project>/<app-module>/build.gradle.kts ), configure o App Distribution adicionando pelo menos uma seção firebaseAppDistribution .

Por exemplo, para distribuir a compilação de release para testadores, siga estas instruções::

Groovy

android {

  // ...

  buildTypes {
      release {
          firebaseAppDistribution {
              artifactType="APK"
              releaseNotesFile="/path/to/releasenotes.txt"
              testers="ali@example.com, bri@example.com, cal@example.com"
          }
      }
  }

  // ...
}

KotlinGenericName

import com.google.firebase.appdistribution.gradle.firebaseAppDistribution

android {

  // ...

  buildTypes {
      release {
          firebaseAppDistribution {
              artifactType = "APK"
              releaseNotesFile = "/path/to/releasenotes.txt"
              testers = "ali@example.com, bri@example.com, cal@example.com"
          }
      }
  }

  // ...
}

Você pode configurar o App Distribution para tipos de construção e variações de produto .

Por exemplo, para distribuir compilações de debug e release em versões de produto "demo" e "completas", siga estas instruções:

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

  // ...
}

KotlinGenericName

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

  // ...
}

Use os seguintes parâmetros para configurar a distribuição:

Parâmetros de compilação de distribuição de aplicativo
appId

O ID do aplicativo Firebase do seu aplicativo. Necessário apenas se você não tiver o plug-in Gradle do Google Services instalado. Você pode encontrar o ID do aplicativo no arquivo google-services.json ou no console do Firebase na página Configurações gerais . O valor em seu arquivo build.gradle substitui o valor de saída do plug-in google-services .

appId="1:1234567890:android:321abc456def7890"
serviceCredentialsFile

O caminho para o arquivo JSON da chave privada da conta de serviço. Obrigatório apenas se você usar autenticação de conta de serviço.

artifactType

Especifica o tipo de arquivo do seu aplicativo. Pode ser definido como "AAB" ou "APK" .

artifactPath

Caminho absoluto para o arquivo APK ou AAB que você deseja enviar.

releaseNotes ou releaseNotesFile

Notas de versão para esta compilação.

Você pode especificar as notas de versão diretamente ou o caminho para um arquivo de texto simples.

testers ou testersFile

Os endereços de e-mail dos testadores para os quais você deseja distribuir as compilações.

Você pode especificar os testadores como uma lista separada por vírgulas de endereços de e-mail:

testers="ali@example.com, bri@example.com, cal@example.com"

Ou você pode especificar o caminho para um arquivo contendo uma lista separada por vírgulas de endereços de e-mail:

testersFile="/path/to/testers.txt"
groups ou groupsFile

Os grupos de testadores para os quais você deseja distribuir builds (consulte Gerenciar testadores ). Os grupos são especificados usando apelidos de grupo , que você pode encontrar na guia Testadores no console do Firebase App Distribution.

Você pode especificar os grupos como uma lista separada por vírgulas de aliases de grupo:

groups="qa-team, android-testers"

Ou você pode especificar o caminho para um arquivo contendo uma lista separada por vírgulas de aliases de grupo:

groupsFile="/path/to/tester-groups.txt"
stacktrace

Imprime o stacktrace para exceções do usuário. Isso é útil ao depurar problemas.

Etapa 4. Distribua seu aplicativo para testadores

  1. Por fim, para empacotar seu aplicativo de teste e convidar testadores, crie os destinos BUILD-VARIANT e appDistributionUpload BUILD-VARIANT com o wrapper Gradle do seu projeto, em que BUILD-VARIANT é o tipo de produto opcional e o tipo de compilação que você configurou na etapa anterior. Para obter mais informações sobre variações de produtos, consulte Configurar variantes de compilação .

    Por exemplo, para distribuir seu aplicativo usando a variante de compilação de release , execute o seguinte comando:

    ./gradlew assembleRelease appDistributionUploadRelease
    

    Ou, se você se autenticou com sua Conta do Google e não forneceu credenciais em seu arquivo de compilação do Gradle, inclua a variável FIREBASE_TOKEN :

    export FIREBASE_TOKEN=1/a1b2c3d4e5f67890
    ./gradlew --stop // Only needed for environment variable changes
    ./gradlew assembleRelease appDistributionUploadRelease
    
  2. Você também pode substituir os valores definidos em seu arquivo build.gradle passando argumentos de linha de comando na forma de --<property-name>=<property-value> . Por exemplo:

    • Para carregar uma compilação de depuração para o App Distribution:

      ./gradlew bundleDebug appDistributionUploadDebug
          --artifactType="APK"
      
    • Para convidar testadores adicionais ou remover testadores existentes do seu projeto 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"
      

      Depois que um testador for adicionado ao seu projeto do Firebase, você poderá adicioná-lo a versões individuais. Os testadores que forem removidos não terão mais acesso aos lançamentos em seu projeto, mas ainda poderão reter o acesso aos seus lançamentos por um período de tempo.

    Você também pode especificar testadores usando --file="/path/to/testers.txt" em vez de --emails .

    As tarefas appDistributionAddTesters e appDistributionRemoveTesters também aceitam os seguintes argumentos:

    • projectNumber : o número do seu projeto Firebase.

    • serviceCredentialsFile : o caminho para o arquivo de credenciais de serviço do Google. Este é o mesmo argumento usado pela ação de upload.

O plug-in Gradle gera os links a seguir após o upload da versão. Esses links ajudam você a gerenciar binários e garantir que os testadores e outros desenvolvedores tenham a versão correta:

  • firebase_console_uri - Um link para o console do Firebase exibindo uma única versão. Você pode compartilhar este link com outros desenvolvedores em sua organização.
  • testing_uri - Um link para a versão na experiência do testador (aplicativo nativo do Android) que permite aos testadores visualizar as notas da versão e instalar o aplicativo em seus dispositivos. O testador precisa acessar a versão para usar o link.
  • binary_download_uri - Um link assinado que baixa e instala diretamente o binário do aplicativo (arquivo APK ou AAB). O link expira após uma hora.

Depois de distribuir seu build, ele fica disponível no painel App Distribution do Firebase console por 150 dias (cinco meses). Quando a compilação estiver faltando 30 dias para expirar, um aviso de expiração aparecerá no console e na lista de compilações do testador em seu dispositivo de teste.

Os testadores que não foram convidados para testar o aplicativo recebem convites por e-mail para começar, e os testadores existentes recebem notificações por e-mail de que uma nova compilação está pronta para teste (leia o guia de configuração do testador para obter instruções sobre como instalar o aplicativo de teste). Você pode monitorar o status de cada testador - se eles aceitaram o convite e se baixaram o aplicativo - no Firebase console.

Os testadores têm 30 dias para aceitar um convite para testar o aplicativo antes que ele expire. Quando faltam 5 dias para um convite expirar, um aviso de expiração aparece no console do Firebase ao lado do testador em uma versão. Um convite pode ser renovado reenviando-o usando o menu suspenso na linha do testador.

Próximos passos