Gradle相关点

1. Wrapper

资料1资料2资料3

看完直接说结论:

结论一:WrapperGralde间是解耦的

Wrapper可以理解为一个Gradle的代理:代理Gradle的安装和调用。

没有Wrapper你照样可以在系统上安装Gradle,但你需要自己去维护和管理Gradle升级等操作。当然这不是重点,重点是你需要维护整套Gradle的环境:比如配置环境变量等,装上并不代表就能用了。还有麻烦的地方,当你把Gradle加入到自己的项目工程中时,你同样要劳神费力的配置一翻。

使用Wrapper后,你可以安心的托管了。比如以后升级,你无需自己去下载,而是直接修改下配置文件,交给Wrapper去打理就好了。Wrapper会维护自己的一套机制,你之前在安装的所有版本的GradleWrapper都会完全无视,即使你要的版本已经被你之前手动安装过了,一旦使用Wrapper后,还是会下载那个版本到它指定的目录中。

之前说过,WrapperGralde的代理,执行Gradletask时:
对于每一个/gradle <task>指令,都可以使用/gradlew <task>指令去替代。

所以说了这么多,Wrapper到底是什么?
Wrapper其实就是一定文件的集合。包含:一个核心JAR,1个配置文件和2个脚本文件。

配置文件(gradle/wrapper/gradle-wrapper.properties):配置Gradle的下载、解压的路径,下载的地址等信息。

JAR(gradle/wrapper/gradle-wrapper.jar):Wrapper自身的代码,Wrapper能做什么,发挥什么样的作用完全来自这个JAR

脚本文件(gradlew.batgradlew,分别对应两种操作系统):用于执行Gradletask注意是调用Gradle的,不是Wrapper)。操作方式:/gradlew <task>
如果:删除Windows下某个项目中的gradlew.bat文件,然后执行gradlew指令时,会提示:gradlew 不是内部或外部命令,也不是可运行的程序或批处理文件。 恢复后就正常了。

什么是Gradle distributions
这个词在开头的三篇文章中经常出现,它表示的很简单:就是Gradle自己的版本/们(注意,还是与Wrapper无关)。

如果使用WrapperGralde distribution就会被下载到gradle/wrapper/gradle-wrapper.properties所配置的路径下,下载完毕后会自动解压。

Gralde distributions下载地址

wrapper.properties里的distributionUrl的值就是具体distribution的下载地址。wrapper/dists目录指的就是distribution的目录。

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip

distributionbinall两种版本,all等于bin+src
all包含:

bin
docs
init.d
lib
media
samples
src

bin包含:

bin
init.d
lib
media

lib下面是组成Gralde的各种JAR

bin下面就2个文件gradlegradle.bat两个。是不是如Wrappergradlewgradlew.bat似曾相识?
没错,这两个就是分别在两种系统下执行Gradle task的脚本文件~。

结论二:Gradle / WrapperAndroid Studio间是解耦的

经过上面的讲解,基本上可以推出这个结论了。
AS在创建Android工程时会自动创建Wrapper,并且指定Android Plugin for Gradle插件进行支持。
这样的话,我们连 Wrapper配置到项目工程中的 这个动作都可以省略了。很显然AS这么做是为了给广大开发者节省时间。
当然,你也可以不这么做,正如官方文档所言:

GradleAndroid Plugin for Gradle 插件独立于 Android Studio 运行。这意味着,您可以在 Android Studio 内、使用计算机上的命令行工具或在未安装 Android Studio 的计算机(例如持续性集成服务器)上构建 Android 应用。如果您不使用 Android Studio,可以学习如何从命令行构建和运行您的应用(资料3)。无论您是从命令行、在远程计算机上还是使用 Android Studio 构建项目,构建的输出都相同。

最后,还有一个很小的或者无关紧要的点,在AS根目录下会有一个.gradle的文件夹,当执行任何gradlew/gradlew <task>指令时就会生成该文件夹(如果没有)。据说是Gradle(不是Wrapper)的编译系统,版本由Wrapper指定。

.gradle文件夹是否似曾相识? 没错,wrapper.properties里的GRADLE_USER_HOME也就是Gralde distributionspath路径,默认就是以.gradle文件夹结尾的(见资料2)。
但这跟上面所说的工程根目录下的.gradle文件夹没有一毛钱关系。

2. 什么是DSL

DSL(Domain Specified Language)领域专用语言:DSL说明

3. Groovy

Groovy是一种基于JVM(Java虚拟机)的敏捷开发语言,它结合了Python、Ruby和Smalltalk的许多强大的特性,Groovy 代码能够与 Java 代码很好地结合,也能用于扩展现有代码。由于其运行在 JVM 上的特性,Groovy 可以使用其他 Java 语言编写的库

Groovy 是用于Java虚拟机的一种敏捷的动态语言,它是一种成熟的面向对象编程语言,既可以用于面向对象编程,又可以用作纯粹的脚本语言。使用该种语言不必编写过多的代码,同时又具有闭包和动态语言中的其他特性。

Groovy是JVM的一个替代语言(替代是指可以用 Groovy 在Java平台上进行 Java 编程),使用方式基本与使用 Java代码的方式相同,该语言特别适合与Spring的动态语言支持一起使用,设计时充分考虑了Java集成,这使 Groovy 与 Java 代码的互操作很容易。(注意:不是指Groovy替代Java,而是指Groovy和Java很好的结合编程。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,064评论 5 466
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,606评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,011评论 0 328
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,550评论 1 269
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,465评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,919评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,428评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,075评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,208评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,185评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,191评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,914评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,482评论 3 302
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,585评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,825评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,194评论 2 344
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,703评论 2 339

推荐阅读更多精彩内容