← Voltar à oficina
Nos bastidores

Android Store Screenshot Kit

Capturas reais de apps Android reais, feitas sempre do mesmo jeito e prontas para o Google Play.

Três telas de celular, a do meio emoldurada e marcada como aprovada

Sobre o projeto

As capturas da loja ficam desatualizadas toda vez que o app muda, e tirá-las à mão em um celular é lento e nunca sai igual duas vezes. Este kit transforma isso em uma etapa repetível: cada app mantém um pequeno teste que prepara os próprios dados e percorre as telas, e o kit cuida do resto.

Ele compila o app e o teste, executa os dois no dispositivo do Firebase Test Lab escolhido, acompanha a execução até o fim, baixa as capturas e as confere com os requisitos do Google Play antes de copiá-las para a pasta da loja do app.

Como funciona

  1. Descreva a execução. Um arquivo TOML curto informa o app, o teste, os dispositivos a usar e a quantidade e o tamanho das capturas esperadas.
  2. Escreva a parte do app. Comece pelo teste-modelo, carregue dados de exemplo fixos e liste as telas a capturar. Funções compartilhadas esperam as telas, tocam, fecham diálogos do sistema e travam a orientação.
  3. Execute um dispositivo. Um único comando compila os dois APKs, envia-os ao Firebase Test Lab e acompanha o teste até terminar.
  4. Colete e confira. As capturas são baixadas, conferidas quanto a quantidade, tamanho e formato de cor, e salvas junto com um registro da execução.

Feito com o kit

Estas são as capturas de tablet do Pocket Omaha para o Google Play, feitas pelo kit em um Pixel Tablet real no Firebase Test Lab. O teste carrega dados gravados de Apple, JPMorgan e Nokia, então nenhum dado de mercado foi buscado e toda execução mostra os mesmos números.

A primeira execução também revelou um aviso de compatibilidade do Android sobre o alinhamento de uma das bibliotecas nativas do app. Depois que a biblioteca foi atualizada, uma segunda execução passou sem ele.

Recursos

  • O mesmo resultado em toda execução: Cada app carrega os próprios dados de exemplo gravados em vez de chamar serviços ao vivo, então as capturas não mudam de uma execução para outra.
  • Conferidas antes do uso: Cada PNG é conferido quanto à quantidade esperada, às dimensões e ao formato RGB sem transparência que o Google Play exige.
  • Um registro de cada execução: Cada execução ganha a própria pasta, com os PNGs intactos e um arquivo run.json com os hashes dos arquivos, o dispositivo, o link do Firebase Console e a configuração exata.
  • Pronto para dispositivos de 16 KB: Uma verificação separada confere o alinhamento do APK e de cada biblioteca nativa dentro dele, para dispositivos Android com páginas de memória de 16 KB.
  • Sem contas surpresa: Um dispositivo sempre precisa ser informado, então uma execução nunca se espalha por todos os dispositivos físicos configurados, possivelmente pagos.
  • Segredos de fora: Os IDs de projeto vêm de variáveis de ambiente e o login, da Google Cloud CLI; nenhuma credencial fica na configuração.
  • Fácil de adotar: As funções compartilhadas dependem só do AndroidX Test e do UI Automator, então servem para apps com ou sem Jetpack Compose.

Sob o capô

A ferramenta de linha de comando é um único script Python que não precisa de nada além do Python 3.11. As funções compartilhadas são uma pequena biblioteca Android escrita em Java, então não impõem nenhuma versão do Kotlin aos apps que as usam e funcionam com o AGP 8 e o AGP 9. Na CI, dispositivos virtuais podem rodar em cada pull request, deixando os físicos para as versões candidatas. O kit é de código aberto, sob a licença GPL-3.0.