写点什么

Android Gradle 干货,sharedpreferences 跨进程

用户头像
Android架构
关注
发布于: 刚刚

def Task hello=task(hello,group:BasePlugin.BUILD_GROUP)


hello.doLast{


println "hello world"


}


1.3.TaskContainer 的 create 方法创建。


tasks.create(name: 'hello') << {


println "hello world"


}


1.4 通过上面 dsl 语法创建


2、任务依赖


任务依赖会决定任务运行的先后顺序,被依赖的任务会在定义依赖的任务之前执行。创建任务间的依赖关系如下所示。


task hello << {


println 'Hello world!'


}


task go(dependsOn: hello) << {


println "go for it"


}


在 hello 任务的基础上增加了一个名为 go 的任务,通过 dependsOn 来指定依赖的任务为 hello,因此 go 任务运行在 hello 之后。


3、动态定义任务


动态定义任务指的是在运行时来定义任务的名称


3.times {number ->


task "task$number" << {


println "task $number"


}


}


times 是 Groovy 在 java.lang.Number 中拓展的方法,是一个定时器。3.times 中循环创建了三个新任务,隐式变量 number 的值为 0,1,2,任务的名称由 task 加上 number 的值组成,达到了动态定义任务的目的。


运行 gradle -q task0 构建脚本


4、任务的分组和描述


Gradle 有任务组的概念,可以为任务配置分组和描述,以便于更好的管理任务,拥有良好的可读性。


task hello {


group = 'build'


description = 'hello world'


doLast {


println "任务分组: ${group}"


println "任务描述: ${description}"


}


}


task go(dependsOn: hello) << {


println "go for it"


}

Gradle 日志级别

级别 用于


ERROR 错误消息


QUIET 重要的信息消息


WARNING 警告消息


LIFECYCLE 进度信息消息


INFO 信息性消息


DEBUG 调试消息


前面我们通过 gradle -q +任务名称来运行一个指定的 task,这个 q 是命令行开关选项,通过开关选项可以控制输出的日志级别。


开关选项 输出日志级别


无日志选项 LIFECYCLE 及更高级别


-q 或者 --quiet QUIET 及更高级别


-i 或者 --info INFO 及更高级别


-d 或者 --debug DEBUG 及更高级别

Gradle 命令行

Gradle 的语法

1、声明变量


Groovy 中用 def 关键字来定义变量,可以不指定变量的类型,默认访问修饰符是 public。


def a = 1;


def int b = 1;


def c = "hello world";


2、方法


方法使用返回类型或 def 关键字定义,方法可以接收任意数量的参数,这些参数可以不申明类型,如果不提供可见性修饰符,则该方法为 public,如果指定了方法返回类型,可以不需要 def 关键字来定义方法,如果不使用 return ,方法的返回值为最后一行代码的执行结果。


用 def 关键字定义方法。


task method <<{


add (1,2)


minus 1,2 //1


}


def add(int a,int b) {


println a+b //3


}


int minus(a,b) {


return a-b


}


3、类


Groovy 类非常类似于 Java 类。


task method <<{


def p = new Person()


p.increaseAge 5


println p.age


}


class Person {


String name


Integer age =10


def increaseAge(Integer years) {


this.age += years


}


}


Groovy 类与 Java 类有以下的区别:


默认类的修饰符为 public。


没有可见性修饰符的字段会自动生成对应的 setter 和 getter 方法。


类不需要与它的源文件有相同的名称,但还是建议采用相同的名称。


4、语句


(1) 断言


Groovy 断言和 Java 断言不同,它一直处于开启状态,是进行单元测试的首选方式。


task method <<{


assert 1+2 == 6


}


(2)for 循环


Groovy 支持 Java 的 for(int i=0;i<N;i++)和 for(int i :array)形式的循环语句,另外还支持 for in loop 形式,支持遍历范围、列表、Map、数组和字符串等多种类型


//遍历范围


def x = 0


for ( i in 0..3 ) {


x += i


}


assert x == 6


//遍历列表


def x = 0


for ( i in [0, 1, 2, 3] ) {


x += i


}


assert x == 6


//遍历 Map 中的值


def map = ['a':1, 'b':2, 'c':3]


x = 0


for ( v in map.values() ) {


x += v


}


assert x == 6


(3)switch 语句


task method <<{


def x = 16


def result = ""


switch ( x ) {


case "ok":


result = "found ok"


case [1, 2, 4, 'list']:


result = "list"


break


case 10..19:


result = "


《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
浏览器打开:qq.cn.hn/FTe 免费领取
复制代码


range"


break


case Integer:


result = "integer"


break


default:


result = "default"


}


assert result == "range"


}


5、数据类型


Groovy 中的数据类型主要有以下几种:


Java 中的基本数据类型


Groovy 中的容器类


闭包


(1)字符串


在 Groovy 种有两种字符串类型,普通字符串 String(java.lang.String)和插值字符串 GString(groovy.lang.GString)


def name = 'Android 进阶之光'


println "hello ${name}"


println "hello $name"


task method <<{


def name = '''Android 进阶之光


Android 进阶解密


Android 进阶?'''


println name


}


(2)List


Groovy 没有定义自己的集合类,它在 Java 集合类的基础上进行了增强和简化。Groovy 的 List 对应 Java 中的 List 接口,默认的实现类为 Java 中的 ArrayList。


def number = [1, 2, 3]


assert number instanceof List


def linkedList = [1, 2, 3] as LinkedList


assert linkedList instanceof java.util.LinkedList


task method <<{


def number = [1, 2, 3, 4]


assert number [1] == 2


assert number [-1] == 4 //1


number << 5 //2


assert number [4] == 5


assert number [-1] == 5


}


def name = [one: '魏无羡', two: '杨影枫', three: '张无忌']


assert name['one'] == '魏无羡'


assert name.two == '杨影枫'


注释 1 处的索引-1 是列表末尾的第一个元素。注释 2 处使用<<运算符在列表末尾追加一个元素

用户头像

Android架构

关注

还未添加个人签名 2021.10.31 加入

还未添加个人简介

评论

发布
暂无评论
Android Gradle 干货,sharedpreferences跨进程