you studio run react new mac installing instalar have generate for create app javascript android react-native mobile-application

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.bu‌​ndle --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

here


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 con cd 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.