gradle插件,gradle/Groovy语法

宿  主  App   :    apply plugin: 'com.android.application'  <==如果是编译Android APP,则加载此插件 
依赖库Module:apply plugin: 'com.android.library'         <==如果是编译Library,则加载此插件  

> gradle 插件
  如果想深入的做一下自定义的构建插件,可以考虑学一下groovy,因为它是基于Java的。理解gradle需要首先理解闭包的概念,Closure就是一段代码块,代码块一般要用{}包起来.

饿了么的团队gradle 插件,用来无伤混淆 Activity 和 View, Mess:https://github.com/eleme/Mess

Jake Wharton写的Gradle插件,下载和管理Android SDK- https://github.com/JakeWharton/sdk-manager-plugin

> Gradle , Project 和 Tasks

  Gradle可以用很灵活的语言来写构建规则外,Gradle另外一个特点就是它是一种DSL,即Domain Specific Language,领域相关语言。什么是DSL,说白了它是某个行业中的行话。
学习 Gradle DSL(https://docs.gradle.org/current/javadoc/org/gradle/api/Project.html
学习 Android DSL和Task(http://google.github.io/android-gradle-dsl/current/index.html
Gradle API 文档:https://docs.gradle.org/current/dsl/org.gradle.api.invocation.Gradle.html 
深入理解Android(一):Gradle详解- http://www.infoq.com/cn/articles/android-in-depth-gradle/
Gradle 庖丁解牛(构建源头源码浅析)- http://blog.csdn.net/yanbober/article/details/60584621
  在Gradle爆红之前,常用的构建工具是ANT,然后又进化到Maven。Groovy基于Java并拓展了Java。了解Groovy语言是掌握Gradle的基础。
  Gradle另外一个特点就是它是一种DSL,即Domain Specific Language,领域相关语言。
  Gradle基于Groovy的特定领域语言(DSL)编写的一种自动化建构工具,Groovy作为一种高级语言由Java代码实现.Gradle构建类型、多样化、签名配置、库文件工程等等功能。
  Gradle是一个框架,它定义一套自己的游戏规则。我们要玩转Gradle,必须要遵守它设计的规则。
  Android Gradle 的 Project 和 Tasks, Gradle中最重要的两个概念。每次构建(build)至少由一个project构成,一个project 由一到多个task构成。项目结构中的每个build.gradle文件代表一个project,在这编译脚本文件中可以定义一系列的task;task 本质上又是由一组被顺序执行的Action`对象构成,Action其实是一段代码块,类似于Java中的方法。
  task是Gradle中的最小执行单元,我们所有的构建,编译,打包,debug,test等都是执行了某一个task,一个project可以有多个task,task之间可以互相依赖。
  Android Studio中默认会使用 Gradle Wrapper 而不是直接使用Gradle。命令也是使用gradlew而不是gradle。这是因为gradle针对特定的开发环境的构建脚本,新的gradle可能不能兼容旧版的构建环境。为了解决这个问题,使用Gradle Wrapper 来间接使用 gradle。相当于在外边包裹了一个中间层。对开发者来说,直接使用Gradlew 即可,不需要关心 gradle的版本变化。Gradle Wrapper 会负责下载合适的的gradle版本来构建项目。
  Gradle项目有3个重要的文件需要深入理解:项目根目录的 build.gradle , settings.gradle模块目录的 build.gradle

--  Gradle基于Groovy,Groovy又基于Java。所以,Gradle执行的时候和Groovy一样,会把脚本转换成Java对象。Gradle主要有三种对象,这三种对象和三种不同的脚本文件对应,在gradle执行的时候,会将脚本转换成对应的对端:
  1.Gradle对象:当我们执行gradle xxx或者什么的时候,gradle会从默认的配置脚本中构造出一个Gradle对象。在整个执行过程中,只有这么一个对象。Gradle对象的数据类型就是Gradle。我们一般很少去定制这个默认的配置脚本。
  2.Project对象:每一个build.gradle会转换成一个Project对象。
  3.Settings对象:显然,每一个settings.gradle都会转换成一个Settings对象。

-- Gradle是什么?学习它到什么地步就可以了?
 看待问题的时候,所站的角度非常重要。
 当你把Gradle当工具看的时候,我们只想着如何用好它。会写、写好配置脚本就OK
 当你把它当做编程框架看的时候,你可能需要学习很多更深入的内容。
 另外,今天我们把它当工具看,明天因为需求发生变化,我们可能又得把它当编程框架看。

> Groovy
 Groovy是基于Java语言的脚本语言.Groovy是基于Java的,而且最终会转成Java Code运行在JVM上.Groovy是一种动态语言。这种语言比较有特点,它和Java一样,也运行于Java虚拟机中。

学习 Groovy(http://docs.groovy-lang.org/
Groovy官网的介绍(http://www.groovy-lang.org/download.html#gvm
Gradle从入门到实战 - Groovy基础- http://blog.csdn.net/singwhatiwanna/article/details/76084580
  Groovy有时候又像一种脚本语言。当我执行Groovy脚本时,Groovy会先将其编译成Java类字节码,然后通过Jvm来执行这个Java类。groovy和shell脚本,或者python好类似。Groovy除了可以直接使用JDK之外,Groovy还有一套GDK,网址是http://www.groovy-lang.org/api.html。

-- Groovy中的容器类很简单,就三种:
 List:链表,其底层对应Java中的List接口,一般用ArrayList作为真正的实现类。
 Map:键-值表,其底层对应Java中的LinkedHashMap。
 Range:范围,它其实是List的一种拓展。


-- 闭包是groovy中最重要的概念之一. 简单地说闭包(Closures)是一段代码块. 这个代码块可以接受参数并具有返回值. Groovy中的容器类。  Groovy非常重要的是闭包。闭包,英文叫Closure,是Groovy中非常重要的一个数据类型或者说一种概念了。

   Groovy只接受一个参数,这个参数在代码块中可以用it代替:
def myClosure = {String str -> println str }  
//execute our closure  
myClosure('Hello world!')  
output: Hello world!  

   Groovy接受多个参数的闭包的例子:
def myClosure = {String str, int num -> println "$str : $num" }  
//execute our closure  
myClosure('my string', 21)  
output: my string : 21 
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值