构建工具(五):Android项目中的Gradle文件
一开始先进行Gradle和Maven的对比,然后,对Gradle,Gradle Wrapper,Android Plugin for Gradle的一些概念进行区分,最后通过分析Android项目中的各个Gradle文件。
Gradle文件介绍
主角Gradle终于上场了,在Google发布的Android Studio开发工具中,Gradle替换Eclipse锁使用的ant作为默认的Android构建工具,其吸纳了ant和Maven的优点。现在ant几乎销声匿迹,Maven也日薄西山,而Gradle的发展却如日中天。感觉大多数场景,Gradle替换Maven的趋势,指日可待了。
Gradle与Maven对比
那为啥前面还要花了几章简述Maven?
- 通过Maven介绍一下,什么是构建工具,有什么作用。
- Gradle是在Maven上发展起来的,兼容Maven,只有知己知彼,才能更好体验Gradle的优势
- 一些非Android项目或者老的项目还使用到Maven。
Maven和Gradl直观上最大的区别,就是依赖管理的写法,由于Gradle本身是基于Groovy脚本语音进行构建的,并通过DSL进行描述和控制构建逻辑,书写起来更加自由。抛弃了Maven的xml格式的繁琐写法。
<?xml version="1.0" encoding="UTF-8"?>
<dependencies>
<dependency>
<groupId>com.android.support</groupId>
<artifactId>appcompat-v7</artifactId>
<version>26.1.0</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
dependencies {
compile 'com.android.support:appcompat-v7:26.+'
testCompile 'junit:junit:4.11'
}
Gradle比Maven不仅仅只是语法上的改变,还有
- 性能方面得到很大提升
- 构建周期没有限制太死,比较灵活
- 依赖范围被简化
- 支持版本号后面使用+号实现动态的版本管理
- 解决冲突更加明确
- ......
详细区别,可以参考最后的参考资料
Android项目中的Gradle文件
Gradle,Gradle Wrapper,Android Plugin for Gradle区别
在对Android Studio项目中关于gradle文件的介绍之前,先对几个概念进行介绍,在开发中,经常会遇到,尤其是更新Android Studio的时候。
Gradle
与Maven一样,是项目管理工具,上几篇文章对其与Maven都做了简单介绍。
Gradle Wrapper
翻译过来名称是Gradle的包装,其实就是对Gradle进行封装,简化了Gradle本身的安装,部署。不同的开发者,不同的项目,有可能会采用不同版本的Gradle,如果每次切换一个项目,都要手动部署一下对应版本的Gradle,这种麻烦的事肯定不适合程序员,于是就通过Gradle Wrapper实现,就算本地原来没有安装部署Gradle的环境,也可以直接使用。
查看Gradle版本
在项目路径下,通过./gradlew -v
可以查看当前项目的Gradle版本,取决于gradle-wrpper.properties
中的值。
➜ StudyTest ./gradlew -v
------------------------------------------------------------
Gradle 4.1
------------------------------------------------------------
Build time: 2017-08-07 14:38:48 UTC
Revision: 941559e020f6c357ebb08d5c67acdb858a3defc2
Groovy: 2.4.11
Ant: Apache Ant(TM) version 1.9.6 compiled on June 29 2015
JVM: 1.8.0_112 (Oracle Corporation 25.112-b16)
OS: Mac OS X 10.13.3 x86_64
Android Plugin for Gradle
Android项目针对Gradle的插件,通过它就可以在Android项目中使用Gradle了。Android官方也对其进行了说明
The Android Studio build system is based on Gradle, and the Android plugin for Gradle adds several features that are specific to building Android apps. Although the Android plugin is typically updated in lock-step with Android Studio, the plugin (and the rest of the Gradle system) can run independent of Android Studio and be updated separately.
大体的意思就是:Android Plugin for Gradle插件添加了构建Android项目的几项功能,虽然其通常与Anroid Studio锁定更新,但是可以独立于Android Studio运行并且单独更新。
Gradle插件版本与Gradle版本
Android Plugin for Gradle版本,Android Studio版本与Gradle版本是有联系的。如果你升级了Android Studio的时候,有可能会收到提示对其进行更新。尽量升级到最新版本,性能更好。目前Plugin和Gradle的版本搭配如下,可以通过Android官网Gradle Plugin介绍进行查询