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_HOMEapuntando 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.jsonqueandroid.packagetenga el identificador de tu app (por ejemplocom.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 #
- Abre la carpeta
android/en Android Studio (File → Open). - Espera a que termine de sincronizar Gradle.
- Ve a Build → Generate App Bundles or APKs → Generate APKs.
- 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:
- Crear tu propia clave (keystore):
keytool -genkeypair -v -storetype PKCS12 -keystore mi-app.keystore -alias mi-app -keyalg RSA -keysize 2048 -validity 10000 - Configurarla en
android/app/build.gradle, ensigningConfigs, y usarla en el build derelease. Los pasos exactos están en la guía de React Native. - 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.propertiescon la líneasdk.dir=/ruta/a/tu/Android/sdk. - Error de versión de Java: Gradle necesita Java 17. Revisa con
java -version. - Cambié
app.jsony no se refleja: vuelve a ejecutarnpx expo prebuild --platform android --clean. Ojo:--cleanborra los cambios que hayas hecho a mano enandroid/.
Resumen #
| Quiero… | Comando |
|---|---|
| Un APK para probar y compartir | ./gradlew assembleRelease |
| Hacerlo con interfaz gráfica | Android Studio → Generate APKs |
| Usar mi configuración de EAS sin pagar | eas build --local |
| Publicar en Google Play | Clave propia + ./gradlew bundleRelease |