Android requiere que todas las aplicaciones estén firmadas digitalmente con un certificado antes de poder ser instaladas. Para poder distribuir tu aplicación Android a través de la tienda Google Play es necesario que esté firmada con una clave de lanzamiento que luego debe ser utilizada para todas las futuras actualizaciones. Desde 2017 es posible que Google Play gestione la firma de lanzamientos de forma automática gracias a la funcionalidad App Signing by Google Play. Sin embargo, antes de subir el binario de tu aplicación a Google Play es necesario firmarlo con una clave de subida. La página sobre la firma de tus aplicaciones en la documentación de Android Developers describe el tema en detalle. Esta guía cubre el proceso en breve, así como una lista de los pasos necesarios para empaquetar el paquete de JavaScript.
- Generar una clave de subida#
- Configurar las variables de Gradle#
- Añadir la configuración de firma a la configuración de Gradle de tu aplicación#
- Generar la liberación AAB#
- Probar la build de lanzamiento de tu aplicación#
- Publicación en otras tiendas#
- Activar Proguard para reducir el tamaño del APK (opcional)#
- Migración de aplicaciones antiguas de Android React Native para utilizar App Signing by Google Play#
- Permisos por defecto#
Generar una clave de subida#
Puedes generar una clave de firma privada utilizando keytool
. En Windows keytool
debe ejecutarse desde C:\Program Files\Java\jdkx.x.x_x\bin
.
Copy
Este comando le pide las contraseñas para el keystore y la clave y para los campos de Nombre Distinguido para su clave. A continuación, genera el almacén de claves como un archivo llamado my-upload-key.keystore
.
El almacén de claves contiene una única clave, válida durante 10000 días. El alias es un nombre que usarás más tarde cuando firmes tu aplicación, así que recuerda tomar nota del alias.
En Mac, si no estás seguro de dónde está tu carpeta bin del JDK, realiza el siguiente comando para encontrarla:
Copiar
Dará como resultado el directorio del JDK, que será algo así:
Copie
Navegue hasta ese directorio utilizando el comando cd /your/jdk/path
y utilice el comando keytool con permiso sudo como se muestra a continuación.
Copie
Nota: Recuerde mantener el archivo keystore privado. En caso de que hayas perdido la clave de subida o haya sido comprometida debes seguir estas instrucciones.
Configurar las variables de Gradle#
- Coloca el archivo
my-upload-key.keystore
bajo el directorioandroid/app
de tu carpeta de proyecto. - Edita el archivo
~/.gradle/gradle.properties
oandroid/gradle.properties
, y añade lo siguiente (sustituye*****
por la contraseña correcta del keystore, el alias y la contraseña de la clave),
Copiar
Estas van a ser variables globales de Gradle, que luego podremos utilizar en nuestra configuración de Gradle para firmar nuestra app.
Nota sobre la seguridad: Si no eres partidario de almacenar tus contraseñas en texto plano, y estás ejecutando macOS, también puedes almacenar tus credenciales en la app Keychain Access. Entonces puedes omitir las dos últimas filas en
~/.gradle/gradle.properties
.
Añadir la configuración de firma a la configuración de Gradle de tu aplicación#
El último paso de configuración que hay que hacer es configurar las compilaciones de lanzamiento para que se firmen usando la clave de subida. Edita el archivo android/app/build.gradle
en la carpeta de tu proyecto, y añade la configuración de firma,
Copiar
Generar la liberación AAB#
Ejecutar lo siguiente en un terminal:
Copiar
Gradle’s bundleRelease
empaquetará todo el JavaScript necesario para ejecutar su aplicación en el AAB (Android App Bundle). Si necesita cambiar la forma en que el paquete de JavaScript y / o recursos dibujables se agrupan (por ejemplo, si ha cambiado los nombres de archivo / carpeta por defecto o la estructura general del proyecto), echa un vistazo a android/app/build.gradle
para ver cómo se puede actualizar para reflejar estos cambios.
Nota: Asegúrese de que
gradle.properties
no incluyeorg.gradle.configureondemand=true
ya que hará que la construcción de la versión omita la agrupación de JS y los activos en el binario de la aplicación.
La AAB generada se encuentra en android/app/build/outputs/bundle/release/app.aab
, y está lista para ser subida a Google Play.
Para que Google Play acepte el formato AAB es necesario configurar la App Signing by Google Play para tu aplicación en la Google Play Console. Si estás actualizando una aplicación existente que no utiliza App Signing by Google Play, consulta nuestra sección de migración para saber cómo realizar ese cambio de configuración.
Probar la build de lanzamiento de tu aplicación#
Antes de subir la build de lanzamiento a la Play Store, asegúrate de probarla a fondo. Primero desinstala cualquier versión anterior de la aplicación que ya tengas instalada. Instálala en el dispositivo utilizando el siguiente comando en la raíz del proyecto:
Copiar
Nota que --variant release
sólo está disponible si has configurado la firma como se ha descrito anteriormente.
Puede terminar cualquier instancia de bundler que se esté ejecutando, ya que todo su código de framework y JavaScript está incluido en los activos del APK.
Publicación en otras tiendas#
Por defecto, el APK generado tiene el código nativo para las arquitecturas de CPU x86 y ARMv7a. Esto hace que sea más fácil compartir APKs que se ejecutan en casi todos los dispositivos Android. Sin embargo, esto tiene el inconveniente de que habrá algo de código nativo no utilizado en cualquier dispositivo, lo que lleva a APKs innecesariamente más grandes.
Puedes crear un APK para cada CPU cambiando la siguiente línea en android/app/build.gradle:
Copy
Carga estos dos archivos a los mercados que soportan la orientación de dispositivos, como Google Play y Amazon AppStore, y los usuarios obtendrán automáticamente el APK apropiado. Si quieres subir a otros mercados, como APKFiles, que no soportan múltiples APKs para una misma app, cambia también la siguiente línea para crear el APK universal por defecto con binarios para ambas CPUs.
Copiar
Activar Proguard para reducir el tamaño del APK (opcional)#
Proguard es una herramienta que puede reducir ligeramente el tamaño del APK. Lo hace despojando partes del bytecode Java de React Native (y sus dependencias) que tu app no está utilizando.
IMPORTANTE: Asegúrate de probar a fondo tu app si has habilitado Proguard. Proguard a menudo requiere una configuración específica para cada biblioteca nativa que está utilizando. Consulte
app/proguard-rules.pro
.
Para habilitar Proguard, edite android/app/build.gradle
:
Copy
Migración de aplicaciones antiguas de Android React Native para utilizar App Signing by Google Play#
Si estás migrando desde una versión anterior de React Native lo más probable es que tu aplicación no utilice la función App Signing by Google Play. Te recomendamos que la habilites para poder aprovechar cosas como la división automática de la aplicación. Para migrar desde la antigua forma de firmar necesitas empezar por generar una nueva clave de subida y luego reemplazar la configuración de firma de lanzamiento en android/app/build.gradle
para usar la clave de subida en lugar de la de lanzamiento (ver la sección sobre cómo añadir la configuración de firma a gradle). Una vez hecho esto, debes seguir las instrucciones del sitio web de ayuda de Google Play para enviar tu clave de lanzamiento original a Google Play.
Permisos por defecto#
Por defecto, el permiso INTERNET
se añade a tu aplicación Android ya que casi todas las aplicaciones lo utilizan. El permiso SYSTEM_ALERT_WINDOW
se añade a su APK de Android en modo de depuración, pero se eliminará en producción.