借助此资源,我将 React Native 项目从 0.63.3 升级到 0.66.4 https://react-native-community.github.io/upgrade-helper/?from=0.63.3&to=0.66.4(遵循其中的每条指令)。
但是生成 apk 后,我在启动过程中看到以下错误 ->
01-27 19:12:46.364 9223 9895 E AndroidRuntime: 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.
01-27 19:12:46.364 9223 9895 E AndroidRuntime: at com.facebook.react.bridge.CatalystInstanceImpl.jniLoadScriptFromAssets(Native Method)
01-27 19:12:46.364 9223 9895 E AndroidRuntime: at com.facebook.react.bridge.CatalystInstanceImpl.loadScriptFromAssets(CatalystInstanceImpl.java:2)
01-27 19:12:46.364 9223 9895 E AndroidRuntime: at com.facebook.react.bridge.JSBundleLoader$1.loadScript(JSBundleLoader.java:1)
01-27 19:12:46.364 9223 9895 E AndroidRuntime: at com.facebook.react.bridge.CatalystInstanceImpl.runJSBundle(CatalystInstanceImpl.java:3)
01-27 19:12:46.364 9223 9895 E AndroidRuntime: at com.facebook.react.o.s(ReactInstanceManager.java:39)
01-27 19:12:46.364 9223 9895 E AndroidRuntime: at com.facebook.react.o.c(ReactInstanceManager.java:1)
01-27 19:12:46.364 9223 9895 E AndroidRuntime: at com.facebook.react.o$f.run(ReactInstanceManager.java:12)
我的index.android.bundle正在正确的路径中生成,我尝试了下面所有可能的解决方案来解决此错误,但似乎没有任何方法可以解决上述错误:
$ mkdir android/app/src/main/assets
$ React-Native Bundle --platform android --dev false --entry-file index.android.js -- 捆绑输出 android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
在项目build.gradle =>
project.ext.react= [
bundleInDebug:真,
bundleInRelease:true]
在androidManifest.xml =>
android:usesCleartextTraffic="true"
工具:忽略=“GoogleAppIndexingWarning”
在项目build.gradle =>
project.ext.react= [
entryFile:“index.js”,
bundleAssetName:“index.android.bundle”,
devDisabledInAppDev:true,
devDisabledInRelease:true]
请提出一些解决方案。
在执行第一步(即
mkdir android/app/src/main/assets
)之前,您必须使用npm start
命令运行metro服务器。下面的链接包含在调试模式下创建离线 APk 所需的所有步骤。我可以看到缺少第一步。
我也被这个问题困扰了很长时间,终于找到了一种让它发挥作用的方法。我之前尝试过使用命令在资产目录中创建捆绑包的捆绑解决方案,但热重载似乎在那里不起作用。让它发挥作用的两行代码:
npx react-native start --port=8088
npx react-native run-android --port=8088
现在您可以进行热重载并且应用程序按预期运行!
晕我来自未来🗿🗿,
我遇到了同样的问题,当我升级 com.android.tools.build:gradle 版本时会发生这种情况
我的第一个版本是7.0.4 然后我升级到7.4.2
我降级到7.0.4后这个问题就消失了,
./android/build.gradle
classpath('com.android.tools.build:gradle:7.0.4')
我不知道为什么,如果有人知道请告诉我,谢谢。