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

React Native升级API34后Release构建Gradle警告与APK崩溃求助

React Native API 34升级后Release构建APK崩溃+Gradle依赖警告解决

问题详情

将React Native应用从Android API 33升级到API 34后,模拟器Debug模式运行正常,但执行gradle assembleRelease构建的APK启动即崩溃。构建过程中出现大量警告:

Gradle检测到:app:bundleReleaseJsAndAssets任务未声明显式或隐式依赖,就使用了:react-native-sensitive-info和:react-native-share模块下多个Release任务的输出,可能导致构建结果异常,虽最终显示BUILD SUCCESSFUL,但执行优化被禁用。

当前配置信息:

android/build.gradle

buildToolsVersion = "34.0.0"
minSdkVersion = 22
compileSdkVersion = 34
targetSdkVersion = 34
ndkVersion = "22.0.7026061"
kotlinVersion = "1.6.21"

classpath("com.android.tools.build:gradle:7.2.2")

gradle-wrapper.properties

distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-all.zip

解决方案

1. 补全任务依赖关系

Gradle警告的核心是任务执行顺序混乱,导致bundleReleaseJsAndAssets提前运行,未等到第三方模块的Release产物生成。在android/app/build.gradle中添加显式依赖:

afterEvaluate {
    bundleReleaseJsAndAssets.dependsOn(
        ":react-native-sensitive-info:assembleRelease",
        ":react-native-share:assembleRelease"
    )
}

如果有多个RN第三方模块,也可以用通用写法自动收集依赖:

afterEvaluate {
    def rnModuleTasks = project.subprojects
        .findAll { it.name.startsWith("react-native-") }
        .collect { "${it.path}:assembleRelease" }
    bundleReleaseJsAndAssets.dependsOn(rnModuleTasks)
}

2. 升级第三方库到API 34适配版本

react-native-sensitive-info和react-native-share的旧版本可能存在Android 14(API34)兼容性问题:

  • 打开package.json,将这两个库的版本号更新到最新稳定版
  • 执行yarn install或npm install重新安装依赖

3. 彻底清理构建缓存

残留的旧缓存可能导致版本冲突,执行以下命令清理后重新构建:

# 清除Gradle缓存
./gradlew clean

# 清除Node依赖缓存
rm -rf node_modules package-lock.json
npm install

# 重新构建Release包
./gradlew assembleRelease

4. 检查ProGuard/R8混淆规则

API 34新增的API可能被ProGuard误删,导致运行时崩溃。在android/app/proguard-rules.pro中添加第三方库的保留规则:

# react-native-sensitive-info 保留规则
-keep class com.oblador.keychain.** { *; }
-keep class com.facebook.react.modules.storage.** { *; }

# react-native-share 保留规则
-keep class cl.json.** { *; }
-keep class com.facebook.react.modules.share.** { *; }

如果不确定问题,可暂时在buildTypes.release中关闭混淆(minifyEnabled false),测试是否是混淆导致的崩溃。

5. 查看崩溃日志定位根源

如果以上方法无效,用adb获取崩溃日志:

adb logcat *:E

启动APK后,日志会输出具体的崩溃栈信息(比如类找不到、权限拒绝等),根据日志针对性修复问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 13:47:28