升级到 RN 0.68 后 APK 中缺少 index.android.bundle

Ren*_*put 12 android gradle react-native

将我们的 RN 应用程序升级到 RN 0.68 后,我们在发布版本中遇到错误:

\n
FATAL EXCEPTION: create_react_context\nProcess: com.app, PID: 15057\njava.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.\n
Run Code Online (Sandbox Code Playgroud)\n

该应用程序在开发中运行良好,并且在升级之前也运行良好。它使用 Hermes,但没有使用新的 Fabric 架构。

\n

当构建 APK 然后查看其内容时,我们可以看到捆绑包未被复制。但它是正确构建在中间工件中的:

\n
$ ./gradlew assembleRelease\n\xe2\x80\xa6\nBUILD SUCCESSFUL in 45s\n1050 actionable tasks: 14 executed, 1036 up-to-date\n\n$ unzip -l app/build/outputs/apk/release/app-arm64-v8a-release.apk | grep bundle\n<nothing>\n\n$ ls -l app/build/outputs/apk/release/app-arm64-v8a-release.apk\n-rw-r--r--  1 renchap  staff  15618010 Apr 12 21:03 app/build/outputs/apk/release/app-arm64-v8a-release.apk\n\n$ find . -name "index.android.bundle"\n./app/build/generated/assets/react/release/index.android.bundle\n./app/build/intermediates/merged_assets/release/out/index.android.bundle\n./app/build/intermediates/merged_assets/release/mergeReleaseAssets/out/index.android.bundle\n./app/build/intermediates/assets/release/index.android.bundle\n\n$ ls -lh ./app/build/intermediates/assets/release/index.android.bundle\n-rw-r--r--  1 renchap  staff    11M Apr 12 19:48 ./app/build/intermediates/assets/release/index.android.bundle\n
Run Code Online (Sandbox Code Playgroud)\n

我怀疑缺少构建步骤,并且没有将其复制到最终目录,但我对 Gradle 或 RN 的构建过程不够熟悉,无法检查这一点。

\n

您知道什么可能导致此问题,或者在哪里可以解决此问题吗?

\n

Ren*_*put 43

在将构建文件与全新的 RN 应用程序进行比较后发现了它!

我有

classpath("com.android.tools.build:gradle:7.1.2")
Run Code Online (Sandbox Code Playgroud)

android/build.gradle

但对于 RN 0.68,您需要完全依赖于版本 7.0.4,否则 JS 包不会复制到最终的 APK 中。

切换到后,发布 APK 现在可以运行

classpath("com.android.tools.build:gradle:7.0.4")
Run Code Online (Sandbox Code Playgroud)

  • 在我尝试之前我无法相信你的答案。严重地... (11认同)
  • 谢谢!!我花了一整天的时间来解决这个问题。 (3认同)