Automatizador de Submissão para App Store
Especialista em automatizar submissões para App Store e Google Play com Fastlane, geração de capturas de tela, gerenciamento de metadados e otimização de revisão.
Pontos de Decisão
Quando Usar Lançamento Gradual vs Completo
SE primeira versão do app OU grandes mudanças de funcionalidade:
└── Use lançamento gradual: 10% → 50% → 100% em 7 dias
└── Monitore taxas de crash e feedback do usuário em cada etapa
SENÃO SE hotfix ou atualização menor:
└── SE correção de segurança crítica:
└── Lançamento completo imediatamente
SENÃO:
└── Use 50% → 100% em 2-3 dias
Matriz de Decisão para Renovação de Certificado
| Cenário | Dias Até Expirar | Ação |
|---|---|---|
| Certificado de distribuição | < 30 dias | Execute fastlane match nuke distribution, depois regenere |
| Certificado de desenvolvimento | < 30 dias | Execute fastlane match nuke development |
| Perfil de provisionamento | < 14 dias | Execute match com force_for_new_devices: true |
| Certificado push | < 30 dias | Regenerar no Portal do Desenvolvedor Apple, atualizar servidor |
Seleção de Tipo de Submissão
SE testes internos necessários:
├── iOS: Use grupos externos do TestFlight (até 10.000 testadores)
└── Android: Use faixa interna (até 100 testadores)
SENÃO SE beta público:
├── iOS: Use link público do TestFlight
└── Android: Use faixa fechada com URL de opt-in
SENÃO SE pronto para produção:
├── Verifique se todos os requisitos da loja foram atendidos (veja Portões de Qualidade)
└── Use faixa de produção/release
Modos de Falha
Incompatibilidade de Credenciais Match
- Sintoma: "Nenhum certificado encontrado" ou "Perfil não corresponde ao certificado"
- Diagnóstico: Repositório Git dessincronizado ou membro da equipe gerou certificados manualmente
- Correção: Execute
fastlane match nuke, regenere todos os certificados, confirme no repositório match
Rejeição na Revisão do App - Informações Faltando
- Sintoma: "Precisamos de informações adicionais para revisar seu aplicativo"
- Diagnóstico: Credenciais de demonstração, informações de contato ou notas de revisão ausentes
- Correção: Adicione demo_user.txt, demo_password.txt e notes.txt detalhados em fastlane/metadata/review_information/
Tempo Limite de Compilação em Apps Grandes
- Sintoma: Fastlane expira durante a etapa
build_app - Diagnóstico: Tamanho do app > 2 GB ou processo de compilação complexo
- Correção: Adicione
build_timeout: 7200à ação build_app, habilite compilações incrementais
Falha na Geração de Capturas de Tela
- Sintoma: snapshot/screengrab produz capturas de tela em branco ou incorretas
- Diagnóstico: Testes de UI não estão aguardando animações ou usando simuladores errados
- Correção: Adicione esperas explícitas nos testes de UI, verifique se os nomes dos simuladores coincidem com a lista de dispositivos do Snapfile
Limite de Caracteres de Metadados Excedido
- Sintoma: Upload falha com erro "Descrição muito longa"
- Diagnóstico: Metadados localizados excedem limites da plataforma (App Store: 4000 caracteres, Play Store: 4000 caracteres)
- Correção: Execute
fastlane precheckantes da submissão, ajuste as descrições para os limites da plataforma
Exemplo Prático
Cenário: Configurando submissão automatizada para um app React Native com alvos iOS e Android
Avaliação Inicial:
- App tem processo de submissão manual existente
- Equipe de 4 desenvolvedores precisa de assinatura de código compartilhada
- Requisito para lançamentos graduais e automação de capturas de tela
Passo 1: Decisão de Configuração
# Na raiz do projeto
fastlane init
# Escolha a opção 4 (Configuração manual)
Ponto de Decisão Acionado: Estratégia de gerenciamento de certificados
- Escolha de novato: Usar assinatura automática do Xcode (falha em CI)
- Escolha de especialista: Configurar match para compartilhamento de certificados em equipe
Passo 2: Configurar Match
# fastlane/Matchfile
git_url("https://github.com/company/certificates")
storage_mode("git")
type("appstore") # Também suporta: development, adhoc
Passo 3: Criar Lanes (Decisão Chave: Beta vs Produção)
# fastlane/Fastfile
desc "Submissão TestFlight com incremento de número de compilação"
lanes :beta do
setup_ci if ENV['CI']
match(type: "appstore", readonly: true)
# Decisão: Sempre incrementar build, versão apenas para releases
increment_build_number(build_number: ENV['BUILD_NUMBER'])
build_app(workspace: "ios/MyApp.xcworkspace", scheme: "MyApp")
upload_to_testflight(skip_waiting_for_build_processing: true)
end
Insight de Especialista: Sempre use skip_waiting_for_build_processing: true em CI para evitar timeouts
Passo 4: Validação Antes da Primeira Execução
- Execute
fastlane precheckpara validar metadados - Teste em um único dispositivo antes da automação completa de capturas de tela
- Verifique se o ambiente CI tem a versão correta do Xcode
Resultado: Pipeline automatizado reduzindo o tempo de submissão de 45 minutos para 8 minutos
Portões de Qualidade
Lista de verificação pré-submissão que deve passar antes de executar lanes de produção:
-
fastlane precheckpassa sem avisos - Todos os arquivos de metadados necessários existem em fastlane/metadata/[locale]/
- Capturas de tela geradas para todos os tamanhos de dispositivo necessários (iPhone 6,9", 6,3", iPad 13")
- Número de versão incrementado em relação à versão anterior
- Número de compilação é único e maior que o último do TestFlight
- Certificados de assinatura de código válidos por >30 dias
- Credenciais de demonstração fornecidas em review_information/ (se o app exigir login)
- Porcentagem de lançamento gradual configurada (recomenda-se começar em 10%)
- Variáveis de ambiente CI configuradas: FASTLANE_USER, MATCH_PASSWORD, FASTLANE_SESSION
- Todas as localizações completas para os mercados-alvo
- Ícone do App e recursos necessários presentes nos formatos corretos
Limites de Não-Uso
NÃO use esta skill para:
-
Configuração de Pipeline CI/CD → Use
github-actions-pipeline-builder- Esta skill assume que CI existe; não cria fluxos de trabalho/pipelines
-
Decisões de Arquitetura de App → Use
react-native-architect- Esta skill lida com deploy, não com estrutura de código ou navegação
-
Análise e Relatório de Crash → Use
mobile-analytics-crash-reporting-expert- Esta skill foca em submissão à loja, não em monitoramento pós-lançamento
-
Otimização para App Store (ASO) → Use especialista ASO dedicado
- Esta skill lida com submissão técnica, não com otimização de palavras-chave ou conversão
-
Desenvolvimento de API Backend → Use
api-architect- Esta skill assume que o backend do seu app está pronto para produção
Quando delegar:
- Para problemas de configuração de compilação →
react-native-architect - Para configuração de CI/CD do zero →
github-actions-pipeline-builder - Para monitoramento de desempenho do app →
mobile-analytics-crash-reporting-expert