如何解决Android项目构建时的Gradle同步致命错误
Android项目Gradle同步致命错误排查方案
问题描述
配置根项目ArchersMobile过程中发生异常,核心报错如下:
无法解析配置项
:classpath的所有依赖产物,无法解析依赖com.android.tools.analytics-library:shared:26.6.1
该依赖的引用链路:
- project : > com.android.tools.build:gradle:3.6.1 > com.android.tools.build:builder:3.6.1 > com.android.tools:sdk-common:26.6.1
- project : > com.android.tools.build:gradle:3.6.1 > com.android.tools.build:builder:3.6.1 > com.android.tools.analytics-library:tracker:26.6.1
无法拉取对应版本POM文件,抛出错误提示:Already seen doctype
根因说明
Already seen doctype是典型的响应格式不匹配错误:Gradle请求Maven仓库拉取依赖POM文件时,预期拿到XML格式的依赖描述文件,实际被网络拦截、代理异常、仓库地址错误等因素影响,拿到了带doctype声明的HTML页面(比如运营商拦截跳转页、代理登录鉴权页、内网拦截提示页),导致XML解析失败。
解决步骤
按优先级依次操作验证:
- 校验仓库配置
打开项目根目录下的build.gradle文件,确认buildscript和allprojects下的仓库配置中,google()仓库放在最前、优先级最高,避免被其他第三方仓库拦截请求,标准配置片段如下:buildscript { repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.6.1' } } allprojects { repositories { google() jcenter() } } - 清理异常缓存
关闭Android Studio后,删除本地Gradle缓存目录下的所有文件(路径为用户主目录下的.gradle/caches),重启IDE后重新触发同步。 - 排查网络配置
- 切换网络环境,关闭当前使用的代理、VPN类工具,排除网络拦截问题
- 检查项目根目录下的
gradle.properties文件,删除所有错误配置的代理参数,常见需要删除的配置项格式如下:systemProp.http.proxyHost=127.0.0.1 systemProp.http.proxyPort=7890 systemProp.https.proxyHost=127.0.0.1 systemProp.https.proxyPort=7890
- 深度日志定位
以上操作无效时,可在Gradle执行命令中追加参数获取详细日志定位根因:- 追加
--stacktrace参数获取完整异常堆栈 - 追加
--info或--debug参数获取全量运行日志 - 追加
--scan参数生成完整构建分析报告
- 追加
内容的提问来源于stack exchange,提问作者Mohamed Mellal
相关产品推荐
相关产品推荐

