ReactNative 0.71.13 生产版本要求 Metro 运行

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

我们已将开发版本中的 React Native 应用程序从 0.67.5 更新到 0.71.13,一切都可以在 iOS 和 Android 上完美运行。但是当我尝试在 iOS 上进行生产(发布)构建时,它可以工作,我尝试推送到 appStoreConnect 并通过试飞安装它。但在 Android 上,情况就完全不同了。我尝试将发布版本推送到内部测试通道并将其安装在我的设备上。安装成功,但是当我尝试启动应用程序时,它崩溃了,并且我在分析中收到此错误:

Unable to load script. Make sure you're either running Metro (run 'npx react-native start') or that your bundle 'app.bundle' is packaged correctly for release.

我尝试了很多谷歌搜索,找到了this。据我了解,使用 gradle 插件 4.1.0+/gradle 6.5 时这个错误已得到解决,我尝试过使用多种不同的组合,但总是遇到相同的错误。

也许有人遇到过同样的情况并可以帮助我?

react-native react-native-upgrade
1个回答
0
投票

在 ios 和 android 中,他们不断更改将 javascript 包放入目标文件夹 ios/ 或 android/ 的方式。如果您在 ios 上遇到此步骤,请检查 ios/AppDelegate.m(m) 中的

sourceURLForBridge
函数,并确保它将返回 javascript 捆绑文件的位置。

对于 android,在 MainApplication.kt 的 kotlin 中有一个函数

override fun getJSBundleFile(): String
。如果重写此函数,则控制从何处读取 javascript 包。

根据您的 rn 版本,这些功能可能会移动到不同的位置。但您可以调试这些并查看 rn 尝试从哪里加载您的包。

对于在执行任何操作之前出现的错误,我只是尝试将 javascript 包放在 android 文件夹的顶层。

npx run react-native bundle --entry-file ./index.js --platform android --dev false --minify true --bundle-output ./android/app.bundle

然后我会再次运行 apk 构建,看看它是否有效。如果它确实有效,我会在 android 构建开始之前将此命令放入我的构建脚本中。

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