Android Studio构建项目时会拉取gradle资源, 默认是使用海外镜像站, 经常连接超时。
所以使用国内的镜像站(阿里云镜像)解决Gradle下载依赖过慢的问题。
阿里云的公共仓库地址:http://maven.aliyun.com/mvn/view
1. 当前项目配置阿里云镜像
1.1 确保Android Studio未启用代理
File -> Settings -> Appearance&Behavior -> System Settings -> HTTP Proxy 中选中了 No Proxy
1.2 找到项目根目录下的 gradle.properties 文件,注释 proxy 设置(代理的地址和端口)
1.3 在Android项目的根目录下找到文件:build.gradle, 修改其中的buildscript和allprojects配置:
buildscript {
ext {
repositories = [
'https://maven.aliyun.com/repository/central',
'https://maven.aliyun.com/repository/jcenter',
'https://maven.aliyun.com/repository/public',
'https://maven.aliyun.com/repository/google',
'https://maven.aliyun.com/repository/gradle-plugin', //阿里云插件镜像
'http://repo.springsource.org/libs-milestone-local' //配置Maven仓库的地址
]
}
repositories {
rootProject.ext.repositories.each { repourl ->
maven { url repourl }
}
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.1.4' //gradle版本, 注意使用需要的版本
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
rootProject.ext.repositories.each { repourl ->
maven { url repourl }
}
google()
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
2. 全局配置(操作系统的当前用户)阿里云镜像
Gradle生命周期中有一个初始化(Initialization)的过程, 这个过程运行在build script之前, 我们可以定制全局设置
可以在以下几个位置配置仓库地址全局配置:
新建一个init.gradle文件到 USER_HOME.gradle\目录下
新建一个后缀是.gradle的文件到 USER_HOME.gradle\init.d\目录下
新建一个后缀是.gradle的文件到 GRADLE_HOME\init.d\目录下
def repoConfig = {
all { ArtifactRepository repo ->
if (repo instanceof MavenArtifactRepository) {
def url = repo.url.toString()
if (url.contains('repo1.maven.org/maven2')
|| url.contains('jcenter.bintray.com')
|| url.contains('dl.google.com/dl/android/maven2')
|| url.contains('plugins.gradle.org/m2/')) {
println "gradle init: (${repo.name}: ${repo.url}) removed"
remove repo
}
}
}
maven { url 'https://maven.aliyun.com/repository/central' }
maven { url 'https://maven.aliyun.com/repository/jcenter' }
maven { url 'https://maven.aliyun.com/repository/public' }
maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
}
allprojects {
buildscript {
repositories repoConfig
}
repositories repoConfig
}
验证是否修改成功
在 build.gradle文件内新增任务
task printRepos {
doLast {
repositories.each { repourl ->
println "repository: ${repourl.name} ('${repourl.url}')"
}
}
}
#执行 gradle -q printRepos 任务, 验证配置是否生效
$ gradle -q printRepos