EAS Submit
Automatizando uploads para App Store Connect e Play Console - o guia para enviar artefatos do EAS Build para o TestFlight, App Review e trilhas do Google Play no Expo SDK 57.
Busque em todas as páginas da documentação
Automatizando uploads para App Store Connect e Play Console - o guia para enviar artefatos do EAS Build para o TestFlight, App Review e trilhas do Google Play no Expo SDK 57.
Cartão de receita de referência rápida - pronto para copiar e colar.
# Compila e envia o último artefato
eas build --profile production --platform ios
eas submit --platform ios --latest
eas build --profile production --platform android
eas submit --platform android --latest
# Compilação + envio em uma única etapa
eas build --profile production --platform ios --auto-submit// eas.json
{
"submit": {
"production": {
"ios": {
"appleId": "release@example.com",
"ascAppId": "1234567890",
"appleTeamId": "ABCDE12345"
},
"android": {
"serviceAccountKeyPath": "./secrets/play-service-account.json",
"track": "internal"
}
}
}
}# Envio em CI sem interação
eas submit --platform all --profile production --latest --non-interactiveQuando usar isso:
Etapa 1 - Criar chave da API App Store Connect
.p8 uma vez - armazene no cofre de segredos da equipe.eas credentials --platform ios
# Configure a chave da API App Store Connect para envioEtapa 2 - Configurar eas.json
{
"submit": {
"production": {
"ios": {
"ascAppId": "1234567890",
"appleTeamId": "ABCDE12345"
}
}
}
}Encontre ascAppId em App Store Connect → Informações do App → Apple ID (numérico).
Etapa 3 - Compilar e enviar
eas build --profile production --platform ios
eas submit --platform ios --profile production --latestOu com auto-submit:
{
"build": {
"production": {
"distribution": "store",
"autoIncrement": true
}
}
}eas build --profile production --platform ios --auto-submitEtapa 1 - Criar conta de serviço
./secrets/play-service-account.json (ignorado pelo git).Etapa 2 - Configurar trilhas do eas.json
{
"submit": {
"production": {
"android": {
"serviceAccountKeyPath": "./secrets/play-service-account.json",
"track": "internal",
"releaseStatus": "completed"
}
},
"closed-beta": {
"android": {
"serviceAccountKeyPath": "./secrets/play-service-account.json",
"track": "alpha"
}
}
}
}Etapa 3 - Compilar AAB e enviar
eas build --profile production --platform android
eas submit --platform android --profile production --latesttrack": "internal" - loop de QA mais rápido - Trilhas de Teste InternoversionCode deve ser maior que todos os uploads anteriores - use autoIncrement no perfil de build# .github/workflows/release.yml (excerto)
name: Release
on:
push:
tags: ["v*"]
jobs:
submit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with: { node-version: 22 }
- run: npm install -g eas-cli
- run: eas submit --platform all --profile production --latest --non-interactive
env:
EXPO_TOKEN: ${{ secrets.EXPO_TOKEN }}# Enviar um ID de build específico (não apenas --latest)
eas submit --platform ios --id <build-uuid>EXPO_TOKEN - token de máquina de expo.dev → Tokens de acesso.p8 da Apple e o JSON do Play como segredos de CI - referencie os caminhos em eas.json ou substituições de variáveis de ambienteEnvie IPAs ou AABs compilados fora do EAS:
eas submit --platform ios --path ./dist/ShopApp.ipa
eas submit --platform android --path ./dist/ShopApp.aab --profile productionUse quando:
| Erro | Plataforma | Correção |
|---|---|---|
| "Invalid Provisioning Profile" | iOS | Recompile com um perfil de distribuição válido - Credenciais iOS |
| "Redundant Binary Upload" | iOS | Incremente buildNumber - habilite autoIncrement |
| "Version code has already been used" | Android | Aumente versionCode em app.config.ts ou versão remota |
| "APK/AAB not signed with upload key" | Android | Alinhe o keystore do EAS com o certificado de upload do Play |
| "Service account lacks permission" | Android | Reconvide SA no Play Console com direitos de lançamento |
Versões da Stack: Esta página foi escrita para React 19.2.3, React Native 0.86.0 e Expo SDK 57 (
expo~57.0.4).
Revisado por Chris St. John·Última atualização: 16 de jul. de 2026