Android Studio项目gradle下载慢问题
创始人
2024-12-09 02:04:01
0

一、问题起因

通过Android studio新建了一个Android项目,同步gradle居然花费了30多分钟。忍不了,真的忍不了。

二、原因分析

1. 通过观察日志耗时情况

发现耗时主要集中在两方面:gradle下载和gradle依赖下载,如下图所示,gradle下载耗时24分钟,gradle依赖下载耗时7分钟

PS:源耗时日志没了,上图是小编为了写博客后补的,可真是煎熬的30分钟啊,如此敬业,这你不得点个赞?

2. 查看gradle-wrapper.properties

文件路径gradle/wrapper/gradle-wrapper.properties

  • gradle-wrapper.properties是Gradle Wrapper的配置文件,用于指定Gradle版本。通过配置这个文件,可以确保项目在不同的环境中使用相同版本的Gradle进行构建。
  • Gradle Wrapper的目的是解决不同机器上Gradle版本不一致的问题,通过配置gradle-wrapper.properties文件,项目可以在任何环境下自动下载并使用正确的Gradle版本进行构建。

查看后发现,默认使用的地址为https://services.gradle.org/distributions/gradle-8.2-bin.zip。

distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists 

提示:可能你的gradle版本与小编不同,但并无影响

通过ip查询工具,可发现services.gradle.org域名所在地理位置为美国。呵呵!国外源,慢得理所应当。

3. 查看settings.gradle.kts

文件路径根目录

  • settings.gradle.kts文件是Kotlin DSL格式的settings文件,它用于配置项目的模块结构。在这个文件中,你可以声明项目中包含哪些模块、这些模块之间的依赖关系,以及全局的构建逻辑。
  • 在新版本gradle中,settings.gradle.kts文件还承担了仓库配置的工作,而这也是我们关注的重点

通过Android studio新建的项目,gradle仓库配置默认如下

pluginManagement {  repositories {      google()      mavenCentral()      gradlePluginPortal()  } } dependencyResolutionManagement {  repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)  repositories {      google()      mavenCentral()  } }  rootProject.name = "Demo" include(":app") 

通过ip查询工具,分别查询地理位置,默认源同样均在国外

配置地址地址位置
google()https://maven.google.com/美国
mavenCentral()https://repo1.maven.org/maven2/瑞典
gradlePluginPortal()https://plugins.gradle.org/m2/美国

行吧,国外源,网络情况不理想,下载速度相对较慢,慢得有理有据。

三、解决方式

对于上述问题,常见的解决方式无非走VPN代理或通过国内镜像源加速,由于合规的VPN代理需要申请,本文主要讲解通过国内镜像源加速的方式。有合规VPN代理的观众老爷们可以撤了。

1. gradle下载慢解决方案

常见的解决方案包括:使用gradle离线下载通过gradle国内镜像源加速

个人觉得,gradle离线下载相对麻烦,不展开讲解。感兴趣的同学可自行百度gradle离线下载

对比gradle离线下载通过gradle国内镜像源相对方便些,国内知名的gradle镜像源,包含阿里云和腾讯云

  • 阿里云gradle镜像源:https://mirrors.aliyun.com/gradle
  • 腾讯云gradle镜像源:https://mirrors.cloud.tencent.com/gradle/

可惜的是,阿里云gradle镜像源截至2019年就不再更新,gradle版本也停留在了gradle-5.6.2,若你使用的是gradle-5.6.2以上版本,更推荐你使用腾讯云gradle镜像源,使用方式如下:

替换https\://services.gradle.org/distributionshttps\://mirrors.cloud.tencent.com/gradle

distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-8.2-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists 

2. gradle依赖下载慢解决方案

为加速gradle依赖下载,我们可以通过国内镜像源加速,这里强烈安利 阿里云镜像源

源库阿里云的镜像地址
google()https://maven.aliyun.com/repository/google
mavenCentral()https://maven.aliyun.com/repository/central
gradlePluginPortal()https://maven.aliyun.com/repository/gradle-plugin

提示:上面仅列出我们使用到的镜像源,全量镜像源请见附录1:阿里云全量镜像源。

使用方式如下:

修改settings.gradle.kts,将对应阿里云镜像仓库添加到google()mavenCentral()上方,优先从国内源下载,如果没有再去原网站下。

pluginManagement {     repositories {         // 使用阿里镜像源         maven(url = "https://maven.aliyun.com/repository/google")         maven(url = "https://maven.aliyun.com/repository/central")         maven(url = "https://maven.aliyun.com/repository/gradle-plugin")         google()         mavenCentral()         gradlePluginPortal()     } } dependencyResolutionManagement {     repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)     repositories {         // 使用阿里镜像源         maven(url = "https://maven.aliyun.com/repository/google")         maven(url = "https://maven.aliyun.com/repository/central")         google()         mavenCentral()     } }  rootProject.name = "Demo" include(":app") 

建议:请不要随意改变仓库位置。各个仓库的列出顺序决定了 Gradle 在这些仓库中搜索各个项目依赖项的顺序。例如,如果从仓库 A 和 B 均可获得某个依赖项,而您先列出了仓库 A,则 Gradle 会从仓库 A 下载该依赖项。

提示:若你使用的groovy,非kotlin,请转附录2:gradle依赖下载加速-groovy版

四、总结(省流版)

1. gradle下载慢解决方案

替换https\://services.gradle.org/distributionshttps\://mirrors.cloud.tencent.com/gradle

distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-8.2-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists 

2. gradle依赖下载慢解决方案

修改settings.gradle.kts,将对应阿里云镜像仓库添加到google()mavenCentral()上方,优先从国内源下载,如果没有再去原网站下。

pluginManagement {  repositories {      // 使用阿里镜像源      maven(url = "https://maven.aliyun.com/repository/google")      maven(url = "https://maven.aliyun.com/repository/central")      maven(url = "https://maven.aliyun.com/repository/gradle-plugin")      google()      mavenCentral()      gradlePluginPortal()  } } dependencyResolutionManagement {  repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)  repositories {      // 使用阿里镜像源      maven(url = "https://maven.aliyun.com/repository/google")      maven(url = "https://maven.aliyun.com/repository/central")      google()      mavenCentral()  } }  rootProject.name = "Demo" include(":app") 

建议:请不要随意改变仓库位置。各个仓库的列出顺序决定了 Gradle 在这些仓库中搜索各个项目依赖项的顺序。例如,如果从仓库 A 和 B 均可获得某个依赖项,而您先列出了仓库 A,则 Gradle 会从仓库 A 下载该依赖项。

提示:若你使用的groovy,非kotlin,请转附录2:gradle依赖下载加速-groovy版

附录

附录1:阿里云全量镜像源

阿里云常见镜像库:https://developer.aliyun.com/mvn/guide

仓库名称阿里云仓库地址阿里云仓库地址(老版)源地址
centralhttps://maven.aliyun.com/repository/centralhttps://maven.aliyun.com/nexus/content/repositories/centralhttps://repo1.maven.org/maven2/
jcenterhttps://maven.aliyun.com/repository/publichttps://maven.aliyun.com/nexus/content/repositories/jcenterhttp://jcenter.bintray.com/
publichttps://maven.aliyun.com/repository/publichttps://maven.aliyun.com/nexus/content/groups/publiccentral仓和jcenter仓的聚合仓
googlehttps://maven.aliyun.com/repository/googlehttps://maven.aliyun.com/nexus/content/repositories/googlehttps://maven.google.com/
gradle-pluginhttps://maven.aliyun.com/repository/gradle-pluginhttps://maven.aliyun.com/nexus/content/repositories/gradle-pluginhttps://plugins.gradle.org/m2/
springhttps://maven.aliyun.com/repository/springhttps://maven.aliyun.com/nexus/content/repositories/springhttp://repo.spring.io/libs-milestone/
spring-pluginhttps://maven.aliyun.com/repository/spring-pluginhttps://maven.aliyun.com/nexus/content/repositories/spring-pluginhttp://repo.spring.io/plugins-release/
grails-corehttps://maven.aliyun.com/repository/grails-corehttps://maven.aliyun.com/nexus/content/repositories/grails-corehttps://repo.grails.org/grails/core
apache snapshotshttps://maven.aliyun.com/repository/apache-snapshotshttps://maven.aliyun.com/nexus/content/repositories/apache-snapshotshttps://repository.apache.org/snapshots/

提示:由于阿里云官网更新,大家查到的数据可能比上面少。大部分库未在常见镜像库中展示,如google()库,全量仓库请通过https://developer.aliyun.com/mvn/view查看

附录2:gradle依赖下载加速-groovy版

修改settings.gradle,将对应阿里云镜像仓库添加到google()mavenCentral()上方,优先从国内源下载,如果没有再去原网站下。

pluginManagement {     repositories {         // 使用阿里镜像源         maven { url 'https://maven.aliyun.com/repository/google' }         maven { url 'https://maven.aliyun.com/repository/central' }         maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }         google()         mavenCentral()         gradlePluginPortal()     } } dependencyResolutionManagement {     repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)     repositories {         // 使用阿里镜像源         maven { url 'https://maven.aliyun.com/repository/google' }         maven { url 'https://maven.aliyun.com/repository/central' }         google()         mavenCentral()     } }  rootProject.name = "Demo" include ':app' 

建议:请不要随意改变仓库位置。各个仓库的列出顺序决定了 Gradle 在这些仓库中搜索各个项目依赖项的顺序。例如,如果从仓库 A 和 B 均可获得某个依赖项,而您先列出了仓库 A,则 Gradle 会从仓库 A 下载该依赖项。

参考文档

添加 build 依赖项 | Android Studio | Android Developers (google.cn)

阿里云仓库服务 (aliyun.com)

阿里巴巴开源镜像站

Android Studio 配置国内镜像源、HTTP代理

相关内容

热门资讯

黑科技安装(AAPoKer辅助... 黑科技安装(AAPoKer辅助器)外挂透明挂辅助工具(透视)真是有挂(有挂分析)-哔哩哔哩;AAPo...
黑科技辅助!德州ai辅助工具购... 黑科技辅助!德州ai辅助工具购买(透视)总是是有挂(有挂分析)-哔哩哔哩;1、不需要AI权限,帮助你...
黑科技辅助!pokerworl... 黑科技辅助!pokerworld有挂(透视)软件透明挂ai辅助挂(素来是有挂)-哔哩哔哩;超受欢迎的...
黑科技辅助(WEpoke)外挂... 黑科技辅助(WEpoke)外挂透明挂辅助插件(透视)安装教程(2022已更新)(哔哩哔哩);1、完成...
黑科技免费(德扑ai购买)外挂... 您好:德扑ai购买这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌特别...
黑科技辅助!wepoke开发者... 黑科技辅助!wepoke开发者(透视)一贯存在有挂(有挂技巧)-哔哩哔哩;1、实时wepoke开发者...
黑科技辅助!aapoker有内... 您好,aapoker有内部好嘛这款游戏可以开挂的,确实是有挂的,需要了解加微【136704302】很...
黑科技辅助(德州扑克)外挂透明... 黑科技辅助(德州扑克)外挂透明挂辅助插件(透视)爆料教程(2026已更新)(哔哩哔哩);德州扑克软件...
黑科技辅助!微扑克有脚本(透视... 黑科技辅助!微扑克有脚本(透视)软件透明挂ai辅助ai(切实有挂)-哔哩哔哩;亲真的是有正版授权,小...
黑科技辅助!wpk智能ai机器... 黑科技辅助!wpk智能ai机器人教程(透视)原先是有挂(有挂秘籍)-哔哩哔哩;wpk智能ai机器人教...