【Gradle 学习】(三)Android 与 Gradle 的关系
1. Gradle
先回顾下 Gradle 的概念
Gradle 是一种构建工具。构建工具就是对你的项目进行编译、运行、签名、打包、依赖管理等一系列功能的合集,传统的构建工具有 Make、Ant、Maven、Ivy等,而 Gradle 是新一代的自动化构建工具。
Gradle 使用的是 groovy 语言,语法跟 Java 语法很像,是一种动态语言(运行时可以改变其结构的语言),而且在 Java 基础上做了不少改进,用起来更加简洁、灵活,而且 Gradle 完全兼容 Maven、Ivy,这点基本上宣布了 Maven、Ivy 可以被抛弃了,Gradle 的推出主要以 Java 应用为主。
2. Gradle 与 Android Studio 的关系
Gradle 本身和 AS 是没有关系的,为了支持 Gradle 能在 AS 上使用,Google 做了一个 AS 的插件 Android Gradle plugin,而我们能在 AS 使用 Gradle 也是因为这个插件。在项目根目录里面有个 build.gradle 文件,有如下描述
dependencies {
classpath 'com.android.tools.build:gradle:3.1.4'
}
这个就是依赖 gradle 插件的代码,后面的版本号表示的是 Android Gradle plugin 插件的版本,并不是 Gradle 的版本,这个是 Google 定义的,和 Gradle 官方并没有关系。了解如何 更新 Gradle 和 Android 插件
3. Android & Gradle Wrapper
3.1 Gradle Wrapper
现在默认创建一个项目,在 AS 上运行,就会默认安装 Gradle 了,但其实这个并不是真正的 Gradle,而是 Gradle Wrapper,表示 Gradle 的包装。
Gradle 包装,类似于设计模式中的装饰器模式(包装器模式)的作用:动态地给一个对象添加一写额外的职责。
Gradle Wrapper 为 Gradle 添加的额外的职责就是: 当我们使用 gradlew 执行命令时,wrapper 会检查当前机器是否已经安装了对应版本的 gradle。如果安装了,那么 wrapper 会委托 gradle 执行了用户输入的命令;如果还没有安装,就会自动帮我们下载、安装 gradle,然后再执行命令。
Gradle Wrapper 除了可以更方便安装 Gradle,还可以确保不同机器之间版本的一致性。
什么意思呢?
比如我们的 Java 环境都是要装 JDK 的吧,JDK 安装一个版本就可以了,比如 JDK-1.8。由于 Gradle 会快速迭代,经常发布新版,如果项目直接引用,那么更改版本就会很麻烦。而且每个项目可能会用到不一样的 Gradle 版本,只安装了一个版本肯定也是不行的。所以 Google 推出了 Gradle Wrapper 的概念,就是在每个项目都配置了一个指定版本的 Gradle,通过这个每个项目可以支持不同的 Gradle 版本来构建项目。
关于 Gradle Wrapper 工作流程可见上一篇文章
3.2 Android 中的 Gradle Wrapper
在 AS 安装的时候就自带这个功能,在 AS 的安装目录 Android Studio\plugins\android\lib\templates\gradle\wrapper\gradle 下有两个文件:
- gradle-wrapper.jar 是 Gradle Wrapper 的主体功能包。
- gradle-wrapper.properties 文件主要指定了该项目需要从哪里下载什么版本的 Gradle,下载后放到哪里。
每新建一个项目,就会将这两个文件 复制到项目的 gradle 文件夹下面。
├──gradle-wrapper.jar
├──gradle-wrapper.properties
Android Stuido 中的 Gradle Wrapper 相关文件,项目结构和通用是一致的
├── build.gradle
├── settings.gradle
├── gradle
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
└── gradlew.bat
在创建项目之后,Gradle 会自动下载安装(第一次会比较久,之后就可以直接使用了),结束之后可以在终端输入 gradlew -v
( mac 用户输入./gradlew -v
) 可以查看当前项目所用的 gradle 的版本。比如我当前用的是 Gradle 6.1.1 版本的。gradlew 也就是 gradle wrapper 的缩写,wrapper 会自动去执行具体版本对应的 gradle 命令。
$ gradlew -v
------------------------------------------------------------
Gradle 6.1.1
------------------------------------------------------------
Build time: 2020-01-24 22:30:24 UTC
Revision: a8c3750babb99d1894378073499d6716a1a1fa5d
Kotlin: 1.3.61
Groovy: 2.5.8
Ant: Apache Ant(TM) version 1.10.7 compiled on September 1 2019
JVM: 1.8.0_181 (Oracle Corporation 25.181-b13)
OS: Windows 10 10.0 amd64
小结
Android 使用 Gradle 进行项目的编译、运行、签名、打包和依赖管理。在 Android Stuido 中应用 Android Gradle 插件后才可以使用 Gradle,不过这些在创建项目的时候自动应用好了。在创建项目同时应用了 Gradle Wrapper,来下载安装对应版本的 Gradle。
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanejhi
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
photoshop蒙版画笔没反应怎么办
PHP中文网 06-24