- Gradle支持递归依赖(transitive dependencies)
依赖源
- 基本添加依赖的方法,
repositories
块中添加依赖源。 添加依赖
1
2
3dependencies {
compile ‘com.google.code.gson:gson:2.3’
}唯一标识依赖的三要素:组(group)、名称(name)、版本(version)
- 添加依赖的完整写法
1
2
3dependencies {
compile group: ‘com.google.code.gson’, name: ‘gson’, version: ‘2.3’
}
- Gradle 内置依赖源:
mavenCentral()
,jcenter()
,mavenLocal()
- Gradle在其执行/Execution步骤(第三个步骤)下载依赖。
- JCenter是MavenCentral的超集,并且支持https。
- Maven仓库缓存位置
~/.m2
私有源用法。
1
2
3
4
5
6
7
8
9
10
11repositories {
maven {
url "http://repo.acmecorp.com/maven2"
// 对于需要验证的服务器
// 账号和密码放到单独的properties文件中已确保安全。
credentials {
username 'user'
password 'password'
}
}
}本地源,即把url换成本地路径,支持相对路径和绝对路径。
1
2
3
4
5repositories {
maven {
url "../repo"
}
}Android SDK中的support library,就存在于
ANDROID_SDK/extras/android/m2repository
目录下。- 将普通目录作为依赖源的方法。
1
2
3
4
5repositories {
flatDir {
dirs 'aars'
}
}
本地依赖
依赖本地JAR文件
1
2
3dependencies {
compile files('libs/domoarigato.jar')
}从目录添加依赖
1
2
3dependencies {
compile fileTree('libs')
}添加过滤器(Android默认)
1
2
3
4dependencies {
// 参数顺序是无关的
compile fileTree(dirs 'libs', include: '[*.jar]')
}依赖Native库。默认Android插件会依赖
jniLibs
目录。可以修改成libs目录。方法一:
1
2
3
4
5sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}方法二:
1
2
3sourceSets.main {
jniLIbs.srcDir 'src/main/libs'
}
库
- Android库插件
apply plugin ‘com.android.library’
- 添加库依赖的方式。
- 将库源码添加到项目中,作为Module。
- 生成aar文件。
- Module依赖。
compile project(‘:library’)
以上添加依赖的方式,是将
library
这个Module的输出,添加到依赖Project的classpath。 - Android库插件在build之后,会输出.aar文件到
build/output/aar/
目录。 - 使用aar文件。
1
2
3
4
5
6
7
8
9
10
11
12
13// 顶层buld.gradle
repositories {
flatDir {
dirs 'aars'
}
}
// 项目build.gradle
dependencies {
// 依赖以aar作为后缀的libraryname名字的library
// (从顶层配置的目录中查找。)
compile (name:'libraryname', ext:'aar')
}
依赖概念
- 依赖配置(Configurations):有些依赖,比如SDK,是由运行应用的设备提供的,比如Android SDK,或者其他SDK。这些依赖并不需要编译打包进Apk文件,只是将其添加到classpath中。而其他依赖比如库,需要打包进Apk文件,这些工作由依赖配置完成。
- Gradle会将依赖通过配置名称分组到文件集合。Android标准配置有:
- compile:将所有依赖添加到classpath,并编译到生成的Apk中。
- apk:只添加到Apk包中,但是不会添加到classpath。只接受JAR依赖。
- provided:和apk配置相反,并且自身依赖也不会被打包进Apk。只接受JAR依赖。
- testCompile:测试Apk依赖。
- androidTestCompile:测试Apk依赖。
- 依赖配置支持构建变体,比如debugCompile,releaseProvided。
语义化的版本号
- 版本是依赖管理的重要方面,所有JCenter中的依赖,都假设按照语义化定义版本,依照以下格式:主要.次要.补丁。
- 版本号规范
- 主版本号升级表示API有不兼容的修改。
- 次版本号升级表示在向后兼容的前提下添加了功能。
- 补丁版本号用作bug修复。
- 使用
+
标记动态版本,将自动获取最新版本。1
2
3
4
5
6
7
8dependencies {
// 自动获取patch版本
compile 'com.android.support:support-v4:22.2.+'
// 自动获取次版本号大于2的版本
compile 'com.android.support:appcompat-v7:22.2+'
// 自动获取任何最新release版本。
compile 'com.android.support:recyclerview-v7:+'
}
其他文章