Could not get BatchedBridge, make sure your bundle is packaged correctly

来源:互联网 发布:天敏机顶盒安装软件 编辑:程序博客网 时间:2024/06/07 12:02

今天在学习ReactNative时,研究到ReactNative嵌入到原生app时遇到的一个问题,导致程序跳转的时候就crash,错误日志如下:

java.lang.RuntimeException: Could not get BatchedBridge, make sure your bundle is packaged correctlyat com.facebook.react.cxxbridge.CatalystInstanceImpl.loadScriptFromAssets(Native Method)at com.facebook.react.cxxbridge.JSBundleLoader$1.loadScript(JSBundleLoader.java:37)at om.facebook.react.cxxbridge.CatalystInstanceImpl.runJSBundle(CatalystInstanceImpl.java:177)at com.facebook.react.XReactInstanceManagerImpl$4.call(XReactInstanceManagerImpl.java:888)at com.facebook.react.XReactInstanceManagerImpl$4.call(XReactInstanceManagerImpl.java:881)at om.facebook.react.bridge.queue.MessageQueueThreadImpl$1.run(MessageQueueThreadImpl.java:74)at android.os.Handler.handleCallback(Handler.java:739)at android.os.Handler.dispatchMessage(Handler.java:95)at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(MessageQueueThreadHandler.java:31)at android.os.Looper.loop(Looper.java:148)at com.facebook.react.bridge.queue.MessageQueueThreadImpl$3.run(MessageQueueThreadImpl.java:196) at java.lang.Thread.run(Thread.java:818)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

几经查找,在facebook的github上的issues中找到了问题的解决方式, 
链接 https://github.com/facebook/react-native/issues/9336 
这是个已经被closed的问题, 
看到国外的有人也受该问题的困扰,有人给了一下的链接 
https://stackoverflow.com/questions/34175416/how-to-use-offline-bundle-on-android-for-react-native-project 
中完美的解决了我的问题。

说下我用的两种解决方式吧

1. 修改项目中的package.json文件

看下你的文件中的是否有scripts模块,添加bundle-android,如图 
这里写图片描述
这里面的命令过长,没有截完整,全部命令如下:

“bundle-android”: “react-native bundle –platform android –dev false –entry-file index.android.js –bundle-output android/app/src/main/assets/index.android.bundle –sourcemap-output android/app/src/main/assets/index.android.map –assets-dest android/app/src/main/res/”

注意:命令中的assets路径按照自己的项目自行调整


2. 使用命令行直接生成,不用修改package.json,不管有没有bundle-android模块

这里写图片描述
首先cd到项目的根目录中,执行命令react-native bundle --platform android --dev false --entry-file index.android.js --bundle-output src/main/assets/index.android.bundle --assets-dest src/main/res/ 
运行效果如下图: 
这里写图片描述
还是那句话,assets路径自己按照项目情况自行修改

ok,至上面的两种方法最后生成的效果是一样的,都可以看到在项目的assets目录下生成了了来了两个文件, 
这里写图片描述 
其中第二个文件 .meta亲测可以删除

over,以上的问题完美解决,愉快的来ReactNative吧
0 0
原创粉丝点击