错误:无法加载脚本。确保您正在运行 Metro 服务器或您的捆绑包“index.android.bundle”已正确打包以供发布

问题描述 投票:0回答:3

借助此资源,我将 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]

  • https://stackoverflow.com/a/49143330/18210851

请提出一些解决方案。

java android react-native facebook
3个回答
0
投票

在执行第一步(即

mkdir android/app/src/main/assets
)之前,您必须使用
npm start
命令运行metro服务器。下面的链接包含在调试模式下创建离线 APk 所需的所有步骤。我可以看到缺少第一步。

https://stackoverflow.com/a/37965603/8988448


0
投票

我也被这个问题困扰了很长时间,终于找到了一种让它发挥作用的方法。我之前尝试过使用命令在资产目录中创建捆绑包的捆绑解决方案,但热重载似乎在那里不起作用。让它发挥作用的两行代码:

  1. 打开一个新的终端窗口,然后导航到您的项目目录。
  2. 使用命令:
npx react-native start --port=8088
  1. 这将在上述终端的不同端口上启动您的 Metro 捆绑程序,即本例中的 8088(默认情况下从端口 8081 启动)。
  2. 打开另一个终端窗口,以类似于根目录的方式导航。
  3. 使用命令:
npx react-native run-android --port=8088

现在您可以进行热重载并且应用程序按预期运行!


0
投票

晕我来自未来🗿🗿,

我遇到了同样的问题,当我升级 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')

我不知道为什么,如果有人知道请告诉我,谢谢。

© www.soinside.com 2019 - 2024. All rights reserved.