博客结构
用简单通俗的话来记录自己对Gradle的理解
1.前言
现在大家都只知道Android的构建工具是Gradle。之前不了解Gradle的时候,或者是一知半解Gradle的时候,Gradle有一点问题,真是不敢乱动,生怕再搞出其它问题。世界万事万物均是如此,正如毛泽东说的:一切反动派都是纸老虎。所有的技术难点,因你不去走近、了解和学习而畏惧它,当你从整体到局部去了解它,也不再害怕如虎了,好了,说多了,只是讲了一下自己的感受。
2.构建工具
1.描述
根据输入信息然后干一堆事情,最后得到几个产出物。
在AndroidStudio中,也就是将类、资源文件等输入,输出一个apk文件。
2.发展
(1)ANT:Eclipse之前使用的就是它。配置文件是xml文件
(2)Maven:在ANT进一步发展而来,主要体现一下:
1)使用Project Object Model来对软件项目管理;
2)内置了更多的隐式规则,使得构建文件更加简单;
3)内置依赖管理和Repository来实现依赖的管理和统一存储;
4)内置了软件构建的生命周期;
(3)Gradle:
使用Groovy语言写的脚本,更简洁,便于阅读。
AndroidStudio的Gradle
Eclipse下的ANT
3.AS中的gradle
1.编译中的gradlew与gradle的命令区别
1.gradlew是每个项目中都会自带的编译命令,它的本质是gradlew.bat,它对应于gradle/wrapper下的文件,当不存在时,会去仓库拉取。
2.gradle是一个gradle构件系统的命令,它需要配置,在项目中,没有发现它的位置。这也是为啥我们的命令行都是使用gradlew
遗留问题:
1.gradle在项目中有命令行吗?在哪里?
2.project.gradle、moudle.gradle、setting.gradle的区别
(1)project.gradle:对应于项目下的build.gradle。主要两个scriptBlock:
buildScrpit{respositories{}}//gradle构件工具下载的仓库
allProjects{respositories{}} //dependencies依赖的惨况
遗留:全局依赖的仓库是不是放到RootProject下?
(2)Module.gradle
单个模块所的编译文件
(a)apply plugin //所依赖的插件
(b)productFlavors //产品别名标识,应用场景:同一套代码,使用不同的包名编译不同的包。
©buildType//编译的版本区分:debug/release/preview
遗留:apply plugin作用?
(3)setting.gradle
将project有多少module参与。
3.gradle的构建生命周期
Gradle工作流程分为三部分:
1.初始化
对应于settings.gradle
2.配置Configration
扫描所有Task,利用有向循环图结构
3.执行
所有的Task执行
待补充点:可以插件思想处理一些问题
3.Gradle之Groovy
Gradle使用了动态编译语言Groovy,Groovy是Java语言的拓展,如果要了解,实际上和我们学习普通的语法是一样的。也是从最基本语法出发和行话。对于要进行Gradle的了解,行话了解即可。
1.groovy、gradle、jvm的关系
2.groovy中的行话
1.project.rootProject
描述的是RootProject对象。
4.Gradle之打包