Gradle是所有Android进阶开发绕不去的坎的原因:Gradle 作为目前官方主推的构建系统,已经深度应用于 Android 的多个技术体系中,例如组件化开发、产物构建、单元测试等,所以要进行Android进阶开发,必须了解、学习Gradle。
一、Gradle是所有Android进阶开发绕不去的坎的原因
Gradle 作为目前官方主推的构建系统,已经深度应用于 Android 的多个技术体系中,例如组件化开发、产物构建、单元测试等,所以要进行Android进阶开发,必须了解、学习Gradle。
Gradle在Android进阶开发的应用:
- 项目依赖管理:Gradle可帮助开发者管理项目的依赖关系,例如库依赖、插件依赖等。通过Gradle的配置,可以自动下载和更新依赖库,从而提高开发效率。
- 组件化开发:Gradle支持模块化开发,可以将应用程序拆分为多个模块,各个模块之间可以互相独立,便于管理和调试。
- 自动化构建:Gradle可以自动执行构建任务,例如编译代码、打包输出等,避免手动操作的繁琐和出错,从而提高开发效率。
- 多渠道打包:Gradle支持根据不同的渠道生成不同的APK包,例如Google Play、华为应用市场、小米应用商店等。通过渠道打包,可以方便地进行版本控制和统计,并对应不同平台的需求进行优化。
- 单元测试:Gradle内置支持单元测试,可以方便地执行各种单元测试,并且可以生成测试报告,帮助开发者保证代码质量。
二、Gradle简介
1、Gradle概念
Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,也增加了基于Kotlin语言的kotlin-based DSL,抛弃了基于XML的各种繁琐配置。Gradle面向Java应用为主。当前其支持的语言C++、Java、Groovy、Kotlin、Scala和Swift,计划未来将支持更多的语言。
2、Gradle优缺点
优点:
- 表达性的 DSL:Gradle使用基于 Groovy 的 DSL 领域特定语言编写构建脚本,相比于传统的 XML 文件,更加简洁易读。
- 基于 Java 虚拟机:Groovy 语言基于 Java 虚拟机,使得开发人员可以使用 Java / Kotlin 代码编写 Gradle 构建脚本,并且只需要掌握一小部分 Groovy 语法即可轻松上手。
- 约定优于配置:Gradle 容易上手,具有约定优于配置的原则,即为属性提供默认值,避免了在配置过程中的繁琐和错误。
缺点:
- 向后兼容性问题:Gradle是一个快速发展的工具,新版本经常会打破向后兼容性,这意味着从一个版本迁移到另一个版本时可能会产生一些问题。
- 学习曲线略高:由于Gradle使用了DSL,需要学习该语言的语法和特性,才能更好地理解和掌握 Gradle。
3、Gradle中的重要概念
- Gradle:提供核心构建流程,但不提供具体构建逻辑;
- Gradle 插件:Gradle 提供的是一套核心的构建机制,而 Gradle 插件正是运行在这套机制上的一些具体构建逻辑,本质上和 .gradle 文件没有区别。例如,我们熟悉的 Android 构建流程就是由 Android Gradle Plugin 引入的构建逻辑;
- Gradle Daemon:用于提升构建速度的后台进程;
- Gradle Wrapper:对 Gradle 的封装,增加了自动下载安装 Gradle 环境的能力;
- 环境变量 GRADLE:用于定义 Gradle 的安装目录;
- 环境变量 GRADLE_USER_HOME:用于定义 Gradle 运行过程的文件存储目录,例如 Gradle Wrapper 自动安装的 Gradle 环境、构建缓存等。
4、Gradle的功能
- gradle对多工程的构建支持很出色,工程依赖是gradle的名列前茅功能。
- gradle支持局部构建。
- 支持多方式依赖管理:包括从maven远程仓库、nexus私服、ivy仓库以及本地文件系统的jars或者dirs
- gradle是名列前茅个构建集成工具,与ant、maven、ivy有良好的相容相关性。
- 轻松迁移:gradle适用于任何结构的工程,你可以在同一个开发平台平行构建原工程和gradle工程。通常要求写相关测试,以保证开发的插件的相似性,这种迁移可以减少破坏性,尽可能的可靠。这也是重构的优异实践。
- gradle的整体设计是以作为一种语言为导向的,而非成为一个严格死板的框架。
- 免费开源
延伸阅读1:Gradle的 3 大特性
- 高度可定制:它的高度可定制化体现在,它以最基本的方式可定制和可扩展的方式建模;
- 快速:Gradle 通过重新使用以前执行的输出,仅处理已更改的输入以及并行执行任务来快速完成任务。通俗点就是说,第二次构建,只构建我们修改代码相关的类,不会耗费时间来构建整个项目;
- 强大:Gradle 是 Android 的官方构建工具,并支持许多流行的语言和技术。