You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native升级后APK启动报错:无法加载index.android.bundle

React Native 升级后APK启动报错:无法加载脚本

我通过React Native升级助手将项目从0.63.3版本升级到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 --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
    
  • 在Project build.gradle中配置:
    project.ext.react= [
      bundleInDebug: true,
      bundleInRelease: true ]
    
  • 在AndroidManifest.xml中配置:
    android:usesCleartextTraffic="true"
    tools:ignore="GoogleAppIndexingWarning"
    
  • 在Project build.gradle中配置:
    project.ext.react= [
      entryFile: "index.js",
      bundleAssetName: "index.android.bundle",
      devDisabledInAppDev: true,
      devDisabledInRelease: true ]
    
  • 参考过相关Stack Overflow解决方案

可行解决办法

  1. 修正打包命令的入口文件参数
    RN 0.60+版本默认入口文件为index.js,若你的项目已统一使用该入口,需修改打包命令的--entry-file参数,重新执行打包:

    react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
    
  2. 验证bundle是否正确打包进APK
    解压生成的APK文件,检查assets目录下是否存在index.android.bundle且文件大小正常(非空)。若不存在,执行以下步骤:

    • 清理Android构建缓存:./gradlew clean(Mac/Linux)或gradlew clean(Windows)
    • 重新执行打包命令后,构建Release APK:./gradlew assembleRelease
  3. 统一React Native构建配置
    在项目根目录的build.gradle中保持配置与实际打包逻辑一致,推荐配置:

    project.ext.react = [
        entryFile: "index.js",
        bundleAssetName: "index.android.bundle",
        bundleInRelease: true,
        bundleInDebug: false
    ]
    

    同时确认android/app/build.gradle中存在apply from: "../../node_modules/react-native/react.gradle"语句,且位置在dependencies块之前。

  4. 调整ProGuard配置(若启用)
    若Release构建启用了ProGuard,需在android/app/proguard-rules.pro中添加React Native代码保护规则:

    -keep class com.facebook.react.** { *; }
    -keep class com.facebook.soloader.** { *; }
    -dontwarn com.facebook.react.**
    

    添加后重新构建APK。

  5. 重置assets目录
    手动删除并重建assets目录,确保目录权限正常:

    rm -rf android/app/src/main/assets
    mkdir android/app/src/main/assets
    

    之后重新执行打包命令。

内容的提问来源于stack exchange,提问作者shweta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 10:25:21