React Native utilizando el file pre-empaquetado en el dispositivo, incluso si el modo DEV

Hace unos días, cuando compilé y ejecuté mi aplicación nativa de Xcode en un dispositivo, me di count de que incluso si establecía mi esquema en Debug, la aplicación todavía se está cargando desde un file pre-empaquetado. Aparte de eso, todo lo demás es como el modo de desarrollador. Puedo agitar el dispositivo y las windows emergentes de meny del desarrollador, en la console obtengo salida y reacciono también a los loggings nativos:

Ejecución de la aplicación "XXXXX" con appParams: {"rootTag": 1, "initialProps": {}}. DEV === verdadero, la advertencia de nivel de desarrollo está activada, las optimizaciones de performance están desactivadas

Entonces, cuando trato de volver a cargar desde el menu de desarrollador, de hecho vuelve a cargarse pero con el post

Cargando desde el file pre-empaquetado

He intentado eliminar la aplicación, verificar el esquema de debugging, limpiar compilation y comstackr y ejecutar de nuevo, sin ningún resultado diferente.

¿Alguien tiene una idea de lo que podría haber causado esto (he estado ejecutando la aplicación anteriormente con el Esquema de liberación, pero nunca he tenido este problema) y cómo puedo volver a "normal"?

Lamentablemente, no sé cómo reproducir esto.

  • Xcode: 8.2.1
  • React-native: 0.40.0

¡Gracias por tu time!

Resuelto

En mi caso, fue como @ while1 señaló con respecto a la connection wifi. Mi dispositivo y computadora donde no están conectados al mismo wifi. Sin embargo, encontré una networking en mi lugar de trabajo donde todavía no funcionaba, incluso si tanto la computadora como el dispositivo estaban conectados a esta networking (¿de alguna manera protegidos?). De todos modos, cuando compartí mi connection a Internet desde mi iPhone con mi computadora, la aplicación finalmente cargó los datos de mi computadora. Entonces, de hecho, el iPhone no pudo conectarse a mi computadora y, por lo tanto, cargar un file pre-empaquetado.

En reactjsr nativo 0.40.0, React nativo intente adivinar la location del package por sí mismo. Vea si los siguientes puntos pueden ayudar:

  • Asegúrese de que su AppDelegate.m tenga esta línea: jsCodeLocation = [[RCTBundleURLProvider shanetworkingSettings] jsBundleURLForBundleRoot:@"index.ios" fallbackResource:nil] ;

  • Comtesting tu dispositivo y tu Mac Xcode se está ejecutando en el mismo wifi. Internamente para IOS, reaccione nativo intente adivinar ip por sí mismo.

  • Intenta ejecutar la aplicación primero a través de la command-line, por lo que el server de devpackpackager se está ejecutando y luego ejecuta la aplicación a través de xcode en tu dispositivo.

entonces su problema está aquí:

Cambie el código en su AppDelegate.m:

 jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"]; // comment this line jsCodeLocation = [NSURL URLWithString:@"http://xxx.xxx.x.xx:8081/index.ios.bundle?platform=ios&dev=true"]; //uncomment this line 

Aclamaciones:)

Para aquellos que están conectados al mismo Wi-Fi, pero a una dirección IP diferente a localhost (lo configuró en RCTWebSocketExecutor.m ):

Compruebe la console de debugging Xcode, si puede encontrar el siguiente error:

 App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configunetworking via your app's Info.plist file. 
  1. Utilice la siguiente respuesta: https://stackoverflow.com/a/32704702/3979621

  2. Y luego usa la respuesta de Codesingh. Por cierto, recomiendo utilizar la directiva #ifdef DEBUG siguiente manera, para que no tenga que cambiarla manualmente al cambiar entre variantes de compilation:

.

 #ifdef DEBUG jsCodeLocation = [NSURL URLWithString:@"http://xxx.xxx.xxx.xxx:8081/index.ios.bundle?platform=ios&dev=true"]; #else jsCodeLocation = [[RCTBundleURLProvider shanetworkingSettings] jsBundleURLForBundleRoot:@"index.ios" fallbackResource:nil]; #endif