Cordova Android构建失败:Gradle超时与CordovaActivity类缺失问题求助
Cordova Android构建问题排查与解决
环境信息
- Cordova Android版本:
cordova-android@14.0.1 - Java版本:17
- 手动下载Gradle版本:8.14.2
- Cordova CLI版本:12.0.0
- 操作系统:Windows 10
- Android SDK环境变量:
ANDROID_HOME=C:\Users\user\AppData\Local\Android\Sdk ANDROID_SDK_ROOT=C:\Users\user\AppData\Local\Android\Sdk
报错情况
- 执行
cordova build android时,报错:No Java files found that extend CordovaActivity - 执行
cordova clean android清理成功,但尝试下载gradle-8.13-bin.zip失败,报错:
Exception in thread "main" java.io.IOException: Downloading from https://services.gradle.org/distributions/gradle-8.13-bin.zip ....................... ........................ other errors.....
已尝试操作
- 手动下载
gradle-8.13-bin.zip - 将解压后的文件夹放置到
platforms\android\.gradle\wrapper\dists\gradle-8.13-bin\some-random-hash\目录 - 修改
gradle-wrapper.properties指向正确路径 - 重新构建,但仍尝试下载zip文件
问题解答
1. 如何强制Cordova使用手动解压的Gradle版本,避免下载?
有两种稳定方案:
- 全局配置法
新增系统环境变量GRADLE_HOME,值为你手动下载的Gradle 8.14.2根目录(如C:\gradle-8.14.2),再将%GRADLE_HOME%\bin添加到PATH变量中。Cordova会优先调用全局Gradle,跳过Wrapper下载流程。 - 平台配置锁死法
- 打开
platforms/android/gradle/wrapper/gradle-wrapper.properties,将distributionUrl改为本地Gradle包路径,格式为file:///C:/gradle-8.14.2-all.zip(Windows路径需用三个斜杠开头)。 - 删除
platforms/android/.gradle/wrapper/dists下所有缓存目录,清除旧下载记录。 - 在项目根目录
build.gradle中添加以下配置,强制锁定Gradle版本:
- 打开
task wrapper(type: Wrapper) { gradleVersion = '8.14.2' distributionUrl = "file:///C:/gradle-8.14.2-all.zip" }
2. No Java files found that extend CordovaActivity是否与配置错误或Gradle版本不匹配有关?
该错误和Gradle版本不匹配无关,主要原因包括:
- Cordova Android平台自动生成逻辑异常,导致
MainActivity.java丢失或未正确生成。检查platforms/android/app/src/main/java/[你的包名]/目录,正常文件应包含继承CordovaActivity的类。 config.xml中的包名配置错误,导致Java文件生成路径不正确。- 第三方插件破坏了平台文件,或手动修改过平台目录下的Java文件。
解决方法:移除并重新添加Android平台
cordova platform remove android cordova platform add android@14.0.1
3. 如何确保cordova clean android && cordova build android能顺利使用预下载的Gradle?
按以下步骤操作:
- 先通过问题1的任意一种方式完成Gradle配置。
- 执行清理前,删除
platforms/android/.gradle目录,彻底清除旧缓存。 - 打开命令提示符,执行
gradle -v确认全局Gradle版本为8.14.2,确保环境变量生效。 - 最后执行
cordova clean android && cordova build android,此时Cordova会直接调用指定的Gradle版本,不会触发下载。
内容的提问来源于stack exchange,提问作者Ab-Sadiq
相关产品推荐
相关产品推荐

