將我們的 RN 應用程式升級到 RN 0.68 后,我們在發布版本中遇到錯誤:
FATAL EXCEPTION: create_react_context
Process: com.app, PID: 15057
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.
該應用程式在開發中運行良好,在升級之前也很好。它使用 Hermes,但沒有使用新的 Fabric 架構。
在構建 APK 然后查看其內容時,我們可以看到捆綁包沒有被復制。但它正確構建在中間工件中:
$ ./gradlew assembleRelease
…
BUILD SUCCESSFUL in 45s
1050 actionable tasks: 14 executed, 1036 up-to-date
$ unzip -l app/build/outputs/apk/release/app-arm64-v8a-release.apk | grep bundle
<nothing>
$ ls -l app/build/outputs/apk/release/app-arm64-v8a-release.apk
-rw-r--r-- 1 renchap staff 15618010 Apr 12 21:03 app/build/outputs/apk/release/app-arm64-v8a-release.apk
$ find . -name "index.android.bundle"
./app/build/generated/assets/react/release/index.android.bundle
./app/build/intermediates/merged_assets/release/out/index.android.bundle
./app/build/intermediates/merged_assets/release/mergeReleaseAssets/out/index.android.bundle
./app/build/intermediates/assets/release/index.android.bundle
$ ls -lh ./app/build/intermediates/assets/release/index.android.bundle
-rw-r--r-- 1 renchap staff 11M Apr 12 19:48 ./app/build/intermediates/assets/release/index.android.bundle
我懷疑缺少構建步驟并且它沒有復制到最終目錄,但我對 Gradle 或 RN 的構建程序不夠熟悉,無法檢查這一點。
您是否知道可能導致此問題的原因,或者在哪里解決此問題?
uj5u.com熱心網友回復:
在將構建檔案與全新的 RN 應用程式進行比較后發現它!
我有
classpath("com.android.tools.build:gradle:7.1.2")
在android/build.gradle
但是對于 RN 0.68,您需要完全依賴于 7.0.4 版本,否則 JS 包不會復制到最終的 APK 中。
發布 APK 在切換到后現在可以作業了
classpath("com.android.tools.build:gradle:7.0.4")
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/459810.html
上一篇:使用gradle4.2.2和sdk版本31,fluttergradle構建失敗
下一篇:指定為非空的引數為空:方法com.android.build.gradle.internal.dsl.BaseAppModuleExtension.compileSdkVersion
