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

升级至React Native 0.58后自定义Android BuildTypes失效求助

解决React Native升级后自定义构建类型releaseStaging启动崩溃问题

我之前也碰到过一模一样的情况——Gradle插件3.2.x对构建目录结构做了不少调整,你配置的jsBundleDirReleaseStaging和resourcesDirReleaseStaging路径已经不符合新版Gradle的目录规范,导致生成的index.android.bundle没有被正确打包到APK的assets目录里,这就是启动崩溃的核心原因。

下面给你几个可行的解决方案,按优先级尝试:

方案1:移除手动指定的资源路径配置

React Native的Gradle插件在适配新版Gradle时,已经能自动推导自定义构建类型的bundle和资源路径,你手动指定的旧路径反而会干扰它的工作。修改project.ext.react配置,去掉那两个路径项:

project.ext.react = [
    entryFile: "index.js",
    bundleInReleaseStaging: true,
    devDisabledInReleaseStaging: true
    // 移除jsBundleDirReleaseStaging和resourcesDirReleaseStaging这两行
]

保留bundleInReleaseStaging: true和devDisabledInReleaseStaging: true就足够了,插件会自动处理bundle的生成和打包路径。

方案2:修正路径配置适配新版Gradle

如果你确实需要手动指定路径,把路径改成新版Gradle对应的目录:

project.ext.react = [
    entryFile: "index.js",
    bundleInReleaseStaging: true,
    devDisabledInReleaseStaging: true,
    // 适配Gradle 3.2+的assets路径
    jsBundleDirReleaseStaging: "$buildDir/intermediates/assets/releaseStaging",
    // 资源目录也同步调整
    resourcesDirReleaseStaging: "$buildDir/intermediates/res/merged/releaseStaging"
]

注意:如果你的项目有productFlavors,路径里还需要加上flavor名称,比如$buildDir/intermediates/assets/releaseStaging/[yourFlavor]。

方案3:强制关联bundle生成任务

如果上面两种方法都没生效,可能是releaseStaging的构建任务没有触发bundle生成操作。可以在android/app/build.gradle末尾添加以下代码,让assemble任务依赖于bundle任务:

afterEvaluate {
    // 确保构建releaseStaging前先执行bundle生成
    assembleReleaseStaging.dependsOn bundleReleaseStagingJsAndAssets
}

这样每次执行./gradlew assembleReleaseStaging时,都会先生成bundle文件,再打包到APK里。

最后,执行构建前记得先清理一下旧的构建缓存:./gradlew clean,然后再重新构建releaseStaging包,应该就能正常启动了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 09:25:30