享学课堂诚邀作者:周周
转载请声明出处!
前言
手把手讲解系列文章,是我写给各位看官,也是写给我自己的。
文章可能过分详细,但是这是为了帮助到尽量多的人,毕竟工作5,6年,不能老吸血,也到了回馈开源的时候.
这个系列的文章:
1、用通俗易懂的讲解方式,讲解一门技术的实用价值
2、详细书写源码的追踪,源码截图,绘制类的结构图,尽量详细地解释原理的探索过程
3、提供Github 的 可运行的Demo工程,但是我所提供代码,更多是提供思路,抛砖引玉,请酌情cv
4、集合整理原理探索过程中的一些坑,或者demo的运行过程中的注意事项
5、用gif图,最直观地展示demo运行效果如果觉得细节太细,直接跳过看结论即可。
本人能力有限,如若发现描述不当之处,欢迎留言批评指正。
学到老活到老,路漫漫其修远兮。与众君共勉 !
正文大纲
1. gradle是什么
2. groovy语言的特性以及它和java的关系
3. 为什么你的apk打包这么慢
4. 如何利用gradle编程解决工作中的实际问题
5. gradle的高级用法(gradle多渠道快速打包插件)
正文
1. gradle 是什么?
先看看来自百度百科的解释:
Gradle
是一个基于Apache Ant
和Apache Maven
概念的项目自动化构建开源工具。它使用一种基于Groovy
的特定领域语言(DSL)
来声明项目设置,目前也增加了基于Kotlin语言的kotlin-based DSL
,抛弃了基于XML的各种繁琐配置。
面向Java应用为主。当前其支持的语言限于Java、Groovy、Kotlin和Scala
,计划未来将支持更多的语言.
Gradle
是一个基于JVM
的构建工具,是一款通用灵活的构建工具,支持maven, Ivy
仓库,支持传递性依赖管理,而不需要远程仓库或者是pom.xml和ivy.xml
配置文件,基于Groovy,build
脚本使用Groovy
编写。
大家懂的,百度百科就是把简单的一个东西解释得一般人看不懂。那么来看看上面一段话中的重点。
Gradle 是基于Jvm的项目自动化构建工具 ,可以使用java groovy kotlin 和 scala语言进行编程。 它是DSL 特定领域语言,它是专门用来构建项目的.
再解读并且扩展一下:
Gradle
是一个工具,用于构建项目,在androidStudio
的工程目录中的体现,就是 帮我们把Android
工程中的java源码文件,资源文件,依赖包,普通配置文件等,经过一系列步骤, 最终生成一个 或者多个apk文件,有了apk文件,才能到 应用市场去发布。Gradle
是一个编程框架,Groovy
是该框架常用的编程语言,既然它是语言,那么就可以进行程序逻辑的编写,编写之后,会被编译成字节码,交给JVM运行。- 项目构建工具,除了
gradle
之外,还有ant
,maven
,只不过很少使用,已经渐渐转gradle
.
Gradle
在androidStudio
项目中存在的痕迹如下图(这是一个新建的project
):
上面图中,上图中,我标记了1-6,现在来一一解释:
1. Gradle- Wrapper
gradle的包装盒,里面有gradle的jar包,还有properties属性. Jar包包含的是.class文件,这也就解释了为什么gradle的代码是基于JVM的,可以预见,这个jar包内肯定包含了gradle编译之后生成的java类,各种api. 然而,事实也证明我的猜想没有错。
Jar包之外,还有一个.properties.
这里是gradle的一些配置信息,比较重要的是最后一条,distributionUrl
它代表了gradle
工具包的下载路径.
2. 外部的build.gradle
它是全局范围的构建配置.
3. setting.gradle
但是这里不仅仅可以定义要编译的module,还可以进行插件化编程。
4. gradle.properties
gradle的全局配置