Skip to content

Cómo generar un APK con Expo y React Native sin pagar EAS

Genera el APK de tu app de Expo y React Native en tu computadora, gratis y sin depender de los servidores de EAS: con expo prebuild, Gradle o Android Studio. Paso a paso, para debug y release.

expo react-native android apk

Si estás aprendiendo React Native con Expo, tarde o temprano quieres un APK para instalar tu app en un teléfono o pasársela a alguien. La vía oficial es EAS Build, el servicio en la nube de Expo, pero el plan gratuito tiene cola y límite de builds al mes.

La buena noticia: puedes generar el APK en tu propia computadora, gratis. En esta nota te explico tres formas, de la más simple a la más completa.

Lo que necesitas

  • Un proyecto de Expo (SDK 50 o superior funciona igual).
  • Android Studio instalado, que trae el Android SDK: descárgalo aquí.
  • Java 17 (el JDK que viene con Android Studio sirve).
  • La variable ANDROID_HOME apuntando al SDK. En macOS suele ser ~/Library/Android/sdk.

Paso 1: genera el código nativo con expo prebuild

Expo crea las carpetas nativas de Android a partir de tu app.json:

npx expo prebuild --platform android

Esto crea la carpeta android/ con un proyecto de Android normal. Si también quieres iOS, ejecuta npx expo prebuild sin el --platform.

Antes de hacerlo, revisa en app.json que android.package tenga el identificador de tu app (por ejemplo com.tuempresa.tuapp). Más detalles en la documentación de prebuild.

Paso 2: genera el APK

Opción A: con Gradle desde la terminal (la más rápida)

Entra a la carpeta android/ y ejecuta Gradle:

cd android
./gradlew assembleRelease

En Windows usa gradlew.bat assembleRelease.

Cuando termine, tu APK está en:

android/app/build/outputs/apk/release/app-release.apk

Ese archivo ya lo puedes instalar en cualquier Android. Por defecto, el proyecto que genera Expo firma el build de release con una clave de prueba (debug), así que sirve para probar y compartir, pero no para publicar en Google Play (ver más abajo).

Si solo quieres un build de desarrollo, usa ./gradlew assembleDebug. El APK queda en apk/debug/app-debug.apk, pero necesita el servidor de Metro corriendo para cargar el JavaScript.

Opción B: con Android Studio

  1. Abre la carpeta android/ en Android Studio (File → Open).
  2. Espera a que termine de sincronizar Gradle.
  3. Ve a Build → Generate App Bundles or APKs → Generate APKs.
  4. Cuando termine, haz clic en locate en la notificación para abrir la carpeta del APK.

Para cambiar entre debug y release, usa Build → Select Build Variant.

Opción C: EAS Build en tu computadora

Si ya usas EAS, puedes correr el mismo build en tu máquina, sin cola y sin gastar builds del plan:

npm install -g eas-cli
eas build --platform android --profile preview --local

Para que salga un APK y no un AAB, en tu eas.json el perfil debe tener:

{
  "build": {
    "preview": {
      "android": { "buildType": "apk" }
    }
  }
}

Para publicar en Google Play

Google Play no acepta APKs firmados con la clave de prueba, y pide el formato AAB. Necesitas:

  1. Crear tu propia clave (keystore):
keytool -genkeypair -v -storetype PKCS12 -keystore mi-app.keystore -alias mi-app -keyalg RSA -keysize 2048 -validity 10000
  1. Configurarla en android/app/build.gradle, en signingConfigs, y usarla en el build de release. Los pasos exactos están en la guía de React Native.
  2. Generar el bundle:
./gradlew bundleRelease

Guarda el keystore y sus contraseñas en un lugar seguro. Si lo pierdes, no podrás publicar actualizaciones de tu app con la misma clave.

Errores comunes

  • “SDK location not found”: crea android/local.properties con la línea sdk.dir=/ruta/a/tu/Android/sdk.
  • Error de versión de Java: Gradle necesita Java 17. Revisa con java -version.
  • Cambié app.json y no se refleja: vuelve a ejecutar npx expo prebuild --platform android --clean. Ojo: --clean borra los cambios que hayas hecho a mano en android/.

Resumen

Quiero…Comando
Un APK para probar y compartir./gradlew assembleRelease
Hacerlo con interfaz gráficaAndroid Studio → Generate APKs
Usar mi configuración de EAS sin pagareas build --local
Publicar en Google PlayClave propia + ./gradlew bundleRelease