您的位置:首页 > 移动开发 > Android开发

Android构建工具Gradle知识1

2017-02-24 16:37 316 查看
Android构建工具Gradle知识1

1.Groovy介绍

Groovy运行在Java虚拟机的动态语言。

Groovy编译成Byte Code运行在JVM上



2.Groovy开发环境

官网: http://www.groovy-lang.org

GDK: http://www.groovy-lang.org/api.html

2.1 基本知识

a.注释:单行 // 多行 /**/

b.可以不用分号结尾

c. 动态类型: 定义关键字def,可以省略(跟js很像)

def variable=1

def svar=”hello”

def int num=10 指定类型

d. 函数参数可以不指定类型

String test(arg1,arg2)

{

}

e.函数返回值可以无类型

def test2()

{

}

指定类型后不用加def

String getString()

{

return “再别康桥”

}

f.Groovy对String支持

def str=’I love ′单引号内容不对转义

def str2=”hi”

def str3=”I like say str2”输出Ilikesayhi双引号中有, $表达式求值

def str4=”“” 预备

开始

结束”“”

三引号 字符串支持随意换行

g.函数调用 可以不加括号

print(“hoho”) === print “hoho”

2.2 数据类型

2.2.1.基本数据类型

java中的包装类

2.2.2.容器类

Groovy的容器三种:

List:链表,底层对应List接口,一般用ArrayList作为实现类

Map: 键值表 底层对应java 中的LinkedHashMap

Range: 范围 List扩展

2.2.2.1. List

定义: 元素可以是任何对象

def list=[5,”mystring”,true]

不用担心越界问题

list[100]=10

长度:

list.size

2.2.2.2 Map

定义:

def map=[“key1”:”value1”]

key必须是字符串

key可以用” 或 “” 包起来

不加也识别成字符串

获取:

获得key map.keyName

获得的value map[“key1”]

map.anotherkey=dfadsfa”” 添加新元素

2.2.2.3 Range

List扩展

def arange=1…5

不包含最后一个元素的写法

def aarange=1..<5

输出头 aarange.from

输出尾 aarange.to

这涉及到Groovy一个原则

Groovy会采用java封装属性的方式,添加get、set方法

2.2.3 闭包(closure)

一种数据类型

def clo={

String param1,int param2->

println “this is code”

}

格式:

def xxx={parameters->code]

def xxx={无参数,纯code}

调用闭包:

闭包对象.call(参数)

闭包对象(参数)

注意:闭包没定义参数,会有默认参数it相当于java中的this

闭包注意点:

a.省略圆括号

函数最后一个参数是闭包可以省略括号

Public static List each(List self,Closure clo)

def ia=[4,5,6]

La.each{

println it

}

b.如何确定Closure参数

2.3 脚本类

Groovy中类及其变量默认public

通过groovy xxx.groovy调用

2.4 文件I/O操作

封装java的I/O类



a.读文件

def target=new File(文件名)

target.eachLine{

String.oneLine->println oneLine

}

b.获得文件内容

target.getBytes() 返回byte[]

也可以写成

target.bytes

c.使用InputStream

def is=target.newInputStream()

is.close

d. 使用闭包操作inputStream

不需要close

target.withInputSteam(

ism->

}

相关SDK地址:



e.写文件

<<输出 实现文件复制

def target=new File(文件名)

target.withOutPutStream{

os->srcFile.withInputStream{

ins-> os”<<(这块用<<就行,csdn识别有问题)”ins

}

}

<<对应 leftShift方法

2.5 XML操作

Groovy使用GPath解析XML文件



使用过程:

// 第一步,创建 XmlSlurper类

def xparser=new XmlSlurper()

def target=new File(“test.xml”)

//第二步,Gpath

GpathResult gpr=xparse.parse(targetFile)

//gpr 代表根元素response,通过e1,e2,e3可以访问各级子元素

def book4=gpr.value.books.book[3]

//得到book4的author元素

def author=book4.author

//获取元素属性 和 值

assert author.text()==’Manuel De Cervantes’

//获得属性

author.@id=’4’ 或者

Author[‘@id’] ==’4’

//属性一般是字符串,可以通过toInteger转换成整数

author.@id.toInteger()==4

在android中的使用

获取AndroidManifest.xml中的版本号

Def af=new XmlSlurper().parser(“AndroidManifest.xml”)

Println af[‘@android:versionName’]

或者

Println af.@’android:versionName’
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息