Credenciais e Provisionamento iOS
Certificados, perfis e credenciais gerenciadas pelo EAS - o guia para assinatura iOS no Expo SDK 57 sem que cada engenheiro precise manter pastas de assinatura do Xcode.
Busque em todas as páginas da documentação
Certificados, perfis e credenciais gerenciadas pelo EAS - o guia para assinatura iOS no Expo SDK 57 sem que cada engenheiro precise manter pastas de assinatura do Xcode.
Cartão de referência rápida - pronto para copiar e colar.
# Configuração interativa de credenciais
eas credentials --platform ios
# Primeiro build de produção (solicita login da Apple)
eas build --profile production --platform ios
# Build de CI não interativo após as credenciais existirem
eas build --profile production --platform ios --non-interactive// app.config.ts - o bundle ID é a âncora de assinatura
import type { ExpoConfig } from "expo/config";
const config: ExpoConfig = {
name: "ShopApp",
slug: "shop-app",
ios: {
bundleIdentifier: "com.example.shopapp",
buildNumber: "1",
},
extra: {
eas: { projectId: "00000000-0000-0000-0000-000000000000" },
},
};
export default config;// eas.json - distribuição store vs internal afeta o tipo de perfil
{
"build": {
"production": {
"distribution": "store",
"ios": { "simulator": false }
},
"preview": {
"distribution": "internal",
"ios": { "simulator": false }
}
}
}Quando usar isso:
eas build --platform ios pergunta sobre certificados e perfis de provisionamento.Passo 1 - Registrar o bundle ID
ios.bundleIdentifier em app.config.ts.Passo 2 - Deixe o EAS gerenciar as credenciais de assinatura
eas credentials --platform iosEscolha para um aplicativo novo:
? What do you want to do? › Set up credentials for a new bundle identifier
? Generate a new Apple Distribution Certificate? › Yes
? Generate a new Apple Provisioning Profile? › YesO EAS armazena:
.p12, criptografado nos servidores Expo)distribution).p8) para APNsPasso 3 - Registrar dispositivos para builds internos
# Criar um link de registro para testadores
eas device:create
# Listar dispositivos registrados
eas device:listPerfis internos ("distribution": "internal") incorporam UDIDs registrados. Testadores devem se registrar antes de você reconstruir.
Passo 4 - Construir e verificar
eas build --profile production --platform ios
eas build --profile preview --platform ios # ad hoc / testadores internosBaixe o IPA e instale via TestFlight (eas submit) ou link ad hoc - Internal Distribution.
| Credencial | Propósito | Gerenciado pelo EAS? |
|---|---|---|
| Apple Distribution Certificate | Assina IPAs de release | Sim - recomendado |
| Provisioning Profile (App Store) | Distribuição para Store / TestFlight | Sim |
| Provisioning Profile (Ad Hoc) | Instalações em dispositivos registrados | Sim - atualiza quando dispositivos são adicionados |
| Development Certificate | Debug local expo run:ios | Opcional - Xcode local |
| APNs Key (.p8) | Notificações push | Sim - uma chave por equipe é o usual |
| App Store Connect API Key | Automação eas submit | Separado da assinatura - veja EAS Submit |
eas credentials --platform ios
# Escolha: Remove distribution certificate → Generate new → Rebuild all profiles
eas build --profile production --platform ios --clear-cache--non-interactive pegam as novas credenciais automaticamenteeas credentials --platform ios
# Escolha: Upload distribution certificate (.p12 + password)
# Escolha: Upload provisioning profile (.mobileprovision)O EAS pode habilitar capabilities no portal que correspondem aos seus plugins de configuração:
{
"build": {
"production": {
"ios": {
"autoIncrement": true
}
}
}
}// app.config.ts - domínios associados exigem alinhamento do portal + entitlements
ios: {
associatedDomains: ["applinks:shop.example.com"],
},
plugins: [["expo-notifications", { icon: "./assets/notification-icon.png" }]],app.config.ts / plugins - depois regenere os perfis via eas credentials| Sintoma | Causa Provável | Correção |
|---|---|---|
| "No valid code signing certificates" | Certificado de distribuição expirado ou ausente | eas credentials → regenerar |
| "Profile doesn't match bundle identifier" | bundleIdentifier diferente do portal | Alinhe app.config.ts com o App ID |
| "Device not in provisioning profile" | Novo UDID de testador | eas device:create → reconstruir perfil interno |
| Push funciona em dev, falha no TestFlight | Ambiente APNs incorreto | Push de produção precisa de entitlements de produção - TestFlight Distribution |
| "Account not enrolled in Apple Developer Program" | Apenas Apple ID pessoal | Inscreva-se em developer.apple.com ($99/ano) |
.p12, .mobileprovision ou senhas no git.distribution: "store" - Uploads para TestFlight e App Review.distribution: "internal" - Instalação direta de IPA em dispositivos registrados (regras de até 100 por ano por tipo de dispositivo se aplicam).eas credentials e eas build lidam com chamadas de API do portal Apple de qualquer sistema operacional.expo run:ios local ou Xcode Instruments.eas credentials - entitlements vêm de Entitlements & Capabilities.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