升级Target SDK 34与Gradle7.4.2后index.android.bundle未自动生成问题
问题:升级Gradle与Target SDK后Release构建未自动生成index.android.bundle
环境配置
项目根目录build.gradle关键内容
buildscript { apply from: "../node_modules/@dynatrace/react-native-plugin/files/plugin.gradle", to: buildscript ext { buildToolsVersion = "34.0.0" minSdkVersion = 29 compileSdkVersion = 34 targetSdkVersion = 34 } repositories { google() jcenter() } dependencies { classpath('com.google.gms:google-services:4.3.15') classpath('com.android.tools.build:gradle:7.4.2') // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } }
gradle-wrapper.properties内容
distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists
问题现象
- Debug模式运行正常
- Release构建时,
android/app/src/main/assets/index.android.bundle未自动生成,导致APK无法正常运行 - 手动执行
npx react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle可解决,但此前使用Gradle 7.0.4时可自动生成
根本原因分析
- Gradle 7.0+任务依赖逻辑变更:Gradle 7.0之后对任务依赖链做了更严格的校验,React Native默认的
bundleReleaseJsAndAssets任务与assembleRelease的关联逻辑可能因版本升级被破坏,导致bundle生成任务未被自动触发。 - Target SDK 34与Build Tools兼容性问题:Build Tools 34.0.0随Target SDK 34升级后,资源打包的时机、逻辑有调整,React Native自动生成bundle的流程依赖旧版资源处理逻辑,新版本下触发条件不满足。
- 第三方插件干扰:配置的
@dynatrace/react-native-plugin脚本在Gradle 7.4.2环境下可能修改了构建任务流程,覆盖或中断了React Native默认的bundle生成触发逻辑,旧版Gradle下的插件兼容逻辑不再适用。 - Gradle Wrapper与AGP版本不匹配:使用的Gradle Wrapper为7.5,而Android Gradle Plugin(AGP)是7.4.2,版本细微差异可能导致任务调度出现兼容性问题,影响bundle生成任务的自动执行。
内容的提问来源于stack exchange,提问作者user2169182
相关产品推荐
相关产品推荐

