全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货

为什么说Gradle是Android进阶绕不去的坎?

发布时间:2023-10-13 06:26:28
发布人:xqq

一、Gradle是Android进阶绕不去的坎的原因

Gradle 是 Android 开发中使用非常广泛的构建工具,也是 Google 推荐的构建系统。Gradle 作为官方主推的构建系统,目前已经深度应用于 Android 的多个技术体系中,例如组件化开发、产物构建、单元测试等。

二、Gradle是什么

Gradle是一个自动化构建继承工具,它基于JVM,运行在JAVA的环境之上,可以通过简单的配置就可以快速的编译打包,同时它也支持多工程构建、局部构建、多方式以来等特点。Android开发者是如何解除到Gradle的,因为每当我们创建一个项目,就会的模块目录下和根目录下默认创建bulid.gradle,我们通过引用库来管理第三方的Library,也可以编写一些变量和脚本去编译我们的程序,比如修改生成apk的名称等。

三、gradle 和maven 对比

Gradle作为一款基于Groovy语言的构建工具,和Gradle相比,ant显得冗余复杂,maven显得有些死板落后,而gradle基于DSL语法,特点明显:简洁、灵活、可读性强。

1、基础配置信息

maven使用.pom文件,基于XML,gradle使用.gradle文件,基于Groovy,gradle去掉maven中需要固定配置的groupId,artfactId,package等基本参数,通过 apply plugin: ‘java’,apply plugin: ‘war’来表示打包方式,也提供sourceCompatibility,version等一些实用的标签。

2、依赖管理

Gradle的jar包管理支持maven下Repository方式,也支持Ant的Ivy方式,由于maven的Repository已经非常成熟,gradle在兼容Repository做得非常方便,定义maven的repository:mavenLocal() :maven 本地库、mavenCentral() : maven 远程库、mavenRepo urls: 自定义库路径。

maven通过groupId、name和version到配置的Repository里寻找指定依赖中的Jar包。Gradle的生命周期更为复杂,但也支持Maven依赖中的构建生命周期,compile、runtime、testCompile和testRuntime分别对应项目不同阶段的依赖。 并且还简化maven的配置命令

3、多项目管理

实际使用中,往往需要管理的都不是单单一个项目,maven使用依赖,继承,组成的概念,在父模块指定自己的子模块,并且准备一些各个子模块公用的资源,如插件,配置信息等等。将打包的模块与实现具体功能的模块分开的做法来管理多个项目。Gradle在这一方面做得更加清楚,划分更明确,学习gradle的多项目管理也很容易,在eclipse中安装完gradle插件之后,新建一个Gradle工程,选择flat-java-multiproject,生成的工程就是多项目管理一个示例。

Gradle通过settings.gradle文件来指定工程的子项目,在构建的初始化阶段(Initialization),Gradle会根据settings.gradle 文件来判断有哪些子项目被include到了构建中,并为每一个子项目初始化一个Project对象,在构建脚本中通过project(‘:sub-project-name’)来引用子项目对应的Project对象。关于多项目配置有非常多,因此就简述一下常用的配置共享以及配置独享。

延伸阅读1:Gradle生命周期

初始化阶段: 解析setting.gradle文件配置阶段:解析所有的projects对象中的task,主要解析各个project下的build.gradle文件执行阶段:执行project下具体的的task及其依赖task
#it技术干货

相关文章

Mysql怎么把图片转换的base64以字符串的类型存入数据库?

Mysql怎么把图片转换的base64以字符串的类型存入数据库?

2023-10-13
为什么mysql having的条件表达式可以直接使用select后的别名?

为什么mysql having的条件表达式可以直接使用select后的别名?

2023-10-13
为什么MySQL在innodb引擎中即使使用了MVCC机制仍然会出现丢失更新?

为什么MySQL在innodb引擎中即使使用了MVCC机制仍然会出现丢失更新?

2023-10-13
sqlite数据库的三种后缀(.db .db3 .sqlite)有什么区别?

sqlite数据库的三种后缀(.db .db3 .sqlite)有什么区别?

2023-10-13

最新文章

常见网络安全面试题:Windows常用的命令有哪些?

常见网络安全面试题:Windows常用的命令有哪些?

2023-10-09
常见网络安全面试题:根据设备告警如何展开排查?

常见网络安全面试题:根据设备告警如何展开排查?

2023-10-09
常见网络安全面试题:mysql加固呢?(数据库加固)

常见网络安全面试题:mysql加固呢?(数据库加固)

2023-10-09
常见网络安全面试题:windows和linux加固?(操作系统加固)

常见网络安全面试题:windows和linux加固?(操作系统加固)

2023-10-09
在线咨询 免费试学 教程领取