¿Cómo puedo generar una apk que pueda ejecutarse sin servidor con react-native?

Resuelto Gokhan Sari asked hace 54 años • 22 respuestas

Creé mi aplicación, puedo ejecutarla en mi emulador local (y también en mi dispositivo Android dentro de la misma red cambiando el servidor de depuración).

Sin embargo, quiero crear un APK que pueda enviar a alguien sin acceso al servidor de desarrollo y quiero que pueda probar la aplicación.

Veo que hay una sección Uso del paquete sin conexión en iOS de la documentación. Pero no pude encontrar la manera de lograr lo mismo para Android. es posible? ¿Si es así, cómo?

ACTUALIZACIÓN: En la respuesta a esta pregunta ( Android no pudo cargar el paquete JS ), se dice que el paquete sin conexión se puede descargar desde el servidor de desarrollo. Pero cuando obtengo el paquete del servidor de desarrollo, los archivos de imagen no se pueden cargar.

Gokhan Sari avatar Jan 01 '70 08:01 Gokhan Sari
Aceptado

Siguiendo la respuesta de Aditya Singh, la aplicación generada (sin firmar) no se instaló en mi teléfono. Tuve que generar una apk firmada siguiendo las instrucciones aquí .

Lo siguiente funcionó para mí:

$ keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000

Coloque el my-release-key.keystorearchivo en el android/app directorio de la carpeta de su proyecto. Luego edite el archivo ~/.gradle/gradle.propertiesy agregue lo siguiente (reemplace **** con la contraseña del almacén de claves, el alias y la contraseña de clave correctos)

MYAPP_RELEASE_STORE_FILE=my-release-key.keystore
MYAPP_RELEASE_KEY_ALIAS=my-key-alias
MYAPP_RELEASE_STORE_PASSWORD=****
MYAPP_RELEASE_KEY_PASSWORD=****

Si está utilizando MacOS, puede almacenar su contraseña en el llavero siguiendo las instrucciones aquí en lugar de almacenarla en texto sin formato.

Luego edite app/build.gradle y asegúrese de que esté lo siguiente (es posible que sea necesario agregar las secciones con signingConfigs signConfig):

...
android {
    ...
    defaultConfig { ... }
    signingConfigs {
        release {
            if (project.hasProperty('MYAPP_RELEASE_STORE_FILE')) {
                storeFile file(MYAPP_RELEASE_STORE_FILE)
                storePassword MYAPP_RELEASE_STORE_PASSWORD
                keyAlias MYAPP_RELEASE_KEY_ALIAS
                keyPassword MYAPP_RELEASE_KEY_PASSWORD
            }
        }
    }
    buildTypes {
        release {
            ...
            signingConfig signingConfigs.release
        }
    }
}
...

Luego ejecute el comando cd android && ./gradlew assembleRelease,

Para Windows 'cd android' y luego ejecute gradlew assembleReleaseel comando y busque su apk firmadoandroid/app/build/outputs/apk/app-release.apk en , oandroid/app/build/outputs/apk/release/app-release.apk

Pedram avatar Sep 12 '2017 07:09 Pedram

Tendrás que crear una clave para firmar la apk. Utilice a continuación para crear su clave:

 keytool -genkey -v -keystore my-app-key.keystore -alias my-app-alias -keyalg RSA -keysize 2048 -validity 10000

Utilice una contraseña cuando se le solicite

Una vez generada la clave, úsela para generar la compilación instalable:

 react-native bundle --platform android --dev false --entry-file index.android.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res/

Genera la compilación usando gradle

 cd android && ./gradlew assembleRelease

Sube el APK a tu teléfono. La -rbandera reemplazará la aplicación existente (si existe)

adb install -r ./app/build/outputs/apk/app-release-unsigned.apk

Aquí se menciona una descripción más detallada: https://facebook.github.io/react-native/docs/signed-apk-android.html

ACTUALIZACIÓN : Basado en comentarios de @shashuec y @Fallen

si obtienes un error

ENOENT: no existe tal archivo o directorio, abra 'android/app/src/main/assets/index.android.bundle'

ejecute mkdir android/app/src/main/assets

Aditya Singh avatar Mar 11 '2016 08:03 Aditya Singh

Deberías usar Android Studio para este proceso. Es simplemente más simple. Pero primero ejecute este comando en el directorio de su aplicación nativa de reacción:

Para la versión más nueva de reaccionar-nativo (por ejemplo, reaccionar nativo 0.49.0 y así sucesivamente...)

react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res

Para versiones anteriores de reaccionar-nativo (0.49.0 y anteriores)

react-native bundle --platform android --dev false --entry-file index.android.js   --bundle-output android/app/src/main/assets/index.android.bundle   --assets-dest android/app/src/main/res/

Luego use Android Studio para abrir la carpeta 'Android' en el directorio de su aplicación nativa de reacción, le pedirá que actualice Gradle y algunas otras cosas. vaya a compilar-> Generar APK firmado y siga las instrucciones desde allí. Es realmente sencillo.

Mike Axle avatar Feb 14 '2017 16:02 Mike Axle

Si alguien quiere compilar sin claves de Play Store, este comando sería muy útil.

# react-native run-android --variant=release

Una vez completada la compilación, puede encontrar la apk en el archivo de compilación de lanzamiento.

Akash Golui avatar Aug 03 '2019 04:08 Akash Golui

Ejecute este comando:

react-native run-android --variant=release

Tenga en cuenta que --variant=releasesolo está disponible si ha configurado el inicio de sesión con cd android && ./gradlew assembleRelease.

Ahmed Ashraf avatar Dec 29 '2016 15:12 Ahmed Ashraf