React Native run-android构建失败 react-native-camera依赖冲突报错
故障根因
构建日志里的npm参数废弃警告、Gradle 8.0兼容提示、jetifier迁移提示、Gradle Daemon启动提示均为正常流程输出,不会直接导致构建失败。
核心故障触发点是react-native-camera依赖的变体解析冲突:该库从特定版本开始拆分了通用版、MLKit版两套构建变体,未配置默认变体匹配规则,首次构建时Gradle临时缓存了随机选中的变体可以正常完成打包,第二次构建时缓存校验触发重新解析,同时匹配到generalDebugRuntimeElements、mlkitDebugRuntimeElements两个符合debug运行时属性的变体,无法自动选择导致依赖解析中断,抛出:app:mergeDebugAssets任务依赖解析失败的错误。
附带的AGP版本不一致警告会加剧变体解析的异常概率,修复时可以同步处理。
修复步骤
1. 强制指定react-native-camera的变体匹配规则(优先操作,90%以上场景可直接解决问题)
打开项目路径下的android/app/build.gradle文件,在android配置块内补充变体匹配规则:
android { // 此处保留你原有的compileSdkVersion、defaultConfig等所有原有配置 buildTypes { debug { // 保留你原有的debug构建配置,比如signingConfig等 matchingFallbacks = ['generalDebug'] } release { // 保留你原有的release构建配置 matchingFallbacks = ['generalRelease'] } } }
如果你项目配置了多产品风味(productFlavors),需要在每个风味的配置块内同步添加对应的matchingFallbacks规则,匹配对应风味的general版本变体。
2. 清理缓存后重新构建
配置修改完成后,不要直接执行启动命令,先全量清理构建缓存避免旧缓存干扰:
# 进入android目录清理Gradle构建缓存 cd android ./gradlew clean # 回到项目根目录 cd .. # 重置Metro打包服务缓存 npx react-native start --reset-cache
新开一个终端窗口,在项目根目录执行启动命令验证:
npx react-native run-android
连续重复执行2-3次启动命令,确认不会再出现隔次构建失败的问题即可。
3. 同步修复AGP版本不一致警告(可选,用于消除潜在兼容问题)
如果完成上述步骤后仍偶发构建异常,需要统一全项目的Android Gradle Plugin版本:
- 打开
android/build.gradle文件,记录主项目使用的AGP版本(即dependencies块内com.android.tools.build:gradle对应的版本号) - 打开
node_modules/react-native-camera/android/build.gradle文件,将里面的AGP版本修改为和主项目完全一致的版本 - 检查其他带原生代码的第三方依赖的AGP版本,全部对齐主项目版本,消除included builds的AGP版本检测警告。
其他无关提示处理说明
以下提示不影响本次故障修复,可后续按需处理:
- npm全局参数废弃警告:将npm全局安装/配置命令中的
-g/--global/--local参数替换为--location=global即可消除 - Gradle 8.0兼容警告:属于版本升级预告,当前使用的Gradle版本下不影响正常构建,后续计划升级Gradle到8.0+时再执行
./gradlew build --warning-mode all定位具体废弃项逐一修复即可
内容的提问来源于stack exchange,提问作者Bilal Asghar

