Gradle for Android
来源:互联网 发布:如何更改mysql的密码 编辑:程序博客网 时间:2024/05/29 10:03
- Introduction
Groovy is derived from Java and runs on the Java Virtual Machine.
Gradle使用的语言是基于Groovy的DSL(Domain-Specific Language)。Groovy是为JVM所设计的动态语言。
Projects和tasks是Gradle中两个最重要的概念。每一个build都是由至少一个Project组成,每个Project中有若干个task。Task对象是由一连串的Action对象组成的,Action对象就是一个代码块。
所以执行Gradle的build实际上就是执行一连串的task,以Directed Acyclic Graph(DAG)这种先后执行无重复的方式进行。没有依赖的Task先于其他的执行。
一个Gradle build有三个阶段:
- Initialization:Projects的创建,一个带有build.gradle的module就是一个Project。
- Configuration:执行build脚本,创建并设置每个Project的tasks。
- Execution: Gradle决定执行哪个task,取决于开始build所传入的参数和当前目录。
buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:1.2.3' }}
上述代码把jcenter作为buildscript的依赖来源,jcenter是一种预先配置好的maven仓库。同时指明了依赖Android的build tool,因此就可以调用这个插件
apply plugin `com.android.application`
使用插件就可以在buildscript中调用插件定义的属性和task。Android插件中定义的是符合其需求的DSL。
Gradle中使用到一种概念叫做source set,即一组一起编译和执行的资源。比如main文件夹就是一个source set。
Java: System.out.println("hello world");
Groovy: println 'hello world'
Groovy和java的不同:没有分号、没有类名的命名空间、方法参数没有括号,直接空格隔开
Groovy普通字符串使用单引号,双引号用于带有可替换占位符的字符串,如果替换结果的表达式是方法或者带有多个变量,需要使用${},如果是单个变量直接前面加$即可。
示例:
def name = 'Andy'
def greeting = "Hello, $name"
def name_size = "Your name is ${name.size()} characters long"
插值字符串还可以实现执行动态代码,示例:
def method = 'toString'new Date()."$method"()
Groovy的类和成员变量
class MyGroovyClass { String greeting String getGreeting(){ return 'hello!' }}
注意类和成员变量都没有权限修饰符,Groovy中类和方法都是public的,成员变量都是private的。
def instance = new MyGroovyClass()instance.setGreeting 'Hello'instance.getGreeting()
Groovy中成员变量的getter和setter是默认自带的,也可以重写。如果调用instance.greeting,实际上就是调用instance.getGreeting()。
Groovy中方法不必声明返回类型,而且不必调用return这个关键字,会默认返回方法的最后一行。但是为了清楚起见,还是要加return比较好。调用方法时参数不必加括号。
public int square(int num){ return num * num;}square(2);
Groovy的写法:
def square(def num) { num*num}square 4
Groovy中closure的写法:
def square = { num -> num *num}square 8
Closures的概念:匿名代码块,可接受参数,可返回一个值
定义:可加Closure这个关键字
Closure square = { it * it}
Gradle中的android和dependencies就是closure。
closure如果没有声明参数,则会自动生成一个叫做it的无类型参数,在所有的closures中都可以使用,如果调用者没有指定任何参数,则it就是null。
Groovy中集合
创建List List list = [1,2,3,4,5]
遍历List
list.each() { element -> println element}
遍历的更简洁形式
list.each() { println it}
Map的定义 Map pizzaPrices= [margherita:10, pepperoni:12]
三种获取Map中的元素的方法 pizzaPrices.get('pepperoni')
或者 pizzaPrices['pepperoni']
又或者 pizzaPrices.pepperoni
- Gradle for Android
- Gradle For Android
- Gradle for Android
- Gradle For Android
- Gradle for Android
- Gradle For Android Training
- 【推荐】《Gradle for Android》
- gradle for android
- Gradle for Android
- Gradle for Android 系列
- Gradle for Android应用
- Gradle for Android
- Gradle for android
- Gradle for Android
- Gradle For Android
- Gradle for Android
- Gradle for Android
- gradle for android
- 开始博客 2017.05.09
- C++内置数据类型
- POJ
- maven多模块创建-简介(1)
- PAT 1009 乙等 (说反话)c++
- Gradle for Android
- PHP Laravel (Homestead)开发环境搭建
- opendir打开后显示的不全
- ES性能调优
- JDBC连接MySql
- 逆向工程核心原理学习笔记(二十二):栈帧9:调用printf()函数
- Coprime Sequence
- c++实现冒泡排序和快速排序
- MEASURING COMPUTER PERFORMANCE