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

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

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

java.lang.RuntimeException: Could not get BatchedBridge, make sure your bundle is packaged correctly
at 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)

几经查找,在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,如图
Could not get BatchedBridge, make sure your bundle is packaged correctly_第1张图片
这里面的命令过长,没有截完整,全部命令如下:

“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/
运行效果如下图:
Could not get BatchedBridge, make sure your bundle is packaged correctly_第2张图片
还是那句话,assets路径自己按照项目情况自行修改

ok,至上面的两种方法最后生成的效果是一样的,都可以看到在项目的assets目录下生成了了来了两个文件,
Could not get BatchedBridge, make sure your bundle is packaged correctly_第3张图片
其中第二个文件 .meta亲测可以删除

over,以上的问题完美解决,愉快的来ReactNative吧

你可能感兴趣的:(Android)