20分钟掌握Android Gradle,2024年最新银行软件开发面试题目及答案

println "hello "

}

task world(dependsOn: “hello”) << {

println “world”

}

上面这段代码定义了两个task,当我们执行hello任务的时候,会输出 hello,而执行world任务的时候,由于声明了dependsOn: "hello",表示world依赖hello,会先执行hello,再执行world。

task xxx << {

}

这样的语法等价于

task xxx

xxx.dolast {

}

你可以在任意位置新建一个名为build.gradle的文本,来练习上面讲述的task定义与依赖。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9rCa6pLz-1614069914710)(https://upload-images.jianshu.io/upload_images/24944255-70205e09a71a2008.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]

接着讲 Project


Android

├──app

│ └──build.gradle

├──library

│ └──build.gradle

├──*.properties

├──build.gradle

└──setting.gradle

一个 Android 工程,通常是由上述结构构成,其中有着许多不为人知的巧妙用法。

setting.gradle文件

关于setting.gradle中也可以写代码,是很多人不知道的。如下代码是我在上一篇文章【企业级 Android 模块化平台设计建议】中讲到的一个例子,在setting.gradle文件中,可以指定一个project位置,这里就可以将一个外部工程中的模块导入到APP工程中了。

getLocalProperties().entrySet().each { entry ->

def moduleName = entry.key

if (Boolean.valueOf(entry.value)) {

def file = new File(rootProject.projectDir.parent, “/ m o d u l e N a m e . r e p l a c e ( " W " , " " ) / {moduleName.replace("\\W", "")}/ moduleName.replace("W","")/{moduleName.toLowerCase()}”)

if (file.exists()) {

include “😒{moduleName.toLowerCase()}”

project(“😒{moduleName.toLowerCase()}”).projectDir = file

}

}

}

build.gradle

一个项目的根gradle文件,用于描述这个项目的统一资源,其中包括各子资源的使用方式、插件的依赖环境等等。

subprojects{

apply plugin: ‘com.android.library’

dependencies {

compile ‘com.xxx.xxx:xxx:1.0.0’

}

}

通常我们在每个模块都会引用的 aar 的时候,都会在每个模块里面都去手动的compile一遍,例如support包。 但实际上有一个非常简单的办法,写一遍就可以了,就是在项目的根gradle文件中的subprojects闭包中声明这个dependencies

通常在写compile依赖的时候,我们都会写成这样:

compile ‘com.android.support:appcompat-v7:25.0.0’

其实在gradle中,这是一个方法调用,它的本质是compile()方法传入了一个map参数,因此完整的写法实际上是这样的:

compile group: ‘com.android.support’ name:‘appcompat-v7’ version:‘25.0.0’

同时,map 的可使用 key 不只是有常用的groupnameversion,还包括不常用的configurationclassifier等等。

再看Task

Groovy 是基于 Java 的,只不过在这基础上加了一大堆的闭包,来帮助更方便的开发构建脚本。如果你不会 Groovy,没关系,当成 Java 写就行了,其实当成 Kotlin 写是最恰当的。如果你还不会 Kotlin,我强烈推荐你查看我的 【 Kotlin Primer 】系列文章

每个Task都可以配置其输入与输出,如果一个Task的输出与上一次的输出一致,则不会重复执行。此刻,会在命令行中输出UP-TO-DATE表示已经是最新的结果。

例如如下Task:

task transform {

ext.srcFile = file(‘hello.txt’)

ext.destDir = new File(buildDir, ‘generated’)

inputs.file srcFile

outputs.dir destDir

doLast {

destDir.mkdirs()

def ins = new BufferedReader(new FileReader(srcFile))

def stringBuilder = new StringBuilder()

def temp

while ((temp = ins.readLine()) != null) {

stringBuilder.append(temp)

}

def destFile = new File(destDir, “world.txt”)

destFile.text = stringBuilder.toString()

}

}

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
img

面试复习笔记

这份资料我从春招开始,就会将各博客、论坛。网站上等优质的Android开发中高级面试题收集起来,然后全网寻找最优的解答方案。每一道面试题都是百分百的大厂面经真题+最优解答。包知识脉络 + 诸多细节。
节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。

《960页Android开发笔记》

《1307页Android开发面试宝典》

包含了腾讯、百度、小米、阿里、乐视、美团、58、猎豹、360、新浪、搜狐等一线互联网公司面试被问到的题目。熟悉本文中列出的知识点会大大增加通过前两轮技术面试的几率。

《507页Android开发相关源码解析》

只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。

真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img
只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。

真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。

[外链图片转存中…(img-nXlRv7xj-1712678405875)]

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

  • 10
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值