IntelliJ使用Gradle解析依赖时出现SocketTimeoutException求助
Gradle依赖解析SocketTimeoutException问题排查方案
问题核心
开放网络环境下,IntelliJ/Android Studio使用Gradle 7.4.2拉取google()仓库依赖时触发SocketTimeoutException,浏览器可正常下载对应文件,已尝试增加Gradle超时时间但无效。
排查与解决方案
1. 细化Gradle网络超时配置
在项目根目录的gradle.properties中添加全面网络参数,确保无残留代理配置:
# 延长连接和读取超时至5分钟 org.gradle.internal.http.connectionTimeout=300000 org.gradle.internal.http.socketTimeout=300000 # 明确禁用代理 systemProp.http.proxyHost= systemProp.http.proxyPort= systemProp.https.proxyHost= systemProp.https.proxyPort=
2. 切换Gradle HTTP客户端为OkHttp
Gradle默认客户端可能存在网络适配问题,切换到OkHttp可改善连接稳定性:
在gradle.properties中添加:
org.gradle.jvmargs=-Dorg.gradle.internal.http.client=okhttp
3. 手动导入依赖到本地仓库
利用浏览器可下载的特性,手动获取依赖文件并放入本地Maven仓库:
- 下载对应pom文件:
com.android.tools.build:gradle:7.1.2的pom文件org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.10的pom文件
- 将文件放入本地仓库对应路径(如
~/.m2/repository/com/android/tools/build/gradle/7.1.2/),同步项目即可读取本地文件。
4. 检查IDE网络设置
确认IDE无隐藏代理配置:
- 打开
File > Settings > Appearance & Behavior > System Settings > HTTP Proxy - 选择「No proxy」,确保代理地址为空,取消不必要的自动代理检测
5. 清理Gradle缓存并重启Daemon
执行以下命令清理缓存并重启Gradle后台进程:
./gradlew cleanBuildCache --stop
手动删除~/.gradle/caches目录下的所有文件后,重新同步项目。
6. 排查网络DNS与路由
- 切换DNS服务器至公共DNS(如8.8.8.8),刷新本地DNS缓存
- 使用
ping dl.google.com测试连通性,traceroute dl.google.com检查路由是否存在异常节点
可能原因分析
- Gradle默认HTTP客户端的SSL握手或连接策略与浏览器存在差异,导致特定网络环境下超时
- 本地Gradle缓存损坏或残留代理配置干扰连接
- DNS解析异常导致Gradle无法正确定位仓库服务器
内容的提问来源于stack exchange,提问作者tyro
相关产品推荐
相关产品推荐

