34 votes

React Native en utilisant un fichier pré-groupé sur l'appareil, même en mode DEV

Il y A quelques jours, lorsque je créer et exécuter mon réagir application native de Xcode sur un appareil, je me suis rendu compte que même si j'ai mis mon schéma pour Déboguer l'application est toujours en cours de chargement à partir d'un pré-livré fichier. Autre que cela, tout le reste est comme développeur-mode. Je peux le secouer l'appareil et le développeur meny pop-ups, dans la console j'obtiens en sortie, et de réagir en natif aussi les journaux:

L'exécution de l'application "XXXXX" avec appParams: {"rootTag":1,"initialProps":{}}. DEV === vrai, en cours de développement l'avertissement SUR la performance, l'optimisation OFF

Donc, lorsque j'essaie de le recharger à partir du développeur meny, il en effet de la recharge, mais avec le message

Chargement de la pré-livré fichier

J'ai essayé de supprimer l'application, vérifier Debug-schéma de construction propre, et de le construire et de courir à nouveau, sans aucun résultat différent.

Quelqu'un a une idée de ce qui pourrait avoir causé (j'ai été l'exécution de l'application avant de Libération, mais qui n'ont jamais eu ce problème), et comment je peux revenir à la "normale"?

Malheureusement, je ne sais pas comment reproduire ce.

  • Xcode: 8.2.1
  • Réagir-natif: 0.40.0

Je vous remercie pour votre temps!

Résolu

Dans mon cas, c'était comme @while1 souligné concernant le wifi. Mon appareil et de l'ordinateur où elles ne sont pas connectés au même réseau wifi. J'ai cependant trouvé un réseau à mon lieu de travail où il ne fonctionne toujours pas, même si à la fois l'ordinateur et le périphérique connecté à ce réseau (protégé en quelque sorte, peut-être?). De toute façon, quand j'ai partagé ma connexion internet sur mon ordinateur à partir de mon iPhone, les app enfin chargé les données de mon ordinateur. Donc, il était en effet l'iPhone n'étant pas en mesure de se connecter à mon ordinateur, et par conséquent, le chargement d'une pré-livré fichier.

36voto

while1 Points 2153

Dans react native 0.40.0, React native essaie de deviner l'emplacement du bundle par lui-même. Veuillez voir si les points suivants peuvent vous aider:

  • Assurez-vous que votre AppDelegate.m a cette ligne: jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index.ios" fallbackResource:nil] ;

  • Vérifiez votre appareil et votre Mac Xcode fonctionne sur le même wifi. En interne pour IOS, réagissez nativement essayez de deviner ip par lui-même.

  • Essayez d'exécuter l'application d'abord via la ligne de commande, afin que le serveur de développement dev s'exécute, puis exécutez l'application via xcode dans votre appareil.

13voto

Codesingh Points 2581

donc votre problème est là:

Modifiez le code dans votre 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  
 

À votre santé:)

6voto

Comme j'ai rencontré le même problème et les points ci-dessus n'ont pas fonctionné pour moi. je l'ai fait fonctionner en faisant ces étapes.

  • Allez dans xcode-> votre projet-> info.plist
  • Dans "Paramètres de sécurité du transport d'application", sélectionnez "Autoriser les chargements arbitraires" Oui.

il devrait résoudre ce problème.

3voto

Honza Kalfus Points 1166

Pour ceux qui sont connectés à la même connexion Wi-Fi, mais à une adresse IP différente de celle localhost (vous avez configuré en RCTWebSocketExecutor.m):

Vérifier Xcode console de débogage, si vous pouvez trouver l'erreur suivante:

App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file.
  1. Utiliser la réponse suivante: https://stackoverflow.com/a/32704702/3979621

  2. Et puis utiliser Codesingh de réponse. BTW, je vous recommandons d'utiliser l' #ifdef DEBUG directive comme suit, de sorte que vous n'avez pas à modifier manuellement lors de la commutation entre la construction des variantes:

.

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

0voto

Benni Points 71

dans mon cas, il s'agissait d'une mise en réseau inattendue (pour React Native), donc il a salué la mauvaise IP.

Vérifiez le rapport de construction si votre adresse IP est correctement détectée

réagir aux documents natifs

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X