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

Cordova Android项目修改cdv-gradle-config.json配置后命令行运行恢复默认的解决方案咨询

解决Cordova构建时Gradle配置被重置的问题

我完全理解你的困扰——每次用cordova run android命令时,手动修改的cdv-gradle-config.json和gradle-wrapper.properties总会被重置回默认值,这是因为Cordova的构建流程会自动重新生成这些平台配置文件,覆盖你的手动修改。下面是几种靠谱的解决方案,按推荐优先级排序:

1. 通过config.xml配置(官方推荐)

这是最稳妥的方式,Cordova官方支持通过config.xml的偏好设置来定义这些Gradle相关参数,构建时会自动读取这些值生成配置文件,不会被覆盖。

在项目根目录的config.xml中,找到<platform name="android">节点,添加以下preference配置:

<platform name="android">
    <!-- 设置Android Gradle Plugin(AGP)版本 -->
    <preference name="AndroidGradlePluginVersion" value="7.0.0" />
    <!-- 设置Gradle分发版本 -->
    <preference name="GradleVersion" value="7.4" />
    <!-- 其他你需要自定义的配置也可以在这里设置 -->
    <preference name="MinSdkVersion" value="22" />
    <preference name="TargetSdkVersion" value="30" />
    <preference name="KotlinVersion" value="1.6.10" />
</platform>

添加完成后,执行cordova clean && cordova run android,Cordova会自动根据这些偏好生成正确的cdv-gradle-config.json和gradle-wrapper.properties。

2. 使用Cordova构建钩子自动修改配置

如果有些配置无法通过config.xml直接设置,你可以用Cordova的钩子脚本,在构建流程中自动修改目标文件。

步骤:

  1. 在项目根目录创建hooks/after_prepare文件夹(如果不存在的话);
  2. 在该文件夹下创建一个Node.js脚本,比如01_modify_gradle_config.js,内容如下:
const fs = require('fs');
const path = require('path');

module.exports = function(context) {
    // 路径指向Android平台下的cdv-gradle-config.json
    const gradleConfigPath = path.join(context.opts.projectRoot, 'platforms/android/cdv-gradle-config.json');
    let configData = JSON.parse(fs.readFileSync(gradleConfigPath, 'utf8'));
    
    // 修改AGP版本和其他需要的配置
    configData.AGP_VERSION = '7.0.0';
    configData.GRADLE_VERSION = '7.4';
    fs.writeFileSync(gradleConfigPath, JSON.stringify(configData, null, 2));

    // 修改gradle-wrapper.properties的分发URL
    const wrapperConfigPath = path.join(context.opts.projectRoot, 'platforms/android/gradle/wrapper/gradle-wrapper.properties');
    let wrapperContent = fs.readFileSync(wrapperConfigPath, 'utf8');
    wrapperContent = wrapperContent.replace(
        /distributionUrl=.*/,
        'distributionUrl=https\\://services.gradle.org/distributions/gradle-7.4-bin.zip'
    );
    fs.writeFileSync(wrapperConfigPath, wrapperContent);
};
  1. 给脚本添加可执行权限(Linux/macOS系统):
chmod +x hooks/after_prepare/01_modify_gradle_config.js

之后每次执行cordova run android或cordova prepare时,这个钩子会在prepare阶段完成后自动修改配置文件,不会被Cordova的默认流程覆盖。

3. 修改Cordova Android平台模板(不推荐)

这个方法可以修改Cordova生成Android平台时的默认模板,但缺点是后续更新Cordova Android平台时,你的修改会被覆盖,适合不需要频繁更新平台的场景。

  1. 找到本地Cordova Android平台的安装目录,比如在macOS/Linux下通常是~/.cordova/lib/npm_cache/cordova-android/[版本号]/package/templates;
  2. 修改模板中的gradle/cdv-gradle-config.json和gradle/wrapper/gradle-wrapper.properties文件,替换成你需要的默认值;
  3. 重新执行cordova platform remove android && cordova platform add android,新生成的平台就会用你修改后的默认配置。

重要注意事项

  • 确保AGP版本和Gradle版本兼容:比如AGP 7.0.x对应Gradle 7.0+,AGP 7.4对应Gradle 7.5+,不兼容的版本会直接导致构建失败;
  • 如果你之前手动修改过平台目录下的文件,建议先移除再重新添加Android平台,避免旧配置残留。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 00:52:30