Android Studio中的Gradle构建系统可以使你很容易地将外部的二进制文件或者其他的库或模块作为依赖项(也就是dependencies)包含到构建中(也就是build的过程中),这些依赖项既可以在本地,也可以在远程的仓库中
Dependency 的种类
比如以下这段代码截取自某build.gradle文件,显然这里有三种依赖类型:
apply plugin: 'com.android.application'
android { ... }
dependencies {
// Dependency on a local library module
implementation project(":mylibrary")
// Dependency on local binaries
implementation fileTree(dir: 'libs', include: ['*.jar'])
// Dependency on a remote binary
implementation 'com.example.android:app-magic:12.3'
}
分别看一下这三种类型
- Local library module dependency
这句代码声明了一个名为mylibrary的Android库模块,这个库的名字必须和你在setting.gradle文件里所声明的名字相同
当你build的时候,系统会帮你把这个库模块一起编译了,然后把编译的结果放到APK里
- Local binary dependency
Gradle系统通过build.gradle文件来读取路径,那么这里的第二句话是什么意思呢?
其实就是去读取libs路径下的所有的以.jar为后缀的文件
- Remote binary dependency
Dependency 的配置
如果需要一个库作为你的依赖项,可以有几种不同的方式:
- implementation
这个依赖只在运行的时候对其他的模块可用,和compile相比(compile是以前用的),用implementation会对build的时间方面有较大的改进,这是因为implementation指令减少了需要重新编译的module的数量
- api
用这个指令,其他所有的模块在runtime和compile的时候都可以对其进行调用
- ...
还有些别的,不写了,需要看的点击下面这个链接,找到里面的表格
https://developer.android.com/studio/build/dependencies#dependency_configurations
查看Dependency 树
有些直接的dependencies可能和自己有依赖,这些dependencies 关系被称为传递依赖关系
右边弹出界面
双击一下,系统就会执行你刚刚选择的task
结果如下图所示:
修复dependency resolution错误
当你向你的应用中添加很多依赖关系时(dependencies),这些直接的或间接的依赖关系之间可能会产生冲突,这些冲突可能会导致runtime error
为了找到究竟是哪条dependence引起了错误,需要用到上面提到的dependency树工具
打开那个界面,然后找找有没有出现超过1次的依赖
当然如果要自己花时间一个个找肯定是不现实的,特别是当项目的依赖很多的时候,那么可以进行如下操作
把报错的那个类填进去,进行搜索即可
当然在某些情况下,这样的做法也有可能起不到作用