Distribuir apps para Android para testadores usando o Gradle

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

Antes de começar

Adicione o Firebase ao seu projeto para Android, caso ainda não tenha feito isso.

Caso não use outros produtos do Firebase, só é necessário criar um projeto e registrar seu aplicativo. No entanto, caso decida usar produtos adicionais no futuro, certifique-se de concluir todas as etapas na página vinculada acima.

1. Configure seu projeto do Android

No arquivo Gradle do módulo (nível de aplicativo), que geralmente é app/build.gradle, inclua o plug-in App Distribution abaixo do plug-in do Android:

apply plugin: 'com.android.application'
// ...

apply plugin: 'com.google.firebase.appdistribution'
// ...

buildscript {
    repositories {
        google()
    }
    dependencies {
        classpath 'com.google.firebase:firebase-appdistribution-gradle:1.1.0'
    }
}

2. Autenticar no Firebase

Antes de usar o plug-in Gradle, primeiro é necessário fazer a autenticação com seu projeto do Firebase. Existem três maneiras de fazer isso:

Autenticar usando sua Conta do Google

  1. Execute este comando:
    ./gradlew appDistributionLogin
    
    O comando exibe um link de autenticação.
  2. Abra o link em um navegador.

  3. Quando solicitado, faça login na sua Conta do Google e conceda permissão para acessar seu projeto do Firebase. O comando Gradle exibe um token de atualização, que o plug-in do App Distribution usa para se autenticar com o Firebase.

  4. Defina a variável de ambiente FIREBASE_TOKEN como o token da etapa anterior:
    export FIREBASE_TOKEN=<token>
    

Autenticar usando uma conta de serviço

Autenticar com uma conta de serviço permite que você use o plug-in de forma flexível com seu sistema de integração contínua (CI, na sigla em inglês). Há duas maneiras de fornecer credenciais de conta de serviço:

  • Transferir o arquivo de chave da sua conta de serviço para build.gradle. Este método pode ser conveniente caso já tenha o arquivo de chave da sua conta de serviço no seu ambiente de criação.
  • Defina a variável de ambiente GOOGLE_APPLICATION_CREDENTIALS a fim de apontar para o arquivo de chave da sua conta de serviço. Este método pode ser preferível caso já tenha configurado o ADC para outro serviço do Google, por exemplo, o Google Cloud Platform.

Para autenticar usando credenciais de conta de serviço:

  1. No Console do Google Cloud Platform, selecione seu projeto e crie uma nova conta de serviço.
  2. Adicione a função Administrador do Firebase Quality.
  3. Crie uma chave json privada e mova a chave para um local acessível para seu ambiente de criação. Certifique-se de manter esse arquivo em algum lugar seguro, já que ele concede acesso de administrador ao seu projeto do Firebase.
  4. Pule esta etapa se você tiver criado seu aplicativo depois de 20 de setembro de 2019: no console de APIs do Google, ative a Firebase App Distribution API Quando solicitado, selecione o projeto com o mesmo nome do seu projeto do Firebase.
  5. Forneça ou localize as credenciais da sua conta de serviço:

    1. Para transferir o Gradle à chave da sua conta de serviço, defina a propriedade serviceCredentialsFile no arquivo build.gradle para o arquivo JSON da chave privada.
    2. Para localizar suas credenciais com o ADC, defina a variável de ambiente GOOGLE_APPLICATION_CREDENTIALS. Substitua [PATH] pelo caminho do arquivo JSON da chave privada e [FILE_NAME] pelo nome do arquivo. Exemplo:

       export GOOGLE_APPLICATION_CREDENTIALS=/absolute/path/to/credentials/file.json
      

      Para mais informações sobre a autenticação com o ADC, leia Como fornecer credenciais para um aplicativo.

3. Configurar suas propriedades de distribuição

  1. No seu arquivo app/build.gradle, configure o App Distribution adicionando pelo menos uma seção firebaseAppDistribution. É possível configurar o App Distribution para tipos de versão e variações de produtos. Por exemplo, para distribuir a versão release aos testadores:

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

    E para distribuir as versões debug e release em variações de produtos "demonstrativos" e "completos":

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

Use os seguintes parâmetros para configurar o App Distribution:

Parâmetros de versão do App Distribution
appId

Código do app do Firebase do seu aplicativo. Obrigatório apenas se você não tiver instalado o plug-in Gradle dos serviços do Google. Você pode encontrar o código 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 modifica a saída de valor do plug-in gradle google-services.

serviceCredentialsFile

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

releaseNotes or releaseNotesFile

Notas para esta versão.

É possível especificar as notas da versão diretamente ou o caminho para um arquivo de texto simples.

testers or testersFile

Os endereços de e-mail dos testadores que você quer distribuir são criados.

É possível 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"

Como opção, é possível especificar o caminho para um arquivo que contenha uma lista de endereços de e-mail separados por vírgulas:


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

Os grupos de testadores para os quais você quer distribuir versões (consulte Gerenciar testadores). Os grupos são especificados usando aliases de grupo, que podem ser encontrados na guia Testadores no console do Firebase App Distribution.

É possível especificar os grupos como uma lista separada por vírgulas de aliases de grupo:


groups="qa-team, android-testers"

Também é possível especificar o caminho para um arquivo que contenha uma lista separada por vírgulas de aliases de grupo:


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

4. Distribuir seu aplicativo para os testadores

Por último, para empacotar seu aplicativo de teste e convidar testadores, crie os destinos assembleBUILD-VARIANT e appDistributionUploadBUILD-VARIANT com o wrapper do Gradle do seu projeto, onde BUILD-VARIANT é a variação opcional do produto e o tipo de versão configurada na etapa anterior.

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

./gradlew assembleRelease appDistributionUploadRelease

Ou, se você autenticou com sua Conta do Google e não forneceu credenciais em seu arquivo de versã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

Os testadores que não foram convidados para testar o aplicativo recebem convites por e-mail para começar. Os testadores atuais recebem notificações por e-mail informando que uma nova versão está pronta para ser testada.

Para mais informações sobre as variações de produtos, consulte Configurar variantes de versão.