ReactNative报Exception in native call无法加载脚本如何修复
E/unknown:ReactNative: Exception in native call java.lang.RuntimeException: Unable to load script. Make sure you're either running Metro (run 'npx react-native start') or that your bundle 'index.android.bundle' is packaged correctly for release. at com.facebook.react.bridge.CatalystInstanceImpl.jniLoadScriptFromAssets(Native Method) at com.facebook.react.bridge.CatalystInstanceImpl.loadScriptFromAssets(CatalystInstanceImpl.java:239) at com.facebook.react.bridge.JSBundleLoader$1.loadScript(JSBundleLoader.java:29) at com.facebook.react.bridge.CatalystInstanceImpl.runJSBundle(CatalystInstanceImpl.java:268) at com.facebook.react.ReactInstanceManager.createReactContext(ReactInstanceManager.java:1371) at com.facebook.react.ReactInstanceManager.access$1100(ReactInstanceManager.java:136) at com.facebook.react.ReactInstanceManager$5.run(ReactInstanceManager.java:1065) at java.lang.Thread.run(Thread.java:923)
调试开发场景修复方案
- 先确认Metro服务已正常启动:新开终端进入项目根目录,执行
npx react-native start,等待终端输出Metro启动成功日志后,再安装启动APP - 端口映射配置:如果是USB连接真机调试,执行
adb reverse tcp:8081 tcp:8081完成端口映射后再启动APP - 网络连通性检查:确保手机/模拟器和开发机处于同一局域网,关闭开发机防火墙、代理工具,在手机浏览器访问
http://<开发机本地IP>:8081/index.bundle?platform=android确认可正常加载内容 - Android高版本兼容处理:Android 9及以上系统默认禁止明文HTTP请求,可在
android/app/src/main/AndroidManifest.xml的application标签添加android:usesCleartextTraffic="true"临时开启调试权限 - 全量清理缓存重试:依次执行以下命令后重新安装APP
cd android ./gradlew clean cd .. npx react-native start --reset-cache
正式Release包场景修复方案
- 手动生成bundle文件:先确认
android/app/src/main/assets目录存在,不存在则手动创建,然后在项目根目录执行命令:
npx react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
- 打包配置校验:检查
android/app/build.gradle中project.ext.react配置块,确认bundleInRelease = true,开启打包时自动生成bundle的逻辑 - 重新构建Release包:依次执行以下命令完成正式打包
cd android ./gradlew clean ./gradlew assembleRelease
内容的提问来源于stack exchange,提问作者bariskandemir
相关产品推荐
相关产品推荐

