在提倡分享与开源的时代,各式各样的“工具”层出不穷,免去了很多重头再来的冗余工作,我们只要利用好合适的“工具”就可以快速,便捷的实现目标功能,那么 Gradle 是如何帮助找到这些“工具”的呢?重点其实就在于怎么找到和怎么使用上
一、“工具”的种类
所谓的“工具”其实就是指第三方的库,集成的子项目和一些放在项目里面的 jar/aar 包,这些都是丰富我们主项目的“好帮手”,但是前提是要选择得当,合理运用
- 第三方的库
- 集成的子项目
- 放在项目里面的 jar/aar 包
二、外部依赖
- 外部依赖主要是一些第三方的库,这里的第三方不是说一定是其他人写的,而是指我们项目以外的,可以是公司部门的公共库也可以是网络上他人的开源库
- 使用外部依赖,重点就是告诉 Gradle “去哪里,找什么”
- “去哪里”【仓库地址配置】,就是告诉 Gradle 我们的依赖要在这些仓库里面寻找
repositories {
mavenCentral()
maven { url 'https://developer.huawei.com/repo/' }
}
- “找什么”【具体依赖配置】,就是告诉 Gradle 我们在仓库里面要找什么依赖
dependencies {
implementation 'com.github.Doonkey:DkFloatingView:1.0.2'
implementation 'com.huawei.hms:scanplus:2.1.0.300'
}
com.huawei.hms:scanplus:2.1.0.300 这一串字符串声明了我们所要依赖的具体对象,两个冒号分割了这个对象的三个信息,第一部分表示这个工具所属的组(group-com.huawei.hms),第二个部分表示这个工具的名称(name-scanplus),最后一部分则是这个工具的版本(version-2.1.0.300),这三个信息合起来可以标记出仓库中唯一的工具- 上面的示例就是告诉 Gradle 我们的项目需要依赖 DkFloatingView 和华为的扫码服务,这两个工具在 maven 中心库或者华为代码仓库里面可以找到
三、项目依赖
- 项目依赖是指在工程中,给主项目依赖上多个子项目,相比于依赖 aar 或者 jar 包,好处在于可以方便查看和修改相关源码,劣处在于编译主项目时各个子项目都需要编译,编译成本较高
- 示例:
include ':basic'
dependencies {
implementation(project(path: ':basic'))
}
四、文件依赖
- 文件依赖依赖的一般是 jar 包或者 aar 包,这些“工具”一般是没有打算发布的库或者是为了节约编译成本放弃进行项目依赖的库,使用的时候就需要复制一份放到自己的项目中去
- 示例:
dependencies {
implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs')
}
五、“工具”的使用
- 这里的“工具的使用”不是指这些库的使用方法,如控件 A 怎么展示,怎么赋值,而是指这些“工具”以什么方式进行依赖
- 以什么方式进行依赖,主要看的是依赖的关键字,如上面各个示例中的 implementation 关键字,下面进行Android Gradle 中几个常用的依赖关键字的说明
关键字 | 作用 |
---|
implementation | Gradle 会将依赖项添加到编译类路径和构建输出,依赖隐藏 | api | Gradle 会将依赖项添加到编译类路径和构建输出,依赖传递 | annotationProcessor | java 注解器 | kapt | kotlin 注解器 |
- 详细说明:https://developer.android.google.cn/studio/build/dependencies
整理学习自飞雪无情大佬的《Android Gradle 权威指南》和互联网资料
|