使用设备上预先捆绑的文件来响应本机,即使DEV模式

几天前,当我在一个设备上构build并运行Xcode的原生应用程序时,我意识到即使将我的scheme设置为Debug,应用程序仍然从预先捆绑的文件加载。 除此之外,其他一切就像开发者模式。 我可以摇动设备和开发人员popup窗口,在控制台我得到输出,并反应本​​机也日志:

使用appParams运行应用程序“XXXXX”:{“rootTag”:1,“initialProps”:{}}。 DEV === true,开发级别警告为ON,性能优化为OFF

所以,当我尝试从开发人员重新加载时,它确实重新加载,但与消息

从预先捆绑的文件加载

我试图删除应用程序,validationdebuggingscheme,干净的构build,并build设和再次运行,没有任何不同的结果。

有没有人有线索可能造成这种情况(我一直在运行应用程序与释放计划之前,但从来没有这个问题),我怎么能回到“正常”?

不幸的是我不知道如何重现这一点。

  • Xcode:8.2.1
  • React-native:0.40.0

感谢您的时间!

解决了

在我的情况下,这是作为@ while1指出有关的WiFi。 我的设备和电脑没有连接到相同的无线networking。 然而,我在我工作的地方发现了一个networking,即使连接到这个networking的计算机和设备(也许被保护了),它仍然不起作用。 不pipe怎样,当我从我的iPhone上将我的互联网连接分享给我的电脑时,应用程序终于从我的电脑中加载了数据。 所以确实是iPhone无法连接到我的电脑,因此加载了一个预先捆绑的文件。

在反应原生0.40.0,React本地尝试猜测束位置本身。 请看以下几点是否有帮助:

  • 确保你的AppDelegate.m有这一行: jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index.ios" fallbackResource:nil] ;

  • 检查你的设备和你的Xcode mac是否在同一个wifi上运行。 内部的IOS,反应本机尝试猜测IP本身。

  • 尝试先通过命令行运行应用程序,所以dev包装服务器正在运行,然后通过设备中的xcode运行应用程序。

所以你的问题在这里:

更改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 

干杯:)

对于那些连接到相同的Wi-Fi,但与本地主机不同的IP地址(你已经在RCTWebSocketExecutor.m设置):

检查Xcodedebugging控制台,如果你能find以下错误:

 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. 使用以下答案: https : //stackoverflow.com/a/32704702/3979621

  2. 然后使用Codesingh的答案。 顺便说一句,我build议使用#ifdef DEBUG指令如下,以便您不必在生成变体之间切换时手动更改它:

 #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