Credenciales e Implementación de iOS
Certificados, perfiles y credenciales administradas por EAS - el manual para firma de iOS en Expo SDK 57 sin que cada ingeniero mantenga carpetas de firma de Xcode.
Busca en todas las páginas de la documentación
Certificados, perfiles y credenciales administradas por EAS - el manual para firma de iOS en Expo SDK 57 sin que cada ingeniero mantenga carpetas de firma de Xcode.
Tarjeta de receta de referencia rápida - lista para copiar y pegar.
# Configuración interactiva de credenciales
eas credentials --platform ios
# Primera compilación de producción (solicita inicio de sesión en Apple)
eas build --profile production --platform ios
# Compilación de CI no interactiva después de que existan credenciales
eas build --profile production --platform ios --non-interactive// app.config.ts - el ID del bundle es el ancla de firma
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 - la distribución store vs internal afecta el tipo de perfil
{
"build": {
"production": {
"distribution": "store",
"ios": { "simulator": false }
},
"preview": {
"distribution": "internal",
"ios": { "simulator": false }
}
}
}Cuándo usarlo:
eas build --platform ios pregunta sobre certificados y perfiles de implementación.Paso 1 - Registra el identificador del bundle
ios.bundleIdentifier en app.config.ts.Paso 2 - Deja que EAS administre las credenciales de firma
eas credentials --platform iosElige para una app nueva:
? 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? › YesEAS almacena:
.p12, encriptado en servidores de Expo)distribution).p8) para APNsPaso 3 - Registra dispositivos para compilaciones internas
# Crea un enlace de registro para probadores
eas device:create
# Lista dispositivos registrados
eas device:listLos perfiles internos ("distribution": "internal") incorporan UDIDs registrados. Los probadores deben registrarse antes de que reconstruyas.
Paso 4 - Compila y verifica
eas build --profile production --platform ios
eas build --profile preview --platform ios # ad hoc / probadores internosDescarga el IPA e instala a través de TestFlight (eas submit) o enlace ad hoc - Internal Distribution.
| Credencial | Propósito | ¿Administrada por EAS? |
|---|---|---|
| Apple Distribution Certificate | Firma IPAs de distribución | Sí - recomendado |
| Provisioning Profile (App Store) | Distribución en Store / TestFlight | Sí |
| Provisioning Profile (Ad Hoc) | Instalaciones en dispositivos registrados | Sí - se actualiza cuando se agregan dispositivos |
| Development Certificate | Depuración local con expo run:ios | Opcional - Xcode local |
| APNs Key (.p8) | Notificaciones push | Sí - típicamente una clave por equipo |
| App Store Connect API Key | Automatización de eas submit | Separada de la firma - ver EAS Submit |
eas credentials --platform ios
# Elige: Remove distribution certificate → Generate new → Rebuild all profiles
eas build --profile production --platform ios --clear-cache--non-interactive recogen nuevas credenciales automáticamenteeas credentials --platform ios
# Elige: Upload distribution certificate (.p12 + password)
# Elige: Upload provisioning profile (.mobileprovision)EAS puede habilitar capacidades del portal que coincidan con tus plugins de configuración:
{
"build": {
"production": {
"ios": {
"autoIncrement": true
}
}
}
}// app.config.ts - los dominios asociados requieren alineación del portal + entitlements
ios: {
associatedDomains: ["applinks:shop.example.com"],
},
plugins: [["expo-notifications", { icon: "./assets/notification-icon.png" }]],app.config.ts / plugins - luego regenera perfiles a través de eas credentials| Síntoma | Causa probable | Solución |
|---|---|---|
| "No valid code signing certificates" | Certificado de distribución expirado o faltante | eas credentials → regenera |
| "Profile doesn't match bundle identifier" | Desalineación de bundleIdentifier vs portal | Alinea app.config.ts con App ID |
| "Device not in provisioning profile" | UDID del probador nuevo | eas device:create → reconstruye perfil interno |
| Push funciona en dev, falla en TestFlight | Entorno APNs incorrecto | La prueba de push de producción necesita entitlements de producción - TestFlight Distribution |
| "Account not enrolled in Apple Developer Program" | Solo Apple ID personal | Inscríbete en developer.apple.com ($99/año) |
.p12, .mobileprovision o contraseñas en git.distribution: "store" - cargas de TestFlight y App Review.distribution: "internal" - instalación directa de IPA en dispositivos registrados (se aplican reglas de máx 100 por año por tipo de dispositivo).eas credentials y eas build manejan llamadas de API del portal de Apple desde cualquier SO.expo run:ios local o Xcode Instruments.eas credentials - los entitlements provienen de Entitlements & Capabilities.Stack versions: Esta página fue escrita para React 19.2.3, React Native 0.86.0 y Expo SDK 57 (
expo~57.0.4).
Revisado por Chris St. John·Última actualización: 16 jul 2026