Gradle 学习之如何配置依赖

在提倡分享与开源的时代,各式各样的“工具”层出不穷,免去了很多重头再来的冗余工作,我们只要利用好合适的“工具”就可以快速,便捷的实现目标功能,那么 Gradle 是如何帮助找到这些“工具”的呢?重点其实就在于怎么找到和怎么使用

目录

  • 一、“工具”的种类
  • 二、外部依赖
  • 三、项目依赖
  • 四、文件依赖
  • 五、“工具”的使用

一、“工具”的种类

所谓的“工具”其实就是指第三方的库集成的子项目一些放在项目里面的 jar/aar 包,这些都是丰富我们主项目的“好帮手”,但是前提是要选择得当,合理运用

  • 第三方的库
  • 集成的子项目
  • 放在项目里面的 jar/aar 包

二、外部依赖

  1. 外部依赖主要是一些第三方的库,这里的第三方不是说一定是其他人写的,而是指我们项目以外的,可以是公司部门的公共库也可以是网络上他人的开源库
  2. 使用外部依赖,重点就是告诉 Gradle “去哪里,找什么”
  • “去哪里”【仓库地址配置】,就是告诉 Gradle 我们的依赖要在这些仓库里面寻找
// Android Gradle 中,一般是写在项目级的 build.gradle 的 buildscript 闭包中
repositories {
	// 配置的是 maven 中心库
    mavenCentral()
    // 配置的是华为的代码仓库
    maven { url 'https://developer.huawei.com/repo/' }
}
  • “找什么”【具体依赖配置,就是告诉 Gradle 我们在仓库里面要找什么依赖
// Android Gradle 中,一般是写在模块级的 build.gradle
dependencies {
	// github 上面找的悬浮窗控件
	implementation 'com.github.Doonkey:DkFloatingView:1.0.2'
	// hms 的统一扫描服务库
	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 中心库或者华为代码仓库里面可以找到

三、项目依赖

  1. 项目依赖是指在工程中,给主项目依赖上多个子项目,相比于依赖 aar 或者 jar 包,好处在于可以方便查看和修改相关源码,劣处在于编译主项目时各个子项目都需要编译,编译成本较高
  2. 示例:
// Android Gradle 中的项目依赖,依赖的都是在 settings.gradle 中配置过的子项目
// settings.gradle
include ':basic'
// 具体的依赖语句是写在模块级的 build.gradle
// module/build.gradle
dependencies {
	// 依赖了子项目 basic
	implementation(project(path: ':basic'))
}

四、文件依赖

  1. 文件依赖依赖的一般是 jar 包或者 aar 包,这些“工具”一般是没有打算发布的库或者是为了节约编译成本放弃进行项目依赖的库,使用的时候就需要复制一份放到自己的项目中去
  2. 示例:
// Android Gradle 中的文件依赖一般是 jar 包或者 aar 包,具体的依赖语句是写在模块级的 build.gradle
dependencies {
	// 文件依赖,一般是把 jar 包或者 aar 包放在 libs 目录下
	implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs')
}

五、“工具”的使用

  1. 这里的“工具的使用”不是指这些库的使用方法,如控件 A 怎么展示,怎么赋值,而是指这些“工具”以什么方式进行依赖
  2. 以什么方式进行依赖,主要看的是依赖的关键字,如上面各个示例中的 implementation 关键字,下面进行Android Gradle 中几个常用的依赖关键字的说明
关键字作用
implementationGradle 会将依赖项添加到编译类路径和构建输出,依赖隐藏
apiGradle 会将依赖项添加到编译类路径和构建输出,依赖传递
annotationProcessorjava 注解器
kaptkotlin 注解器
  1. 详细说明:https://developer.android.google.cn/studio/build/dependencies

整理学习自飞雪无情大佬的《Android Gradle 权威指南》和互联网资料


http://www.niftyadmin.cn/n/1252337.html

相关文章

是什么尤大选择放弃Webpack?——vite 原理解析

本文同步在掘金博主:「橙红年代」个人博客shymean.com上。掘金原文链接: https://juejin.im/post/5ea2361de51d454714428b44前些天尤大在Vue 3.0 beta直播中提到了一个vite的工具,其描述是:针对Vue单页面组件的无打包开发服务器,可以直接在浏…

Android 学习之多状态布局的一种实现方案

开发应用的过程中,首页的控件越来越多,布局文件的代码已经到了爆表的程度,而且不同状态下首页各个控件的 Visibility 不同,每次新增状态都是一件头疼的事情,时常遗漏控件导致出错,和 YYY 大佬交流讨论后他给…

HTTP/3 原理与实践

2015 年 HTTP/2 标准发表后,大多数主流浏览器也于当年年底支持该标准。此后,凭借着多路复用、头部压缩、服务器推送等优势,HTTP/2 得到了越来越多开发者的青睐。不知不觉的 HTTP 已经发展到了第三代,鹅厂也紧跟技术潮流&#xff0…

这 2 个坏习惯,让你离大厂越来越远

上周见了个老朋友,老吴,也是做前端的,今年刚被提拔到部门Leader,饭桌上他说他们公司在缩减人员,纠结了几周,最后裁了一个跟了他 3 年的人。这人我也认识,工作上没啥大问题,挺踏实一人…

九个超级实用的 ES6 特性

这篇文章介绍了一些特性,在我看来,一个严肃的 JavaScript 开发者每天都多多少少会用到这些特性。1、展开操作符顾名思义,用于对象或数组之前的展开操作符(…),将一个结构展开为列表。演示一下:l…

for···in和for···of的区别

文章目录forin和forof的区别:1、从遍历数组角度来说,forin遍历出来的是key(即下标),forof遍历出来的是value(即数组的值)2、从遍历字符串的角度来说,同数组一样。3、从遍历对象的角度来说,forin会遍历出来的为对象的ke…

Vue3.0 奇妙之旅 — 感谢尤大

前些日,尤大大在微博公布了制作 Vue3.0 的过程,想必大家都点进去阅读了,我阅读完之后也受益匪浅,文章讲述了 vue3.0 的特别之处,讲述了“为什么会有 vue”、“更新后有什么好处",我对一句话印象很深&a…

js继承方法

文章目录js继承的6种方式1、原型链继承特点:缺点:2、借用构造函数继承特点:缺点:3、组合继承(组合原型链继承和借用构造函数继承)特点:缺点:4、原型式继承特点:缺点&…