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
这涉及到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’
新闻热点
疑难解答