我们在开发 Android 应用的时候,经常需要下载一些第三方库,但是由于某些原因,很多第三方库要么下载速度慢,要么无法下载。
根本原因就是 gradle 的仓库地址无法访问了,为什么无法访问?不知道。对于这些无法访问的库,我们可以用镜像仓库的方法来解决。阿里仓库就是一个比较好的国内镜像仓库。
一般我们在项目的 build.gradle 文件添下面的代码就可以了。
repositories {
maven { url 'https://maven.aliyun.com/nexus/content/repositories/google' }
maven { url 'https://maven.aliyun.com/nexus/content/groups/public' }
maven { url 'https://maven.aliyun.com/nexus/content/repositories/jcenter' }
google()
jcenter()
}
上面的代码就会在下载第三方库的时候,优先从阿里的仓库里面找,找到了就下载,找不到(阿里仓库没同步的时候) 的时候就会去下面的 google 的库和 jcenter 库里面找。
但是,如果每个项目都改一遍不是很烦吗?通过查阅资料, gradle 生命周期中有一个初始化( Initialization ) 的过程,这个过程运行在 build script 之前,所以我们可以在这个地方做一点系统全局的设置,比如配置仓库地址。
你可以在以下几个位置实现仓库地址全局配置:
个人使用在 USER_HOME/.gradle/ 下创建 init.gradle 文件 ,配置文件init.gradle如下:
allprojects{
repositories {
def ALIYUN_REPOSITORY_URL = 'https://maven.aliyun.com/repository/central'
def ALIYUN_JCENTER_URL = 'https://maven.aliyun.com/repository/jcenter'
def ALIYUN_GOOGLE_URL = 'https://maven.aliyun.com/repository/google'
all { ArtifactRepository repo ->
if(repo instanceof MavenArtifactRepository){
def url = repo.url.toString()
if (url.startsWith('https://repo1.maven.org/maven2')) {
project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_REPOSITORY_URL."
remove repo
// repo.url = ALIYUN_REPOSITORY_URL
}
if (url.startsWith('http://jcenter.bintray.com')) {
project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_JCENTER_URL."
remove repo
// repo.url = ALIYUN_JCENTER_URL
}
if (url.startsWith('https://maven.google.com')) {
project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_GOOGLE_URL."
remove repo
// repo.url = ALIYUN_GOOGLE_URL
}
}
}
maven {
url ALIYUN_REPOSITORY_URL
url ALIYUN_JCENTER_URL
url ALIYUN_GOOGLE_URL
}
}
}
这一段代码表示的,用阿里的仓库替换 google 和 jcenter 仓库。如果不想替换,注释掉 remove repo 就好了
留言与评论(共有 0 条评论) |