Conceptos Básicos de EAS Build
Diez ejemplos para eas.json, perfiles de build y tu primer cloud build de iOS/Android - la base operativa para enviar binarios de Expo SDK 57 sin Xcode local ni Android Studio en cada máquina.
Busca en todas las páginas de la documentación
Diez ejemplos para eas.json, perfiles de build y tu primer cloud build de iOS/Android - la base operativa para enviar binarios de Expo SDK 57 sin Xcode local ni Android Studio en cada máquina.
Comienza con una app Expo en blanco con SDK 57 fijado e EAS CLI instalado globalmente o a través de npx:
npx create-expo-app@latest EasBuildBasics --template blank-typescript@sdk-57 --yes
cd EasBuildBasics
npm install -g eas-cli@latest
eas loginConfirma la versión fija del stack antes de configurar los builds:
{
"dependencies": {
"expo": "~57.0.4",
"react": "19.2.3",
"react-native": "0.86.0"
}
}Herramientas: Estos ejemplos apuntan a Expo SDK 57 (
expo~57.0.4), React Native 0.86.0 y React 19.2.3. Lee Conceptos Básicos de Prebuild antes de tu primer EAS build bajo Continuous Native Generation (CNG).
EAS Build es el servicio de compilación en cloud de Expo. Para una app típica de CNG:
app.config.ts, lockfile y modules/ (no los ios/ / android/ ignorados por git)npx expo prebuild cuando las carpetas nativas están ausenteseas build:configureeas build:configure crea eas.json y vincula el proyecto a tu cuenta de ExpoCada build necesita un ID de proyecto de Expo en app.config.ts:
eas init// app.config.ts
import type { ExpoConfig } from "expo/config";
const config: ExpoConfig = {
name: "EasBuildBasics",
slug: "eas-build-basics",
version: "1.0.0",
ios: {
bundleIdentifier: "com.example.easbuildbasics",
},
android: {
package: "com.example.easbuildbasics",
},
extra: {
eas: {
projectId: "00000000-0000-0000-0000-000000000000", // de eas init
},
},
};
export default config;npx expo config --type public | jq '.extra.eas.projectId'eas init escribe projectId - commit app.config.ts después de vincularprojectId fallan temprano con un error de configuración claroeas.json es el contrato de build - los perfiles nombran conjuntos de credenciales, canales de distribución y variables de entorno:
{
"cli": {
"version": ">= 16.0.0",
"appVersionSource": "remote"
},
"build": {
"development": {
"developmentClient": true,
"distribution": "internal"
},
"preview": {
"distribution": "internal"
},
"production": {}
}
}eas build --profile preview --platform ioscli.version fija la CLI mínima de EAS - CI debe coincidir o superarlaappVersionSource: "remote" permite a EAS auto-incrementar buildNumber / versionCode en perfiles de storeLos ingenieros necesitan un binario nativo con expo-dev-client embebido - no Expo Go:
npx expo install expo-dev-client{
"build": {
"development": {
"developmentClient": true,
"distribution": "internal",
"environment": "development",
"ios": {
"simulator": true
},
"android": {
"buildType": "apk"
}
}
}
}# Binario del Simulador de iOS (sin registro de dispositivo)
eas build --profile development --platform ios
# APK de Android para sideload USB
eas build --profile development --platform androiddevelopmentClient: true compila el menú dev y módulos nativos personalizadosLos builds preview se ven como producción pero se instalan a través de distribución interna - TestFlight interno, ad hoc o enlaces APK:
{
"build": {
"preview": {
"distribution": "internal",
"environment": "preview",
"channel": "preview",
"ios": {
"simulator": false
},
"android": {
"buildType": "apk"
}
}
}
}eas build --profile preview --platform alldistribution": "internal" omite el lanzamiento público de la store - ve Distribución Internachannel vincula el binario a paquetes de EAS Update publicados con eas update --channel previewProduction compila binarios de lanzamiento firmados para App Store Connect y Google Play:
{
"build": {
"production": {
"distribution": "store",
"environment": "production",
"channel": "production",
"autoIncrement": true,
"android": {
"buildType": "app-bundle"
}
}
}
}eas build --profile production --platform all --non-interactivedistribution": "store" produce artefactos listos para App Store / PlaybuildType": "app-bundle" es requerido para Play production - AAB no APKautoIncrement": true incrementa buildNumber de iOS y versionCode de Android remotamenteEl primer build interactivo recorre la configuración de credenciales - acepta credenciales administradas por EAS a menos que tengas una cadena de certificados existente:
eas build --profile production --platform iosFlujo de indicadores (primera vez):
? Generate a new Apple Distribution Certificate? › Yes
? Generar un nuevo Certificado de Distribución de Apple? › Sí
? Generate a new Apple Provisioning Profile? › Yes
? Generar un nuevo Perfil de Aprovisionamiento de Apple? › Sí
? Log in to your Apple Developer account › ...
? Inicia sesión en tu cuenta de Apple Developer › ...Después del éxito:
eas build:list --platform ios --limit 3--non-interactiveEl primer build de Android genera o carga un keystore - deja que EAS cree uno para apps greenfield:
eas build --profile production --platform android? Generate a new Android Keystore? › Yes
? ¿Generar un nuevo Android Keystore? › SíInspecciona credenciales almacenadas:
eas credentials --platform androidRastrea compilaciones en vuelo y recupera enlaces de instalación:
# Observa el último build
eas build --profile preview --platform ios --wait
# Lista builds recientes
eas build:list --status finished --limit 5
# Abre la página de build en el navegador
eas build:view// Ejemplo de metadatos de build terminado (abreviado)
{
"status": "FINISHED",
"platform": "IOS",
"artifacts": {
"buildUrl": "https://expo.dev/artifacts/eas/....ipa"
}
}buildUrl con QA para sideload de APK/IPA o instalaciones ad hoc--non-interactive y sondea eas build:list o webhooks de EASLas apps estándar de CNG ignoran carpetas nativas en git - EAS las regenera en cada build:
# .gitignore
ios/
android/{
"build": {
"production": {
"env": {
"EXPO_NO_CAPABILITY_SYNC": "0"
}
}
}
}# Verificación local de cordura antes de gastar minutos de EAS
npx expo-doctor
npx expo prebuild --no-install
eas build --profile production --platform allInfo.plist editado manualmente - expresa cambios nativos en pluginsexpo run:ios local o depuración de Xcode en tu laptop."simulator": true) aún usan workers cloud de macOS.expo prebuild cuando las carpetas están ausentes.package-lock.json - el tamaño de carga y el tiempo de instalación bajan.Versiones del stack: 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