Gradle自动下载远慢于浏览器的原因及解决办法
Gradle依赖下载缓慢问题排查与解决
原因分析
- Gradle默认仓库源多为境外服务器,即便代理配置和浏览器一致,Gradle自身的下载连接策略(如连接池大小、重试机制)、对代理的兼容性,都可能导致大文件下载效率远低于浏览器
- Android Studio内置的Gradle进程受JVM参数限制,比如网络超时阈值、缓冲区设置不合理,会拖慢大文件的下载速度
- Gradle会对下载的依赖包进行哈希校验,若校验流程与下载流程并行处理不佳,也会增加整体耗时
解决办法
- 替换国内镜像仓库:修改项目根目录下的
build.gradle(Project级别),将默认仓库替换为国内镜像(如阿里云),示例代码:
buildscript { repositories { maven { url 'https://maven.aliyun.com/repository/google' } maven { url 'https://maven.aliyun.com/repository/jcenter' } maven { url 'https://maven.aliyun.com/repository/public' } } } allprojects { repositories { maven { url 'https://maven.aliyun.com/repository/google' } maven { url 'https://maven.aliyun.com/repository/jcenter' } maven { url 'https://maven.aliyun.com/repository/public' } } }
- 手动导入已下载的依赖:把浏览器下载好的
kotlin-compiler-embeddable-1.9.0.jar,按org/jetbrains/kotlin/kotlin-compiler-embeddable/1.9.0/的路径结构,放入本地Gradle仓库目录(位置见下文),同时记得下载对应的.pom文件一同放入,避免Gradle重复下载 - 调整Gradle JVM网络参数:打开Android Studio的
Settings -> Build, Execution, Deployment -> Build Tools -> Gradle,在Gradle VM options中添加参数:-Dhttp.maxConnections=10 -Dhttp.connectionTimeout=30000,提升并发连接数和超时时间 - 清理Gradle缓存后重试:删除Gradle缓存目录(见下文),重新触发项目构建,避免缓存损坏导致的异常下载
Gradle临时下载目录及本地仓库位置
- 已下载依赖的存储目录:
- Windows:
C:\Users\<你的用户名>\.gradle\caches\modules-2\files-2.1 - macOS:
/Users/<你的用户名>/.gradle/caches/modules-2/files-2.1 - Linux:
/home/<你的用户名>/.gradle/caches/modules-2/files-2.1
- Windows:
- 临时下载的文件会先存放在
.gradle/caches下的临时文件夹,校验完成后会移动到上述正式目录。
内容的提问来源于stack exchange,提问作者Miku
相关产品推荐
相关产品推荐

