studio run react instalar example cli app ios xcode react-native

ios - run - Reacciona la aplicación nativa bloqueada en la pantalla de bienvenida en el dispositivo pero funciona en un simulador



react native example (10)

La aplicación My React Native funciona en el simulador XCode sin problemas, pero cuando ejecuto un dispositivo físico, mi iPhone, hay un problema. La aplicación se inicia y se bloquea en la pantalla de inicio de React Native, luego de 10-15 segundos la aplicación se bloquea / cierra. ¿Cuál es la causa de esto y cómo puedo prevenirlo?


Este problema podría plantearse debido a las siguientes posibilidades:

  1. Su esquema de ejecución se configurará para release lugar de debug , por lo que siempre espere cargar main.jsbundle , en lugar de ejecutar desde el servidor de depuración. Cámbielo por Producto-> Esquema-> Editar esquema-> Ejecutar-> Crear configuración: depurar

Verifique en el registro de Xcode que cualquier mensaje como NSURLConnection finished with error - code -1004 o NSURLConnection finished with error - code -1022 . Vaya a Proyecto-> Destino-> Fases de compilación-> + -> Nueva fase de secuencia de comandos de ejecución

  1. (-1004) Ha configurado su proyecto XCode desde el boceto y se olvidó de ingresar el script de xcode nativo de reacción en las fases de compilación:

Para la siguiente versión de React Native 50: export NODE_BINARY=node ../node_modules/react-native/packager/react-native-xcode.sh

Para la versión superior de React Native 50: export NODE_BINARY=node ../node_modules/react-native/scripts/react-native-xcode.sh

  1. (-1022) Su aplicación ATS emite, verifique en Info.plist, y puede desactivar ATS usando el código siguiente: <key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict>

Intenté desconectar mi iPhone de Internet, el problema desapareció en lanzamientos posteriores.

Así que algo está tratando de hacer cosas de red y causando el retraso. Es una solución rápida, pero lo haremos hasta que encontremos al culpable específico.


Me enfrenté a este problema donde estaba reaccionar-nativo-pantalla de bienvenida. Después de quitarlo, está funcionando.


Otra cosa que debe verificar: asegúrese de que su dispositivo y su computadora estén en la misma red WiFi.

Tenía este problema cuando mi iPhone estaba en la red WiFi de mi hogar pero mi computadora se conectaba automáticamente a un punto de acceso WiFi de Optimum.


Para mí, cuando construí, funcionaba bien en el simulador pero en el dispositivo real solo venía la pantalla de inicio y nada más.

Esto se debió a que mi configuración de compilación era el modo de depuración, que es el valor predeterminado, supongo, tuve que cambiar la configuración de publicación / compilación de depuración a liberación y todo funcionó como se esperaba.


Para mi estoy usando el framework firebase en mi proyecto. Olvidé el archivo agregar GoogleService-Info.plist a mi proyecto xcode. Después de agregarlo, el problema desapareció.


Parece que he encontrado el problema. De acuerdo con http://facebook.github.io/react-native/releases/0.45/docs/running-on-device.html#running-your-app-on-ios-devices , al compilar y ejecutar la aplicación en En su dispositivo, su aplicación cargará archivos js desde el empaquetador en su computadora, para que pueda volver a cargar su aplicación en vivo. Eso significa que su dispositivo tiene que estar conectado a su computadora o debe estar en la misma red wifi que su computadora. Si su dispositivo no puede acceder al empaquetador, se atascará en la pantalla de inicio y se cerrará.

Para ejecutar de forma confiable en su dispositivo, edite el esquema de compilación y compile la versión de lanzamiento.


Probablemente necesites firmar la aplicación.

Bajo el navegador de proyectos, haga clic en su aplicación. Luego seleccione su objetivo de la lista de proyectos y objetivos. Dentro de la pestaña "General", encuentra la sección ''Firma''. Tendrás que especificar un equipo aquí.

Vea este enlace para obtener más información: https://developer.apple.com/library/content/documentation/IDEs/Conceptual/AppDistributionGuide/LaunchingYourApponDevices/LaunchingYourApponDevices.html#//apple_ref/doc/uid/TP40012582-CH27-SW4


Yo estaba teniendo el mismo problema.
Lo que hice fue en Xcode ir a Productos -> Esquema -> Editar esquema -> Seleccionar la pestaña Ejecutar -> Cambiar la configuración de compilación a Liberar (por defecto era el modo de depuración) y ejecutar la aplicación en el dispositivo.

Fue mucho más rápido y ejecutarlo como una aplicación nativa.


¡Debería ser perfectamente posible ejecutar la aplicación en depuración, en el dispositivo, sin el empaquetador adjunto! Tiene que usar el react-native bundle para crear un paquete fuera de línea y agregarlo a su proyecto Xcode. Entonces, su aplicación debería volver a caer en ese paquete cuando el empaquetador no esté disponible.

Esto solía estar en la documentación de Deploying to Device FB, no estoy seguro de por qué ya no está allí.

Ejemplo de llamada (nuestro index.ios.js se coloca en ./dist por TypeScript):

react-native bundle --dev true --assets-dest ./ios --entry-file ./dist/index.ios.js --platform ios --bundle-output ios/main.jsbundle

Además, aparentemente es necesario decirle a su aplicación que se ejecute directamente desde el paquete en lugar de intentar acceder al servidor de desarrollo, lo que parece causar el tiempo de espera (tuvimos el mismo problema que OP).

Comenta esta línea:

jsCodeLocation = // whatever

Y añada esta línea:

jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];