2020 Android 进阶之路,“从风口看将来,以架构赢世界”

过去十年是移动互联网蓬勃发展的黄金期,相信每一个人也都享受到了移动互联网红利,在此期间,移动互联网经历了曙光期、成长期、成熟期、如今来讲已经进入饱和期。依然记得在 2010-2013 年期间,从事移动开发工做不知有多火,有工做 1-2 年经验的开发者薪资基本是上万,对招的人专业素质要求也不高,入门便可。从 2016 年末至今来看,局面而是另一番景象,移动开发市场过分饱和,市场上充斥着太多初级开发者,网上一直流传着移动互联网的寒冬,不少开发者找工做都没之前好找,一些岗位经常面临着凤毛麟角景象,没有个三五年经验,如今 HR 都是刷刷的翻过。前端

那么不由要反问一句,如今从事移动开发,不管是 Android 仍是 IOS,将来还有发展空间吗?还有随着移动开发愈来愈向大前端靠拢,甚至本来一些属于原生开发者的岗位也被前端开发人员胜任,想一想在原本拥挤的房间里,还要分割原本属于本身那么点空间给他人用,变得更拥挤了,那滋味确定是很差受了,那么将来咱们的容身之地又在哪里呢?面试

笔者是从 2013 年末开始从事移动开发,刚毕业那么仍是从事服务端开发,写着.NET 技术栈代码,至今也有接近 5 年的经验了。我想说,若是仅仅停留在表面的框架上,仅仅停留在使用别人的轮子上,而对于里面实现机制和原理不求甚解的话,那是很容易被淘汰的。可是若是,在移动开发上有一门深度的技能,好比在 Android 中你对移动架构有必定独特的看法,在性能优化上有必定的造诣,对于Android 系统体系有着清晰的认知,而且在一个行业积累了丰富的行业经验,也是亮点所在,那基本就是属于吃香的类型了。因此简单来讲,对于一个概念不能停留在使用层面,要深刻研究里面构造如何,为什么会有这么一个概念,若是没有这个概念,那又会是呈现什么样的局面呢?开发编程也是同样,要追寻的是编程的道,而不是编程的术,别看如今各类流行框架大行其道,要是深刻研究下去,一层一层拨开,你也会惊讶里面的实现机制无外乎就那么几种,套来套去,只不过一些开源库做者或组织封装的好而已。算法

基于目前市场表现,咱们都知道下一个风口是 AI,可是做为一个移动开发者如何在即未来临的 AI 时代吃口红利呢。个人回答是:致力于作一个终身学习者,追本溯源去探寻代码世界哪些不变的道,你又会说了,哪些是道呢,简单举例下,好比编程思想、经常使用的设计模式、设计原则、算法和数据结构、网络通讯机制、操做系统、重构原则、架构思惟等等。同时在目前发展情形下,也愈来愈趋向全栈工程师的路线,借用以前在网上看到一篇文章的图,想进阶全栈工程师之路看须要哪些技能,以下:编程

从图中能够看到技能被分红基础软技能、技术软硬技能,不只要熟悉移动端开发套路,还要对大前端技术栈也有必定要掌握,同时对于服务端开发流程也要了解,咱们不少从事移动开发人员,基本一开始就是从移动端入手,对于服务端开发不少时候是没有概念,这些跟那种从服务端开发转型作移动开发相比起来就处于必定的劣势了,有些甚至不知道 Restful 是什么,还觉得是一种框架呢,其实这仅仅只是服务端约定好的接口编码风格而已。设计模式

进阶之路

为什么会想起写这么一篇文章呢,一方面这几天工做须要,组内正好想规划 2020 年 Android 技术路线,简单来讲就是目前咱们组处在什么样的水平程度,目前所作项目用的技术处在什么阶段,在将来一年内,项目技术迭代该如何走,走到什么程度。另外一方面是从事 Android 开发这几年,一直也没好好规划本身的技术路线,想认真整理下将来进阶之路。咱们都知道 Android 技术体系一直很庞大,刚开始学的时候基本是从一个点一个点开始,没有系统全局观概念,同时也是学不过来,从作上层应用开始,到作 Framework 层,而后再到系统层作驱动开发各个层面的开发者都有,绝大部分开发者都是从应用层开发,每每作到 Framework 层就浅尝辄止了,一直以来,作Android 开发有这么两个说法,若是是作应用开发,往应用架构方向发展比较合适,若是是作系统层开发,每每底层驱动比较合适。浏览器

看张图:安全

挑些图中几个点简单来谈谈本身的一些想法。性能优化

移动架构

移动架构是 2017 移动技术年度TOP5话题之一,从中就体会到架构是有多火,记得刚开始学 Android 时候,哪有如今那么框架,那时候谈架构的更可能是在服务端开发,好比多层架构,有展现层、业务逻辑层、数据访问层这就是最简单的三层模式,Android系统则是基于事件驱动响应机制设计的单页面架构,其实跟浏览器中的窗口页面是同样的, 系统中一直有个消息轮询监听机制,哪一个事件被触发了,相应的响应代码进行处理,这些处理操做是被提早注册到系统中。服务器

最先开始的开发模式基本是基于Android 系统自带 MVC 模式,Activity 基本相似于Control 的做用了,View 和Mode 互相耦合,后来才演化出如今主流的 MVP、MVVM 模式,顺便提一句,MVVM 模式实际上是在微软 WPF 技术体系中提出来。微信

图中显示两个方面:

展现层: MVC、MVP、MVVM、Clean、Flux、Android Architecture Components

架构层:模块化->组件化->插件化->沙盒/双开技术,好比能够双开微信,相似Docker, 每一个页面都是插件,相似Vue.js中每一个页面都是组件。

性能优化

简单来讲,一个APP 是须要从三个方面被关注的,业务功能、符合逻辑的交互、性能响应。若是咱们在使用一个 APP 时候,常常滑动时常常卡顿、时不时崩溃、有些功能设计简直很是规,好比在 Web 网站有树层级等面包屑点击,你非要在手机也搞一个相似树级点击加载,那是否是有点强人所难了,我上拉下拉、左滑右滑不行吗,非要经过点击才行吗?那么性能优化核心是什么呢?追求快、稳、省、小,关注卡顿、内存泄漏和崩溃、代码质量和逻辑、安装包大小四个方面。想进一步的了解的话,能够查阅下这篇文章《Android APP 性能优化的一些思考》

APP安全

APP从代码安全、到传输安全,再到存储安全。代码能够经过混淆、加固来保证、传输安全基本基于加密算法和Token来保证传输的惟一性、存储应用不可逆加密算法进行设置、因此掌握一些密码学理论尤其重要,起码要知道哈希散列算法,对称加密和非对称加密等一些常见的加密算法。

基础进阶

咱们日常在工做中碰到的View滑动冲突问题、其实经过掌握View工做机制和Android触摸事件体系就能轻易解决掉,常看法决方式有外部拦截法和内部拦截法,基于横坐标滑动距离与纵坐标滑动距离相减得出的值,判断出是左右滑动仍是上下滑动。还有对于须要开发绚丽的动画效果,那么对于视图动画和属性动画一些特性必须有必定的了解。JNI 和 NDK 开发也是比较常见,特别对于一些作 SDK 项目为主的,这一块开发流程也是须要掌握,Android 中的四大组件工做机制其实底层应用的是Binder机制,咱们不妨从 AIDL 这个接口来了解 Binder。

持续集成

持续集成编译环境是敏捷开发中很重要的一个组成部分,它可以有效地提升整个团队的生产效率,最大化的减小人为的出错的可能。好比,经过代码的持续提交,能够减小代码合并的痛苦,更快地与其余人代码集成,经过集成编译,可以及早地发现代码库存在的错误,并支持产品、测试等人员及时取包进行功能验证,因此对于Git、Gradle工具、Jenkins服务器须要掌握起来。

开发语言

19年能够说是 Kotlin 年,在 Google IO 以后 Kotlin 着实风光了一把,开发者对于效率的追求是 Kotlin 如此受欢迎的最大缘由,而它的势头也很不错,跨平台的野心让更多人有了使用它的理由,现在看起来,它甚至比 Swift 更有前途。既然 Kotlin 已然成为 Android 世界的头等公民,与 Java 彻底兼容,咱们有什么理由不去拥抱它呢。

大前端

其实移动端开发也是属于前端开发,只不过原来咱们所指的前端每每都是Web的前端开发人员,开发的是网站,而移动端未尝不是一种展现载体,一样有入口,只不过相比网站端移动端具体自然的可移动性、可便捷性等特性。随着 H5 兴起,原生能实现的功能一样在 H5 端也能实现,而且在体验性方面也逐渐提升,而且H5天生就具备动态性和跨平台,这也是 H5 可以一时潮流的缘由之一。

设计原则

这些设计原创才是本质,才是不变的,才是咱们须要真正要掌握的,开发语言特性、开发框架发展实在是太快了,咱们更不上,不是有这么一句话吗,封装具体变化的,抽象起来就行,去追寻哪些不变的内容。掌握一种设计模式其实也就掌握一种解决方案,这些都是前人总结的知识结晶,基本都是基于特定领域解决特定的问题,咱们须要学会在前人肩膀上解决问题。

服务端开发

最近微服务火的一塌糊涂,虽然咱们基本是作移动端开发,可是基于全栈发展的趋势,对于服务端开发势必要了解,可能没有实战项目让你真刀真枪的干,可是对于微服务的结构理论、服务与服务之间通讯、聚合是什么样的流程也是须要有所耳闻,在本身擅长领域深刻专研的同时横向扩展关注也是须要的,不能关起门来闭门造车,两耳不闻窗外事那是不行的。

阅读源码

对于Android源码和第三方库源码阅读,能够根据本身感兴趣的类型,选择相应的源码库或模块,给本身约定一个时间点,看完以后最后有个流程图,哪些是核心类,类与类之间都有什么关系,这些开源代码实现的机制是什么,用到哪些解决思想,这些要点最终能够经过文章输出,我以为输出倒逼输入是一种很不错的学习方式。

移动AI

AI,也称人工智能,1956年,在达特茅斯学院举行的一次会议上正式确立了人工智能的研究领域。会议的参加者在接下来的数十年间是AI研究的领军人物,他们中有许多人预言,通过一代人的努力,与人类具备同等智能水平的机器将会出现。如今来看AI这个概念很早就存在了,以前没发展很大缘由是基础设施不够完善、研究成本高,如今可以大力发展是基于咱们的网络带宽变大、计算机性能提高、计算成本下降等等因素备齐了。AI是须要经过算法来落地,那么对于算法理论背景就是数学,因此想进阶AI开发,就须要去学习相关数学知识,特别是线性代数和几率论这两门,是支撑不少算法的理论知识。

Android学习PDF+架构视频+面试文档+源码笔记

小结

总的来讲,技术发展能推进社会的进步,解放生产力,进而提升人的社会生产效率,创造价值。技术落地是须要商业应用场景配合,如何配合呢,就是经过每一个不一样商业模式来实现。最终一门技术是须要与具体使用业务紧密结合起来,若是脱离技术谈业务显得空洞,脱离业务谈技术显得偏理论,最好是二者相结合。这也就要求咱们这些从事软件开发人员在追求技术积累的同时要注重业务积累,让业务驱动技术发展,用技术手段来解决实际业务问题,在技术积累中,辨别哪些是不变的道,哪些又是一时流行的而已,这就须要练就一双火眼金睛了。


在这也分享一份大佬本身收录整理的 Android学习PDF+架构视频+面试文档+源码笔记 ,还有高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料帮助你们学习提高进阶,也节省你们在网上搜索资料的时间来学习,也能够分享给身边好友一块儿学习

若是你有须要的话,能够点赞+评论关注我加Vx:15388039515(备注思否,须要进阶资料)

相关文章
相关标签/搜索