React Native Android Staging构建使用Dev Bundle导致加载失败问题
解决React Native Staging构建无法加载JS Bundle的问题
针对React Native 0.70.5版本中Staging构建类型无法加载打包好的JS Bundle的问题,可尝试以下解决方案:
1. 确保Staging构建类型正确继承Release配置
在app/build.gradle的android.buildTypes块中,为Staging类型添加继承配置,确保它复用Release模式的打包逻辑:
android { buildTypes { staging { // 继承Release的所有基础配置 initWith release // 处理第三方依赖的变体匹配问题 matchingFallbacks = ['release'] // 明确设置非调试模式,避免应用尝试连接Metro服务 isDebuggable false } } }
2. 配置Staging的资源目录路径
在app/build.gradle的android.sourceSets块中,指定Staging构建的assets目录,确保打包后的Bundle能被应用正确识别:
android { sourceSets { staging { assets.srcDirs = ['src/main/assets', "$buildDir/intermediates/assets/staging"] } } }
3. 补充React Native Staging打包路径配置
在project.ext.react中添加Staging专属的Bundle输出路径,确保Gradle能正确定位打包产物:
project.ext.react = [ bundleInStaging: true, enableHermes : false, // 修改后需清理重建 devDisabledInStaging: true, // 指定Staging的Bundle输出目录 bundleStagingJsBundleDir: "$buildDir/intermediates/assets/staging", bundleStagingResourcesDir: "$buildDir/intermediates/res/merged/staging" ]
4. 手动执行Bundle打包再构建
先手动生成JS Bundle,再构建Staging版本,验证是否是自动打包环节出现问题:
# 生成Android平台的JS Bundle npx 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/ # 清理旧构建产物并重新构建Staging版本 cd android && ./gradlew clean assembleStaging
5. 检查Bundle文件是否存在
构建完成后,检查以下路径是否存在index.android.bundle文件:
android/app/src/main/assets/index.android.bundle(手动打包的目标位置)android/app/build/intermediates/assets/staging/index.android.bundle(Gradle自动打包的目标位置)
若文件不存在,说明打包命令或Gradle配置未生效,需重新核对project.ext.react中的参数设置。
内容的提问来源于stack exchange,提问作者Saied Nawaz
相关产品推荐
相关产品推荐

