Você pode integrar o App Distribution ao processo de construção do Android usando o plug-in App Distribution Gradle. O plug-in permite especificar seus testadores e notas de lançamento no arquivo Gradle do seu aplicativo, permitindo configurar distribuições para diferentes tipos de compilação e variantes do seu aplicativo.
Este guia descreve como distribuir Android App Bundles (AABs) para testadores usando o plug-in App Distribution Gradle.
O App Distribution integra-se ao serviço interno de compartilhamento de aplicativos do Google Play para processar os AABs que você envia e veicular APKs otimizados para as configurações de dispositivo dos seus testadores. Distribuir AABs permite fazer o seguinte:
Execute APKs otimizados (fornecidos pelo Google Play) otimizados para os dispositivos dos seus testadores.
Descubra e depure problemas específicos do dispositivo.
Teste recursos do pacote de aplicativos, como Play Feature Delivery e Play Asset Delivery .
Reduza o tamanho dos downloads para seus testadores.
Permissões necessárias
Para fazer upload de AABs para o App Distribution, você precisa vincular seu aplicativo do Firebase a um aplicativo no Google Play . Você deve ter o nível de acesso necessário para executar essas ações.
Se você não tiver o acesso necessário ao Firebase, peça a um proprietário do projeto do Firebase para atribuir a função aplicável a você por meio das configurações de IAM do console do Firebase . Se você tiver dúvidas sobre como acessar seu projeto do Firebase, incluindo encontrar ou atribuir um proprietário, consulte as perguntas frequentes sobre "Permissões e acesso a projetos do Firebase" .
A tabela a seguir se aplica à vinculação de um aplicativo do Firebase a um aplicativo no Google Play, bem como ao upload de AABs.
Ação no console do Firebase | Permissão IAM necessária | Funções do IAM que incluem as permissões necessárias por padrão | Funções adicionais necessárias |
---|---|---|---|
Vincular um aplicativo do Firebase a um aplicativo no Google Play | firebase.playLinks.update | Uma das seguintes funções: | Acesso a uma conta de desenvolvedor do Google Play como administrador |
Carregar AABs para distribuição de aplicativos | firebaseappdistro.releases.update | Uma das seguintes funções: | –– |
Antes de você começar
Adicione o Firebase ao seu projeto Android , caso ainda não o tenha feito. Ao final deste fluxo de trabalho, você terá um aplicativo Android do Firebase em seu projeto do Firebase.
Se você não estiver usando nenhum outro produto Firebase, basta criar um projeto e registrar seu aplicativo. Se você decidir usar produtos adicionais, conclua todas as etapas em Adicionar o Firebase ao seu projeto Android .
Para criar um link do Firebase para o Google Play e fazer upload de AABs, verifique se seu aplicativo atende aos seguintes requisitos:
O aplicativo no Google Play e o aplicativo Firebase para Android são registrados usando o mesmo nome de pacote.
O aplicativo no Google Play é configurado no painel do aplicativo e distribuído para uma das faixas do Google Play (teste interno, teste fechado, teste aberto ou produção).
A análise do aplicativo no Google Play foi concluída e o aplicativo foi publicado. Seu aplicativo será publicado se a coluna Status do aplicativo exibir um dos seguintes status: Teste interno (não teste interno de rascunho), Teste fechado, Teste aberto ou Produção.
Vincule seu aplicativo Firebase para Android à sua conta de desenvolvedor do Google Play:
No console do Firebase, acesse seu
No cartão do Google Play , clique em Link .
Se você já possui links para o Google Play, clique em Gerenciar .Siga as instruções na tela para ativar a integração do App Distribution e selecionar quais aplicativos Firebase para Android vincular ao Google Play.
Saiba mais sobre como vincular ao Google Play .
Passo 1. Configure seu projeto Android
Em seu arquivo Gradle de nível raiz (nível de projeto) ( <project>/build.gradle.kts
ou<project>/build.gradle
), adicione o plug-in App Distribution Gradle como uma dependência: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
}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
}No arquivo Gradle do módulo (nível do aplicativo) (geralmente <project>/<app-module>/build.gradle.kts
ou<project>/<app-module>/build.gradle
), adicione o plug-in App Distribution Gradle: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")
}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'
}Se você estiver protegido por um proxy ou firewall corporativo, adicione a seguinte propriedade de sistema Java que permite que o App Distribution faça upload de suas distribuições para o Firebase: -Djavax.net.ssl.trustStore=/path/to/truststore -Djavax.net.ssl.trustStorePassword=password
Etapa 2. Autenticar com Firebase
Usar credenciais da conta de serviço do Firebase
Passe o arquivo de chave da sua conta de serviço para build.gradle
. Talvez você ache esse método conveniente se já tiver o arquivo de chave da conta de serviço em seu ambiente de compilação.Defina a variável de ambiente GOOGLE_APPLICATION_CREDENTIALS
para apontar para o arquivo de chave da sua conta de serviço. Você pode preferir esse método se já tiver Application Default Credentials (ADC) configuradas para outro serviço do Google (por exemplo, Google Cloud).
No console do Google Cloud, selecione seu projeto e crie uma nova conta de serviço. Adicione a função de administrador do Firebase App Distribution . Crie uma chave json privada e mova-a para um local acessível ao seu ambiente de construção. Certifique-se de manter esse arquivo em um local seguro , pois ele concede acesso de administrador ao App Distribution em seu projeto do Firebase. Pule esta etapa se você criou seu aplicativo depois de 20 de setembro de 2019: no console de APIs do Google, ative a API Firebase App Distribution. Quando solicitado, selecione o projeto com o mesmo nome do seu projeto do Firebase. Forneça ou localize as credenciais da sua conta de serviço: Para passar ao Gradle a chave da sua conta de serviço, no arquivo build.gradle
, defina a propriedadeserviceCredentialsFile
como o arquivo JSON da chave privada.Para localizar suas credenciais com ADC, defina a variável de ambiente GOOGLE_APPLICATION_CREDENTIALS
como o caminho do arquivo JSON da chave privada. Por exemplo:export GOOGLE_APPLICATION_CREDENTIALS=/absolute/path/to/credentials/file.json Para obter mais informações sobre autenticação com ADC, leia Fornecendo credenciais para seu aplicativo.
Faça login usando a CLI do Firebase
Etapa 3. Configure suas propriedades de distribuição
<project>/<app-module>/build.gradle.kts
ou <project>/<app-module>/build.gradle
), configure o App Distribution adicionando pelo menos uma seção firebaseAppDistribution
.
release
aos testadores, siga estas instruções::
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"
}
}
}
// ...
}
android {
// ...
buildTypes {
release {
firebaseAppDistribution {
artifactType="AAB"
releaseNotesFile="/path/to/releasenotes.txt"
testers="ali@example.com, bri@example.com, cal@example.com"
}
}
}
// ...
}
debug
e release
em versões de produto "demo" e "completo", siga estas instruções:
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"
}
}
}
// ...
}
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"
}
}
}
// ...
}
Parâmetros de compilação de distribuição de aplicativos | |
---|---|
appId | O ID do aplicativo Firebase do seu aplicativo. Obrigatório apenas se você não tiver o plug-in Gradle do Google Services instalado. Você pode encontrar o ID do aplicativo no arquivo appId="1:1234567890:android:321abc456def7890" |
serviceCredentialsFile | O caminho para o arquivo JSON da chave privada da sua 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 |
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 compilações. Você pode especificar os testadores como uma lista de endereços de e-mail separados por vírgulas: testers="ali@example.com, bri@example.com, cal@example.com" Ou você pode especificar o caminho para um arquivo que contém uma lista de endereços de e-mail separados por vírgulas: testersFile="/path/to/testers.txt" |
groups ou groupsFile | Os grupos de testadores para os quais você deseja distribuir compilações (consulte Gerenciar testadores ). Os grupos são especificados usando 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 que contém uma lista de aliases de grupo separados por vírgulas: groupsFile="/path/to/tester-groups.txt" |
testDevices ou testDevicesFile | Os seguintes tipos de distribuição fazem parte do recurso Beta do testador automatizado . Os dispositivos de teste para os quais você deseja distribuir compilações (consulte Testes automatizados ). Você pode especificar os dispositivos de teste como uma lista de especificações de dispositivos separadas por ponto e vírgula: testDevices="model=shiba,version=34,locale=en,orientation=portrait;model=b0q,version=33,locale=en,orientation=portrait" Ou você pode especificar o caminho para um arquivo que contém uma lista de especificações de dispositivos separadas por ponto e vírgula: testDevicesFile="/path/to/testDevices.txt" |
testUsername | O nome de usuário para login automático a ser usado durante testes automatizados . |
testPassword ou testPasswordFile | A senha para login automático a ser utilizada durante testes automatizados . Ou você pode especificar o caminho para um arquivo de texto simples contendo uma senha: testPasswordFile="/path/to/testPassword.txt" |
testUsernameResource | Nome do recurso para o campo de nome de usuário para login automático a ser usado durante testes automatizados . |
testPasswordResource | Nome do recurso do campo de senha para login automático a ser utilizado durante testes automatizados . |
testNonBlocking | Execute testes automatizados de forma assíncrona. Visite o console do Firebase para ver os resultados dos testes automáticos. |
stacktrace | Imprime o stacktrace para exceções do usuário. Isso é útil ao depurar problemas. |
Etapa 4. Distribua seu aplicativo aos testadores
Por fim, para empacotar seu aplicativo de teste e convidar testadores, crie os alvos BUILD-VARIANT
eappDistributionUpload BUILD-VARIANT
com o wrapper Gradle do seu projeto, onde BUILD-VARIANT é o tipo de produto opcional e o tipo de build que você configurou na etapa anterior. Para obter mais informações sobre variações de produtos, consulte Configurar variantes de build .Por exemplo, para distribuir seu aplicativo usando a variante de build release
, execute o seguinte comando:./gradlew bundleRelease appDistributionUploadRelease Ou, se você se autenticou com sua Conta do Google e não forneceu credenciais no 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 bundleRelease appDistributionUploadRelease 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 fazer upload de uma compilação de depuração para o App Distribution: ./gradlew bundleDebug appDistributionUploadDebug
--artifactType="AAB"Para convidar testadores adicionais ou remover testadores existentes do seu projeto do 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 removidos não terão mais acesso às versões do seu projeto, mas ainda poderão manter o acesso às suas versões 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
eappDistributionRemoveTesters
também aceitam os seguintes argumentos:projectNumber
: o número do seu projeto do Firebase.serviceCredentialsFile
: o caminho para o arquivo de credenciais de serviço do Google. Este é o mesmo argumento usado pela ação de upload.
firebase_console_uri
– um link para o console do Firebase exibindo uma única versão. Você pode compartilhar esse link com outros desenvolvedores da sua organização.testing_uri
– Um link para o lançamento na experiência do testador (aplicativo nativo do Android) que permite aos testadores visualizar as notas de lançamento e instalar o aplicativo em seus dispositivos. O testador precisa de acesso à 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.
Próximos passos
Implemente feedback no aplicativo para facilitar aos testadores o envio de feedback sobre seu aplicativo (incluindo capturas de tela). Aprenda como exibir alertas no aplicativo para seus testadores quando novas versões do seu aplicativo estiverem disponíveis para instalação. Acesse o codelab do Android App Bundle para saber como distribuir versões de pacotes de apps passo a passo. Aprenda as práticas recomendadas para distribuir aplicativos Android para testadores de controle de qualidade usando CI/CD .