公司新闻
Gradle之Gradle 的基本使用(一)
发布时间: 2020-06-29 07:01

对 gradle 脚原来说,他实现了简练的界说,又有充实的言语逻辑,以 android {} 为例,这自身是一个函数挪用,参数是一个闭包,可是这种界说体例较着要简练良多

初始化阶段次要做的工作是有哪些项目必要被建立,然后为对应的项目建立 Project 对象

只在编译时期依赖模块,打包当前运转时不会依赖,能够用来处理一些库冲突的问题

在 transform 中的处置,正常会涉及到 class 文件的点窜,把持字节码的东西正常是 javasist 和 asm 居多,这两个东西在这里先不引见了。后面无机遇会展开说一下

插件开辟能够利用 groovy 和 java,利用 groovy 的话能够有更多的语法糖,开辟起来更便利一些

3.之后在插件代码中打好断点,在 as 中点击 debug 按钮,就能够调试插件代码了

咱们以天生一个可用的 apk 为例,整个历程要颠末 资本的处置,javac 编译,dex 打包,apk 打包,署名等等步调,每个步调就对应到 gradle 里的一个 task

依赖项仅在运转时对模块及其消费者可用。 此设置装备安排的举动雷同于 apk(此刻已弃用)。

正常在项目里见到的援用子模块的方式,就是利用 include,如许援用,子模块位于根项目标下一级

gradle 能够类比做一条流水线,task 能够比作流水线上的机械人,每个机械人担任分歧的工作,最一天生完备的建立产品

gradle 是通过组织一系列 task 来最终完成主动化建立的,所以 task 是 gradle 里最主要的观点

与 GPL 比拟起来,DSL 利用简略,界说比力简练,比起设置装备安排文件,DSL 又能够实现言语逻辑

设置装备安排阶段次要做的工作是对上一步建立的项目进行设置装备安排,这时候会施行 build.gradle 剧本,而且会天生要施行的 task

gradle 在建立历程中,会供给一些列回调接口,便利在分歧的阶段做一些工作,次要的接口有下面几个

implementation 只会表露给间接依赖的模块,利用此设置装备安排,在模块点窜当前,只会从头编译间接依赖的模块,直接依赖的模块不必要改动

api 会表露给直接依赖的模块,利用此设置装备安排,在模块点窜当前,模块的间接依赖和直接依赖的模块都必要从头编译

依赖项在编译时对模块可用,而且在编译时和运转时还对模块的消费者可用。 此设置装备安排的举动雷同于 compile(此刻已弃用),正常环境下,您该当仅在库模块中利用它。 使用模块应利用 implementation,除非您想要将其 API 公然给零丁的测试模块。

关于 gradle 的项目条理,咱们新建一个项目看一下,项目地点在EasyGradle

依赖项在编译时对模块可用,而且仅在运转时对模块的消费者可用。 对付大型多项目建立,利用 implementation 而不是 api/compile 能够显著缩短建立时间,由于它能够削减建立体系必要从头编译的项目量。 大大都使用和测试模块都应利用此设置装备安排。

在 gradle 里,有一种 init.gradle 比力特殊,这种剧本会在每个项目 build 之前先被挪用,能够在此中做一些全体的初始化操作,好比设置装备安排 log 输出等等

gradle 利用 groovy 编写,groovy 是基于 jvm 的言语,所以素质上是面向对象的言语,面向对象言语的特点就是一切皆对象,所以,在 gradle 里,.gradle 剧本的素质就是类的界说,一些设置装备安排项的素质都是方式挪用,参数是后面的 {} 闭包

gradlew / gradlew.bat这个文件用来下载特定版本的 gradle 然后施行的,就不必要开辟者在当地再装置 gradle 了。如许做有什么益处呢?开辟者在当地装置 gradle,会碰着的问题是分歧项目利用分歧版本的 gradle 怎样处置,用 wrapper 就很好的处理了这个问题,能够在分歧项目里利用分歧的 gradle 版本。gradle wrapper 正常下载在 GRADLE_CACHE/wrapper/dists 目次下

依赖项仅在编译时对模块可用,而且在编译或运转时对其消费者不成用。 此设置装备安排的举动雷同于 provided(此刻已弃用)。

网站地图
亚洲城 亚洲城 亚洲城