赞
踩
通过Android studio新建了一个Android项目,同步gradle居然花费了30多分钟。忍不了,真的忍不了。
发现耗时主要集中在两方面:gradle
下载和gradle依赖
下载,如下图所示,gradle
下载耗时24分钟,gradle依赖
下载耗时7分钟
PS:源耗时日志没了,上图是小编为了写博客后补的,可真是煎熬的30分钟啊,如此敬业,这你不得点个赞?
gradle-wrapper.properties
文件路径gradle/wrapper/gradle-wrapper.properties
查看后发现,默认使用的地址为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
域名所在地理位置为美国。呵呵!国外源,慢得理所应当。
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代理的观众老爷们可以撤了。
常见的解决方案包括:使用gradle离线下载
或 通过gradle国内镜像源加速
个人觉得,gradle离线下载
相对麻烦,不展开讲解。感兴趣的同学可自行百度gradle离线下载
对比gradle离线下载
,通过gradle国内镜像源
相对方便些,国内知名的gradle镜像源,包含阿里云和腾讯云
可惜的是,阿里云gradle镜像源截至2019年就不再更新,gradle版本也停留在了gradle-5.6.2,若你使用的是gradle-5.6.2以上版本,更推荐你使用腾讯云gradle镜像源,使用方式如下:
替换https\://services.gradle.org/distributions
为https\://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
为加速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版
替换https\://services.gradle.org/distributions
为https\://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
修改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版
阿里云常见镜像库:https://developer.aliyun.com/mvn/guide
仓库名称 | 阿里云仓库地址 | 阿里云仓库地址(老版) | 源地址 |
---|---|---|---|
central | https://maven.aliyun.com/repository/central | https://maven.aliyun.com/nexus/content/repositories/central | https://repo1.maven.org/maven2/ |
jcenter | https://maven.aliyun.com/repository/public | https://maven.aliyun.com/nexus/content/repositories/jcenter | http://jcenter.bintray.com/ |
public | https://maven.aliyun.com/repository/public | https://maven.aliyun.com/nexus/content/groups/public | central仓和jcenter仓的聚合仓 |
https://maven.aliyun.com/repository/google | https://maven.aliyun.com/nexus/content/repositories/google | https://maven.google.com/ | |
gradle-plugin | https://maven.aliyun.com/repository/gradle-plugin | https://maven.aliyun.com/nexus/content/repositories/gradle-plugin | https://plugins.gradle.org/m2/ |
spring | https://maven.aliyun.com/repository/spring | https://maven.aliyun.com/nexus/content/repositories/spring | http://repo.spring.io/libs-milestone/ |
spring-plugin | https://maven.aliyun.com/repository/spring-plugin | https://maven.aliyun.com/nexus/content/repositories/spring-plugin | http://repo.spring.io/plugins-release/ |
grails-core | https://maven.aliyun.com/repository/grails-core | https://maven.aliyun.com/nexus/content/repositories/grails-core | https://repo.grails.org/grails/core |
apache snapshots | https://maven.aliyun.com/repository/apache-snapshots | https://maven.aliyun.com/nexus/content/repositories/apache-snapshots | https://repository.apache.org/snapshots/ |
提示:由于阿里云官网更新,大家查到的数据可能比上面少。大部分库未在常见镜像库中展示,如google()库,全量仓库请通过https://developer.aliyun.com/mvn/view查看
修改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)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。