javascript - studio - react native run project
¿Cómo puedo generar un apk que pueda ejecutarse sin servidor con react-native? (16)
He creado mi aplicación, puedo ejecutarla en mi simulador 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 de Uso de paquete sin conexión en la sección de iOS de la documentación. Pero no pude descubrir cómo lograr lo mismo para Android. es posible? ¿Si es así, cómo?
ACTUALIZACIÓN: En la respuesta a esta pregunta (el Android nativo no pudo cargar el paquete JS ) se dice que el paquete fuera de línea se puede descargar del servidor de desarrollo. Pero cuando obtengo el paquete del servidor de desarrollo, los archivos de imagen no se pueden cargar.
La forma de GUI en Android Studio
- Haga que la aplicación de Android parte de la aplicación React Native se abra en Android Studio (esto solo significa abrir la carpeta de Android de su proyecto react-native con Android Studio)
- Vaya a la pestaña "Crear" en la parte superior
- Vaya a "Build Bundle (s) / APK (s)"
- Luego seleccione "Crear APK (s)"
- Esto lo guiará a través del proceso de ubicar sus claves para firmar el APK o crear sus claves si aún no las tiene, lo cual es muy sencillo. Si solo está practicando, puede generar estas claves y guardarlas en su escritorio.
- Una vez que se complete el proceso y si la compilación fue exitosa, habrá una ventana emergente a continuación en Android Studio. Haga clic en el enlace que dice "localizar" (el APK)
- Eso lo llevará al archivo apk, muévalo a su dispositivo Android. Luego navegue a ese archivo en el dispositivo Android e instálelo.
Si obtiene una
Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]
.
Intenté usar el método de @ Aditya para generar un archivo APK sin firmar e instalarlo, pero cuando fui a instalarlo en mi tableta Android, me dio un error de
Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]
.
Me imagino que esto se debe a que el archivo APK no estaba firmado y la tableta no estaba contenta con esto. Entonces, después de generar el archivo de paquete React Native pude generar un archivo APK firmado, como es normal, a través de Android Studio.
Por cierto, nuestra aplicación es una aplicación de Android completamente funcional que ya existe en Play Store y solo estamos agregando React Native en pedazos pequeños, porque es increíble.
Para resumir, aquí están mis pasos:
1) Generar paquete React Native:
react-native bundle --platform android --dev false --entry-file index.android.js --bundle-output android/<your-package-name>/src/main/assets/index.android.bundle --assets-dest android/<your-package-name>/src/main/res/
2) Genere un archivo APK firmado desde Android Studio.
3) Instale el archivo APK firmado al dispositivo USB:
adb -d install -r <path_to_signed_apk>
El indicador
-d
solo le dice a
adb
que se instale en el dispositivo usb conectado, en el caso de que también tenga un emulador ejecutándose.
Si desea instalar en cualquier emulador, suelte el
-d
.
4) Beneficio!
Consulte la documentación oficial de react-native en Generating Signed APK
Deberá crear una clave para firmar el apk. Use 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
Use una contraseña cuando se le solicite
Una vez que se genera 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 construcción usando gradle
cd android && ./gradlew assembleRelease
Sube el APK a tu teléfono.
El indicador
-r
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 recibes 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
Deberías usar Android Studio para este proceso. Es simplemente más simple. Pero primero ejecute este comando en su directorio de aplicaciones nativas react:
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 su directorio de aplicaciones nativas, le pedirá que actualice Gradle y algunas otras cosas. ve a build-> Generate APK firmado y sigue las instrucciones desde allí. Es realmente sencillo.
Después de la respuesta de Aditya Singh, el apk generado (sin firmar) no se instalaba en mi teléfono. Tuve que generar un apk firmado usando las instrucciones here .
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 archivo
my-release-key.keystore
en el directorio
android/app
en la carpeta de su proyecto.
Luego edite el archivo
~/.gradle/gradle.properties
y agregue lo siguiente (reemplace **** con la contraseña correcta del almacén de claves, el alias y la contraseña clave)
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 utilizando las instrucciones here lugar de almacenarla en texto sin formato.
Luego edite app / build.gradle y asegúrese de que haya lo siguiente (es posible que deba agregar las secciones con SignatureConfigs SignatureConfig):
...
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 el comando
gradlew assembleRelease
, y encuentre su apk
firmado
en
android/app/build/outputs/apk/app-release.apk
Ejecute este comando:
react-native run-android --variant=release
Tenga en cuenta que
--variant=release
solo está disponible si ha configurado la firma concd android && ./gradlew assembleRelease
.
Esperemos que ayude a los nuevos principiantes.
Documento oficial here
Si no tiene un almacén de claves que usar antes del comando, omita
Generación de una clave de firma / archivo de almacén de claves Puede generar una clave de firma privada utilizando keytool. En Windows, Keytool debe ejecutarse desde C: / Archivos de programa / Java / jdkx.x.x_x / bin.
$ keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
obtendrá un archivo como my-release-key.keystore
Configuración de variables de gradle Coloque el archivo my-release-key.keystore en el directorio android / app en la carpeta de su proyecto. Edite el archivo android / gradle.properties y agregue lo siguiente (reemplace ***** con la contraseña correcta del almacén de claves, el alias y la contraseña clave), enableAapt2 set false es una solución alternativa, ya que el problema de Android Gradle versión 3.0
MYAPP_RELEASE_STORE_FILE=my-release-key.keystore
MYAPP_RELEASE_KEY_ALIAS=my-key-alias
MYAPP_RELEASE_STORE_PASSWORD=*****
MYAPP_RELEASE_KEY_PASSWORD=*****
android.enableAapt2=false
luego agregue estas aplicaciones / buid.gradle (aplicación)
debajo de la configuración predeterminada
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
}
}
y versión de tipo Inside Build {}
signingConfig signingConfigs.release
luego simplemente ejecute este comando en la terminal de Android Studio.
si ventanas
cd android
gradlew assembleRelease
si linux / mac
$ cd android
$ ./gradlew assembleRelease
si tiene algún error, elimine toda la carpeta de compilación y ejecute el comando
gradlew clean
que otra vez
gradlew assembleRelease
Para las últimas versiones nativas de reacción para agrupar el proyecto
Androide
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/
iOS
react-native bundle --entry-file index.js --platform ios --dev false --bundle-output ios/main.jsbundle --assets-dest ios
Pruebe a continuación, generará una aplicación-debug.apk en su carpeta raíz / android / app / build / salidas / apk / debug
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
luego ve a la carpeta de Android y ejecuta
./gradlew assembleDebug
Si alguien quiere construir sin las teclas de Play Store, entonces este comando sería muy útil.
# react-native run-android --variant=release
Después de completar la compilación, puede encontrar el apk en el archivo de compilación de lanzamiento.
Si obtiene un error relacionado con index.android.js. Esto se debe a que está utilizando la nueva versión nativa de React (estoy usando 0.55.4) Simplemente reemplace "index.android.js" por "index.js"
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/
Tengo otra solución: - Generar una clave de firma Puede generar una clave de firma privada usando keytool. En Windows, Keytool debe ejecutarse desde C: / Archivos de programa / Java / jdkx.x.x_x / bin.
$ keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
Coloque el archivo my-release-key.keystore en el directorio android / app en la carpeta de su proyecto.
Edite el archivo android / app / build.gradle en su carpeta de proyecto y agregue la configuración de firma,
android {
....
signingConfigs {
release {
storeFile file(''my-release-key.keystore'')
storePassword ''yourpassword''
keyAlias ''my-key-alias''
keyPassword ''yourpassword''
}
}}}
buildTypes {release {signingConfig signingConfigs.release}}
y correr
gradlew assembleRelease
Esto le dará dos archivos en android / app / build / salidas / apk app-release.apk y app-release-unsigned.apk ahora instalan app-release.apk en su dispositivo Android.
Usar android studio para generar apk firmado para el proyecto de android de react también es una opción buena y fácil, abrir el proyecto de android de react en android studio y generar pulsaciones de teclas y apk firmado.
Vaya al directorio del proyecto y ejecute el comando:
cd android && ./gradlew assembleRelease
para React Native 0.49 y más
deberías ir al directorio del proyecto en la terminal y ejecutar ese comando
1 - mkdir android/app/src/main/assets
2 - 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
si es inferior a 0,49
1 - mkdir android/app/src/main/assets
2 - 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 su directorio de aplicaciones nativas, le pedirá que actualice Gradle y algunas otras cosas. ve a build-> Generate APK firmado y sigue las instrucciones desde allí. Que bien.