2024年Android最新Android Gradle 干货(1),阿里三面通过率

最后送福利了,现在关注我可以获取包含源码解析,自定义View,动画实现,架构分享等。
内容难度适中,篇幅精炼,每天只需花上十几分钟阅读即可。
大家可以跟我一起探讨,有flutter—底层开发—性能优化—移动架构—资深UI工程师 —NDK相关专业人员和视频教学资料,还有更多面试题等你来拿

录播视频图.png

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

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 = “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处使用<<运算符在列表末尾追加一个元素

其他

String a = ‘23’

int b = a as int

def c = a.asType(Integer)

assert c instanceof java.lang.Integer

文末

很多人在刚接触这个行业的时候或者是在遇到瓶颈期的时候,总会遇到一些问题,比如学了一段时间感觉没有方向感,不知道该从那里入手去学习,对此我整理了一些资料,需要的可以免费分享给大家

这里笔者分享一份自己收录整理上述技术体系图相关的几十套腾讯、头条、阿里、美团等公司2021年的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。

【视频教程】

天道酬勤,只要你想,大厂offer并不是遥不可及!希望本篇文章能为你带来帮助,如果有问题,请在评论区留言。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

在遇到瓶颈期的时候,总会遇到一些问题,比如学了一段时间感觉没有方向感,不知道该从那里入手去学习,对此我整理了一些资料,需要的可以免费分享给大家

这里笔者分享一份自己收录整理上述技术体系图相关的几十套腾讯、头条、阿里、美团等公司2021年的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。

[外链图片转存中…(img-kQmGlKEk-1714959021141)]

[外链图片转存中…(img-hT1I7DiN-1714959021141)]

【视频教程】

[外链图片转存中…(img-5xY6vWNU-1714959021141)]

天道酬勤,只要你想,大厂offer并不是遥不可及!希望本篇文章能为你带来帮助,如果有问题,请在评论区留言。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 26
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值