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

如何防止Cordova Android中gradle.properties文件被覆盖?

Cordova Android构建时gradle.properties被覆盖的解决办法

问题背景

在Cordova 11.0.0项目中构建Android平台(依赖cordova-android: ^10.1.2),使用gradle 7.4.2时出现报错:

Unable to make field private final java.lang.String java.io.File.path accessible: module java.base does not "opens java.io" to unnamed module

该问题与Java 18兼容性有关,需在platforms/android/gradle.properties中添加对应属性修复。但使用官方推荐的before_build钩子脚本复制自定义文件后,文件仍会被默认版本覆盖。

可行解决方案

1. 切换到after_prepare钩子脚本

before_build的执行时机早于Cordova生成/覆盖平台文件的流程,改用after_prepare钩子:

  • 在项目根目录的hooks文件夹下创建after_prepare目录,放入自定义脚本,在平台资源准备完成后复制自定义gradle.properties到platforms/android/目录。此时文件不会被后续构建步骤覆盖。

2. 使用Cordova模板机制

在项目根目录创建路径res/native/android/,将自定义的gradle.properties文件放入该目录。Cordova在生成Android平台文件时,会优先使用此目录下的模板文件,而非默认版本,从根源避免覆盖问题。

3. 直接在config.xml中注入属性

无需替换整个gradle.properties,直接在项目根目录的config.xml中添加配置,让Cordova自动注入所需属性:

<platform name="android">
    <preference name="gradleProperties" value="org.gradle.jvmargs=--add-opens java.base/java.io=ALL-UNNAMED" />
</platform>

此方式无需操作平台目录下的文件,完全避免覆盖问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 07:35:28