为什么上大家唱衰Android开发呢?
其实这很好理解,你看,技术是在更新换代的,时代是在进步的,以前吃生肉,然后会生火,后来用蒸汽电器,互联网一点一点在进步。所以哪里会有一招鲜吃遍天的事情呢?以前的DBA很厉害,10年的诺基亚也很厉害,13年的 Android 也很厉害,这两年的区块链也很厉害,这些都是众所周知的对吧。
但现在的DBA呢,现在的诺基亚开发呢,现在的Android 和 IOS 呢?
历史总是惊人地相似。
是的,任何一门技术,都是一定会被淘汰掉的。
这世界上有不死的人么?
听起来好像有点惨烈,但你必须接受这个现实,因为接受事实是第一步。生活总归是有希望的,在这样惨烈的背景下也还是有我们能做的事。你看身边好像还是会有那么一些人,挖煤挖了几十年还在挖。如果你觉得挖煤还不错,想好好挖这个煤那就要虚心学习那些老挖煤工人赖以生存的技巧。
当当当当,诸位看官请听我娓娓道来。
呔!谁会需要挖煤工?
啊,老板需要挖煤工!
老板要的,你给不了那又如何?
被淘汰呀被淘汰!
那为何有煤工挖了数十年?
因为什么煤都能挖呀都能挖!
为何什么煤都能挖?
对呀,为何他什么煤都能挖呢?
原来,永葆青春的秘诀就是:基础!
这应该是老生常谈的东西了吧,但好像只是"基础"两个字起不到任何帮助,所以我详细说说。
就以 Android 来说,属于移动端,你看Android,IOS,现在又出来一堆RN(当然,现在已经凉了 :D ),weex, flutter之类的东西。
前端的东西一年三变(这里的前端指包括移动端在内的大前端),你没有自己的判断,很容易就会迷失在一堆杂乱无章的 “设计模式”,“设计思想” 里,不知道什么是重点,然后被一堆技术忽悠忽悠得云里雾里,不知道要学什么东西。
我打个比方,你在看Android的源码分析,实际上也就可以看到,他里面各种各样的View的工作原理实际上就是在一个叫 Canvas 的东西上用 Rect 之类的控件来画画,(这里我们不考虑动画之类的东西,因为其实动画也可以用 Canvas 做)。
嗯,这就是最精炼的Android绘制原理了。
其实 Flutter 里面也有同样的 Canvas,甚至你写 Web 前端也有一样的 Canvas,同样的名词出现在不同的地方,这是为什么?这个 Canvas 代表什么东西?
如果你基础 OK,就会知道,计算机显示的原理实际上就是在一块内存区输出数据。这个Canvas 你可以看做就是提供给 “高级程序员” 的接口。
如果你学 Android 不妨把它 Canvas 如何工作,常用的第三方库原理是什么,比如有些框架是做自适应的,他是怎么做到的?
造两个轮子,然后你就会知道 Android 里面设计有哪些是比较野鸡的了(抱歉,我居然说出了如此大逆不道的话 >_<)。
顺便想下原生的 Animation 是怎么回事,除了绘制,还有按键,触摸这些事情他是怎么做的,偶尔看看源码(其实源码是最不重要的,当然,这话要等你至少看过一套源码了才能这么说),看看书。然后你可以玩玩 Flutter,对比下 RN,做点东西,然后下一份工作你就不再投 “Android 开发” 岗,而是 “移动端开发负责人”,只要操作适宜,应该是可以过的。
当然,学习的时候很多东西都需要良好的计算机基础,而且需要花一些时间,当然其实也花不了多少时间。
小小的总结一下,正确的思路就是:
不要纠结他是 Android 还是 Bdroid,你要关心的是解决了什么问题
绘制,输入,操作(按键触摸),电量,IO,网络,每一个话题下都有无数细节:绘制层级/ 重复绘制,bitmap占用,预加载。
学习么,要学总是有很多东西可以学的。
学习方向
目前我们要做的就是选好自己细分领域深入研究,对基础原理性内容深入理解,尽快向高级水平靠近并达到。当然也要了解新技术,拥有开放的心态去学习一些新技术,不要一开始出来一个新技术就转入学习,这样会导致啥都会一点啥都不会,当然新技术是有一个发展过程的,不会立马流行和大量应用等它稍微成熟点。
这样你会少踩很多坑,也不要排斥它,完全不去理会和了解学习,正确的方式是简单了解这个技术产生是为了解决什么问题,有什么优缺点已经目前发展成熟度和应用范围,我们还是要多抓住技术的本质和基础,这样出现了新技术学起来也会很轻松,当然机会合适了再去学习它。 所以,找准自己的定位及细分领域。
这里我归类了如下几类:
1、应用层开发,不限于各种产品,主要还是Android原生开发,主要是各种性能优化。
2、嵌入式开发,不限于各种开发板子,物联网,智能家居,车联网/车载。
3、安全开发,不限于各种反逆向,反汇编,寻找安全漏洞。
4、音视频开发,不限于直播、点播、音视频通话、音视频会议,短视频等。
5、插件化、组件化、热修复开发,不限于自研和使用开源框架集成开发。
6、系统开发(Android),不限于Rom维护和FrameWork层定制需求。
7、图形图像开发,不限于OpenGL ES,EGL,GLSurfaceView,滤镜,美颜。
8、小程序 / 快应用
小程序是基于微信这个亿级流量入口所衍生出来的产品,而快应用,快应用是九大手机厂商基于硬件平台共同推出的新型应用生态。用户无需下载安装,即点即用,享受原生应用的性能体验,不过个人觉得,他已经凉凉了,小程序倒是挺看好的,腾讯这座大山,微信这座凉亭,你想不凉快都难,不过看你是否刚需,比如你公司有需求,那你可以去学习。
推荐学习的新技术,Flutter和Kotlin,这两个都是Google推荐的。
系统学习很难吗?
自己去制定系统的一个学习计划可能是比较难的,所以文章最后我给大家准备了一份系统的学习思维导图,还有相关的学习资源,这些资料也都是我开发这么多年一点一点的累积整理出来的,今天完全无偿的分享给大家就是想今年寒冬我们程序员能好过一点,希望大家都能工作顺利,事业有成。
首先是超级详细得不能再详细的Android开发学习思维导图,因为图片实在是太大了,所以我就只把二级目录的内容放出来,更加详细的你们可以私信我获取。
接下来就需要梳理知识,提升储备了!(Android移动架构师七大专题学习资源)
-
**架构师筑基必备技能:**深入Java泛型+注解深入浅出+并发编程+数据传输与序列化+Java虚拟机原理+反射与类加载+动态代理+高效IO
-
**Android高级UI与FrameWork源码:**高级UI晋升+Framework内核解析+Android组件内核+数据持久化
-
**360°全方面性能调优:**设计思想与代码质量优化+程序性能优化+开发效率优化
-
**解读开源框架设计思想:**热修复设计+插件化框架解读+组件化框架设计+图片加载框架+网络访问框架设计+RXJava响应式编程框架设计+IOC架构设计+Android架构组件Jetpack
-
**NDK模块开发:**NDK基础知识体系+底层图片处理+音视频开发
-
**微信小程序:**小程序介绍+UI开发+API操作+微信对接
-
**Hybrid 开发与Flutter:**Html5项目实战+Flutter进阶
知识梳理完之后,就需要进行查漏补缺,所以针对这些知识点,我手头上也准备了不少的电子书和笔记,这些笔记将各个知识点进行了完美的总结。
然后再是通过源码来系统性地学习
只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。
真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。
再阅读前辈的一些技术笔记,帮助提升
刷大厂面试题备战,增加大厂通过率
最后:学习总结——Android框架体系架构知识脑图(纯手绘xmind文档)
学完之后,若是想验收效果如何,其实最好的方法就是可自己去总结一下。比如我就会在学习完一个东西之后自己去手绘一份xmind文件的知识梳理大纲脑图,这样也可方便后续的复习,且都是自己的理解,相信随便瞟几眼就能迅速过完整个知识,脑补回来。
下方即为我手绘的Android框架体系架构知识脑图,由于是xmind文件,不好上传,所以小编将其以图片形式导出来传在此处,细节方面不是特别清晰。但可给感兴趣的朋友提供完整的Android框架体系架构知识脑图原件(包括上方的面试解析xmind文档)
除此之外,前文所提及的Alibaba珍藏版 Android框架体系架构 手写文档以及一本 《大话数据结构》 书籍等等相关的学习笔记文档,也皆可分享给认可的朋友!
——感谢大家伙的认可支持,请注意:点赞+点赞+点赞!!!
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门,即可获取!
系架构知识脑图原件(包括上方的面试解析xmind文档)
[外链图片转存中…(img-g5578Zjc-1715412674890)]
除此之外,前文所提及的Alibaba珍藏版 Android框架体系架构 手写文档以及一本 《大话数据结构》 书籍等等相关的学习笔记文档,也皆可分享给认可的朋友!
——感谢大家伙的认可支持,请注意:点赞+点赞+点赞!!!
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门,即可获取!