Android Studio使用Gradle构建app。Gradle的使用非常灵活,其中可以设置使用多种类型的仓库,来获取应用中使用的库文件。
支持的类型有如下几种:
类型 | 说明 |
---|---|
Maven central repository | 这是Maven的中央仓库,无需配置,直接声明就可以使用。但不支持https协议访问 |
Maven JCenter repository | JCenter中央仓库,实际也是是用的maven搭建的,但相比Maven仓库更友好,通过CDN分发,并且支持https访问。 |
Maven local repository | Maven本地的仓库,可以通过本地配置文件进行配置 |
Maven repository | 常规的第三方Maven仓库,可设置访问Url |
Ivy repository | Ivy仓库,可以是本地仓库,也可以是远程仓库 |
Flat directory repository | 使用本地文件夹作为仓库 |
以下是几种仓库的使用方法:
Maven central repository
在build.gradle中配置
repositories {
mavenCentral()
}
- 1
- 2
- 3
就可以直接使用了。
Maven JCenter repository
最常用也是Android Studio默认配置:
repositories {
jcenter()
}
- 1
- 2
- 3
这时使用jcenter仓库是通过https访问的,如果想切换成http协议访问,需要修改配置:
repositories {
jcenter {
url "http://jcenter.bintray.com"
}
}
- 1
- 2
- 3
- 4
- 5
Local Maven repository
可以使用Maven本地的仓库。默认情况下,本地仓库位于USER_HOME/.m2/repository
(例如windows环境中,在C:\Users\NAME.m2.repository),同时可以通过USER_HOME/.m2/
下的settings.xml配置文件修改默认路径位置。
若使用本地仓库在build.gradle中进行如下配置:
repositories {
mavenLocal()
}
- 1
- 2
- 3
Maven repositories
第三方的配置也很简单,直接指明url即可:
repositories {
maven {
url "http://repo.mycompany.com/maven2"
}
}
- 1
- 2
- 3
- 4
- 5
Ivy repository
配置如下:
repositories {
ivy {
url "http://repo.mycompany.com/repo"
}
}
- 1
- 2
- 3
- 4
- 5
Flat directory repository
使用本地文件夹,这个也比较常用。直接在build.gradle中声明文件夹路径:
repositories {
flatDir {
dirs 'lib'
}
flatDir {
dirs 'lib1', 'lib2'
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
使用本地文件夹时,就不支持配置元数据格式的信息了(POM文件)。并且Gradle会优先使用服务器仓库中的库文件:例如同时声明了jcenter和flatDir,当flatDir中的库文件同样在jcenter中存在,gradle会优先使用jcenter的。
/**
*
* __ (__`\
* (__`\ \\`\
* `\\`\ \\ \
* `\\`\ \\ \
* `\\`\#\\ \#
* \_ ##\_ |##
* (___)(___)##
* (0) (0)`\##
* |~ ~ , \##
* | | \##
* | /\ \## __..---'''''-.._.._
* | | \ `\## _.--' _ `.
* Y | \ `##' \`\ \
* / | \ | `\ \
* /_...___| \ | `\\
* / `. | / ##
* | | | / ####
* | | | / ####
* | () () | \ | | _.-' ##
* `. .' `._. |______..| |-'|
* `------' | | | | | || |
* | | | | | || |
* | | | | | || |
* | | | | | || |
* _____ | | | |____| || |
* / `` |-`/ ` |` |
* \________\__\_______\__\
* """"""""" """""""'"""
* Don't be a fucking stupid donkey! No, this is a fucking mule!
*/