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

升级Cordova Android环境后Gradle编译失败,涉及版本冲突与Google Services插件版本重置问题

升级Cordova Android环境后Gradle编译失败,涉及版本冲突与Google Services插件版本重置问题

我完全理解你现在的困惑——升级Cordova环境后遇到的Gradle版本冲突和插件版本重置问题确实很棘手,我来一步步帮你拆解和解决这些问题:

一、Gradle版本冲突的原因:全局安装 vs Cordova项目自带Wrapper

你提到自己装了Gradle 7.6.5,但错误里却出现了Gradle 8.7的相关提示,这是因为Cordova-Android 13.0会自动为项目指定使用的Gradle版本,而且它用的是项目内的Gradle Wrapper,完全不会依赖你全局安装的Gradle版本。

你在cdv-gradle-config.json里看到的"GRADLE_VERSION":"8.7"就是Cordova自动生成的核心配置,这个文件每次执行cordova build或cordova prepare时都会重新生成,所以项目实际运行的是Gradle 8.7,和你全局的7.6.5无关。错误里的Deprecated提示也是针对Gradle 8.7的特性,不用纠结全局版本的问题。

二、解决mapDebugSourceSetPaths任务失败的问题

这个错误的核心是旧版本的Google Services插件和Cordova-Android 13.0搭配的AGP(Android Gradle Plugin)8.3.0不兼容。你修改cdv-gradle-config.json里的插件版本后被重置,是因为这个文件是自动生成的,手动修改会被覆盖,得用正确的方式来修改版本:

方法1:升级冲突的插件(优先推荐)

你项目里的cordova-plugin-firebasex硬编码了com.google.gms:google-services:4.3.10,这个版本太老,和AGP 8.x不兼容。建议直接升级这个插件到最新版本,新版插件通常会适配更高版本的Google Services和AGP,能直接解决版本冲突问题。

执行升级命令:

cordova plugin remove cordova-plugin-firebasex
cordova plugin add cordova-plugin-firebasex@latest

方法2:用Cordova钩子自动修改版本(如果暂时无法升级插件)

如果因为某些原因不能升级插件,可以通过Cordova的钩子脚本,在每次构建前自动修改相关文件里的Google Services版本号,避免手动修改被覆盖:

  1. 在项目根目录创建hooks文件夹,然后新建一个update-google-services-version.js脚本,内容如下:
const fs = require('fs');
const path = require('path');

module.exports = function(context) {
    // 修改app/build.gradle中的Google Services版本
    const appBuildPath = path.join(context.opts.projectRoot, 'platforms/android/app/build.gradle');
    let appBuildContent = fs.readFileSync(appBuildPath, 'utf8');
    // 替换自动生成的版本号为4.4.2
    appBuildContent = appBuildContent.replace(/com.google.gms:google-services:\d+\.\d+\.\d+/, 'com.google.gms:google-services:4.4.2');
    fs.writeFileSync(appBuildPath, appBuildContent);

    // 修改cordova-plugin-firebasex中的硬编码版本
    const firebasexBuildPath = path.join(context.opts.projectRoot, 'platforms/android/cordova-plugin-firebasex/myapp-build.gradle');
    if (fs.existsSync(firebasexBuildPath)) {
        let firebasexContent = fs.readFileSync(firebasexBuildPath, 'utf8');
        firebasexContent = firebasexContent.replace(/com.google.gms:google-services:4\.3\.10/, 'com.google.gms:google-services:4.4.2');
        fs.writeFileSync(firebasexBuildPath, firebasexContent);
    }
};
  1. 在项目的config.xml里注册这个钩子,让它在每次prepare后执行:
<hook type="after_prepare" src="hooks/update-google-services-version.js" />

之后再执行cordova build android,脚本会自动帮你修改版本号,避免被Cordova覆盖。

三、额外的检查点

  • 确认项目里其他插件有没有硬编码旧版本的Google Services或Gradle配置,这些都可能引发类似的冲突;
  • 如果你之前手动修改过platforms/android下的任何文件,建议先删除platforms和plugins文件夹,重新执行cordova prepare,确保环境干净。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.08 07:23:05