获取我们在 Firebase 峰会上发布的所有信息,了解 Firebase 可如何帮助您加快应用开发速度并满怀信心地运行应用。了解详情

Distribuir aplicativos Android para testadores usando Gradle

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