配置Bundle URL后运行报错



  • 按照热更新文档配置Bundle URL (IOS) :jsCodeLocation = [RCTHotUpdate bundleURL];运行时报错。在执行npm install --save react-native-update命令时有警告:
    npm WARN deprecated graceful-fs@3.0.8: graceful-fs version 3 and before will fail on newer node releases. Please update to graceful-fs@^4.0.0 as soon as possible.
    npm WARN deprecated lodash-node@2.4.1: This package has been discontinued in favor of lodash@^4.0.0.
    不知道是不是这个警告导致的。


  • administrators

    警告没有实际影响。
    请贴出具体报错内容或截图



  • 0_1460945366769_8F4DE3B1-D402-49DB-8533-DD3321D3AFD5.png 报错了。0_1460945440844_E128CFEF-1208-49D0-8EF2-B1A2578D36B1.png Bundle URL我是按文档改的,libz.tbd、libbz2.1.0.tbd都加进来了。


  • administrators

    完整的操作步骤?



  • React Native的坏境配置好了,然后执行:$ npm install -g react-native-update-cli rnpm
    $ npm install --save react-native-update
    $ rnpm link react-native-update 这三个命令。
    然后在工程target的Build Phases->Link Binary with Libraries中加入libz.tbd、libbz2.1.0.tbd;

    最后在AppDelegate.m文件中增加了一些代码:

    #import "RCTHotUpdate.h"

    • (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
      {

      jsCodeLocation = [RCTHotUpdate bundleURL];
      // ... 其它代码
      }

    运行后就报错了。



  • @wangyi 说:

    bundleURL

    您是在模拟器上运行的吗?尝试一下在设备上运行看看?模拟器上貌似不会把bundle打进应用里,导致第一个版本无法加载。

    另外debug和release所打出的bundle也会完全不一样,我们推荐不要在debug模式下启用热更新,像这样:

    #if DEBUG
       jsCodeLocation = [NSURL URLWithString:@"http://localhost:8081/index.ios.bundle?platform=ios&dev=true"];
    #else
      jsCodeLocation=[RCTHotUpdate bundleURL];
    #endif
    

    要在发布之前测试热更新功能,可以用adhoc方式发布测试包并进行测试。



  • 非常感谢!用真机后可以了,模拟器不行。



  • @wangyi 好的,多谢试用,我们也补充到文档里。


登录后回复