Saltar al contenido principal
Versión: 0.82

Publicación en Google Play Store

Traducción Beta No Oficial

Esta página fue traducida por PageTurner AI (beta). No está respaldada oficialmente por el proyecto. ¿Encontraste un error? Reportar problema →

Android requiere que todas las aplicaciones estén firmadas digitalmente con un certificado antes de poder instalarse. Para distribuir tu aplicación Android a través de Google Play Store, debe firmarse con una clave de release que deberá usarse en todas las actualizaciones futuras. Desde 2017, Google Play puede gestionar automáticamente las firmas de publicación gracias a la funcionalidad App Signing by Google Play. Sin embargo, antes de subir el binario de tu aplicación a Google Play, debe firmarse con una clave de upload. La página Signing Your Applications en la documentación de Android Developers describe este tema en detalle. Esta guía cubre el proceso de forma resumida y enumera los pasos necesarios para empaquetar el bundle de JavaScript.

información

Si estás usando Expo, consulta la guía de Expo para Despliegue en App Stores para construir y enviar tu app a Google Play Store. Esta guía funciona con cualquier app de React Native para automatizar el proceso de despliegue.

Generación de una clave de upload

Puedes generar una clave privada de firma usando keytool.

Windows

En Windows, keytool debe ejecutarse desde C:\Program Files\Java\jdkx.x.x_x\bin, como administrador.

shell
keytool -genkeypair -v -storetype PKCS12 -keystore my-upload-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000

Este comando solicitará las contraseñas para el keystore y la clave, así como los campos del Distinguished Name para tu clave. Luego generará el keystore como un archivo llamado my-upload-key.keystore.

El keystore contiene una única clave válida por 10000 días. El alias es un nombre que usarás más tarde al firmar tu aplicación, así que recuerda anotarlo.

macOS

En macOS, si no estás seguro de dónde está tu carpeta bin del JDK, ejecuta el siguiente comando para encontrarla:

shell
/usr/libexec/java_home

Mostrará el directorio del JDK, que tendrá un aspecto similar a este:

shell
/Library/Java/JavaVirtualMachines/jdkX.X.X_XXX.jdk/Contents/Home

Navega a ese directorio usando el comando cd /your/jdk/path y usa el comando keytool con permisos sudo como se muestra a continuación.

shell
sudo keytool -genkey -v -keystore my-upload-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
precaución

Recuerda mantener privado el archivo keystore. Si pierdes tu clave de upload o se ve comprometida, debes seguir estas instrucciones.

Configuración de variables de Gradle

  1. Coloca el archivo my-upload-key.keystore en el directorio android/app de tu proyecto.

  2. Edita el archivo ~/.gradle/gradle.properties o android/gradle.properties, y añade lo siguiente (reemplaza ***** con la contraseña correcta del keystore, alias y contraseña de clave):

MYAPP_UPLOAD_STORE_FILE=my-upload-key.keystore
MYAPP_UPLOAD_KEY_ALIAS=my-key-alias
MYAPP_UPLOAD_STORE_PASSWORD=*****
MYAPP_UPLOAD_KEY_PASSWORD=*****

Estas serán variables globales de Gradle, que luego podremos usar en nuestra configuración de Gradle para firmar nuestra app.

Nota sobre uso de git

Guardar las variables de Gradle anteriores en ~/.gradle/gradle.properties en lugar de android/gradle.properties evita que se incluyan en git. Es posible que debas crear el archivo ~/.gradle/gradle.properties en el directorio home de tu usuario antes de añadir las variables.

Nota sobre seguridad

Si prefieres no almacenar tus contraseñas en texto plano y usas macOS, también puedes almacenar tus credenciales en la app Keychain Access. En ese caso, puedes omitir las dos últimas filas en ~/.gradle/gradle.properties.

Añadir configuración de firma al archivo Gradle de tu app

El último paso de configuración necesario es configurar las builds de release para que se firmen usando la clave de upload. Edita el archivo android/app/build.gradle en tu proyecto y añade la configuración de firma:

groovy
...
android {
...
defaultConfig { ... }
signingConfigs {
release {
if (project.hasProperty('MYAPP_UPLOAD_STORE_FILE')) {
storeFile file(MYAPP_UPLOAD_STORE_FILE)
storePassword MYAPP_UPLOAD_STORE_PASSWORD
keyAlias MYAPP_UPLOAD_KEY_ALIAS
keyPassword MYAPP_UPLOAD_KEY_PASSWORD
}
}
}
buildTypes {
release {
...
signingConfig signingConfigs.release
}
}
}
...

Generación del AAB de lanzamiento

Ejecuta el siguiente comando en una terminal:

shell
npx react-native build-android --mode=release

Este comando utiliza internamente bundleRelease de Gradle, que empaqueta todo el JavaScript necesario para ejecutar tu aplicación en el AAB (Android App Bundle). Si necesitas cambiar cómo se empaquetan el bundle de JavaScript y/o los recursos drawable (por ejemplo, si modificaste los nombres de archivo/carpeta predeterminados o la estructura general del proyecto), revisa android/app/build.gradle para ver cómo actualizarlo según estos cambios.

nota

Asegúrate de que gradle.properties no incluya org.gradle.configureondemand=true, ya que esto hará que la compilación de lanzamiento omita el empaquetado de JS y recursos en el binario de la aplicación.

El AAB generado se encuentra en android/app/build/outputs/bundle/release/app-release.aab y está listo para cargarse en Google Play.

Para que Google Play acepte el formato AAB, debe estar configurada la Firma de aplicaciones por Google Play para tu aplicación en Google Play Console. Si estás actualizando una aplicación existente que no utiliza esta función, consulta nuestra sección de migración para aprender cómo realizar ese cambio de configuración.

Prueba de la versión de lanzamiento

Antes de cargar la versión de lanzamiento en Play Store, verifica exhaustivamente su funcionamiento. Primero desinstala cualquier versión previa de la aplicación. Instálala en el dispositivo usando este comando en la raíz del proyecto:

shell
npm run android -- --mode="release"

Nota: --mode release solo está disponible si configuraste la firma como se describió anteriormente.

Puedes finalizar cualquier instancia en ejecución del bundler, ya que todo tu código JavaScript y de framework está empaquetado en los assets del APK.

Publicación en otras tiendas

Por defecto, el APK generado incluye código nativo para las arquitecturas de CPU x86, x86_64, ARMv7a y ARM64-v8a. Esto facilita compartir APKs que funcionen en casi todos los dispositivos Android. Sin embargo, la desventaja es que habrá código nativo no utilizado en cada dispositivo, generando APKs innecesariamente más grandes.

Puedes crear un APK específico para cada CPU añadiendo esta línea en tu archivo android/app/build.gradle:

diff
android {

splits {
abi {
reset()
enable true
universalApk false
include "armeabi-v7a", "arm64-v8a", "x86", "x86_64"
}
}

}

Carga estos archivos en mercados que admitan targeting por dispositivo, como Amazon AppStore o F-Droid, y los usuarios recibirán automáticamente el APK adecuado. Para mercados como APKFiles que no admiten múltiples APKs por app, cambia universalApk false a true para crear el APK universal predeterminado con binarios para todas las CPUs.

Nota: También deberás configurar códigos de versión distintos, como se sugiere en esta página de la documentación oficial de Android.

Habilitar Proguard para reducir el tamaño del APK (opcional)

Proguard es una herramienta que puede reducir ligeramente el tamaño del APK eliminando partes del bytecode Java de React Native (y sus dependencias) que tu aplicación no utiliza.

Importante

Realiza pruebas exhaustivas tras habilitar Proguard. Suele requerir configuración específica para cada biblioteca nativa usada. Ver app/proguard-rules.pro.

Para habilitar Proguard, edita android/app/build.gradle:

groovy
/**
* Run Proguard to shrink the Java bytecode in release builds.
*/
def enableProguardInReleaseBuilds = true

Migración de apps antiguas de React Native para Android a Firma por Google Play

Si estás migrando desde una versión anterior de React Native, es probable que tu aplicación no utilice la función de Firma de Aplicaciones por Google Play. Te recomendamos activarla para aprovechar funciones como la división automática de la aplicación. Para migrar desde el método antiguo de firma, debes comenzar generando una nueva clave de subida y luego reemplazar la configuración de firma de release en android/app/build.gradle para usar la clave de subida en lugar de la de release (consulta la sección sobre agregar configuración de firma a gradle). Una vez hecho esto, sigue las instrucciones del sitio de ayuda de Google Play para enviar tu clave de release original a Google Play.

Permisos predeterminados

De forma predeterminada, el permiso INTERNET se agrega a tu aplicación Android ya que prácticamente todas las aplicaciones lo utilizan. El permiso SYSTEM_ALERT_WINDOW se incluye en tu APK de Android en modo de depuración, pero se eliminará en producción.