作者
曹立成本文经授权转自InterestDriven(ID:helloandroid)
我是一名Android开发者。从年下半年开始,就开始听到各种言论,例如“Android开发凉凉”、“移动端开发没出路了赶紧转行”、“要被XXX替代了”等等,充分反映了大家焦虑的心态。
移动端开发真的要凉凉了吗?我也经常和朋友聊起这个话题,今天我决定写下自己的一些看法,供大家参考。
移动端开发的现状
移动端开发的现状是什么?我们可以从自己写的代码中寻找线索。以Android为例,很多大公司的移动端开发者写的最多的代码是这样的:
LinearLayoutlayout=newLinearLayout();layout.addView(xxxx);...
或者也许是这样的:
publicclassXXXViewextendsRelativeLayout{publicXXXView(Contextcontext){this(context,null);}publicXXXView(Contextcontext,
NullableAttributeSetattrs){this(context,attrs,0);}publicXXXView(Contextcontext,NullableAttributeSetattrs,intdefStyleAttr){super(context,attrs,defStyleAttr);initView();}privatevoidinitView(){LayoutInflater.from(getContext()).inflate(R.layout.xxxlayout,this,true);...}publicvoidsetData(XXXxxx){...}}又或者是对着xml标签做出各种骚操作——UI开发。
没错,如今移动端技术栈已经愈发趋于成熟完善,对业务来说,就连大公司的工程师也是在做UI的展示逻辑。大公司产品相对比较完善,后端管控了大部分业务逻辑,客户端做的就是取到后端的数据,然后通过setText(xxx)展示出来,然后通过接口返回的Boolean值来判断View显示还是隐藏。
我听到很多人说,工作几年感觉自己没什么提升,天天都在堆代码,随便找个刚毕业的学生也能分分钟替代自己,于是就很焦虑。那对于工作几年的人来说,要想尽可能不让自己过早的被替代、被淘汰,就需要选一个有潜力的有前景的领域深挖。
那么移动端开发的未来在哪里?
动态化
在聊动态化之前,我们先聊聊Android的插件化。
前两年,插件化火起来了。为什么火?因为可以实现Android应用不发版本的同时动态上线需求,同时热修复还可以动态的修复线上出现的bug。但是插件化存在最大的问题是什么呢?兼容性。Android机型太多太复杂,插件化框架难免会涉及到系统API的hook,兼容性问题就出现了,开发者会看到莫名其妙的错误上报上来却束手无策。
随着Android版本的迭代更新,插件化这条路越来越不好走,AndroidP给了开发者们一个信号:别随便hook系统API了,Google要开始收口整顿了。插件化这条路注定无法一直走下去,于是开发者们另辟蹊径。
最开始是继续用H5混合开发的方式,例如老牌Hybrid框架Cordova,但是性能不尽人意。这时候Facebook开发出了一个跨时代的框架:React-Native。它提供了一个全新的思路:通过jscore进行js解析,使用原生的View进行渲染,提供桥机制调用原生的能力。
React-Native是第一个真正的高性能的动态化框架,它的出现让Web前端和客户端的界限迅速变得模糊。随之而来的是各大公司的自研框架,例如阿里巴巴的Weex和美团点评的Picasso框架。React-Native只提供了Android和iOS的双端支持,Weex扩展了思路,提供的Web端的支持,一个是React语法糖,一个是Vue语法糖。Picasso又不一样,Picasso是纯TS,DSL语法树,写法实在太简单,又准备在三端的基础上提供小程序端的支持。
年GMTC大会上,Flutter发布了第一个预览版,阿里巴巴闲鱼团队已经在闲鱼APP中使用了Flutter技术。Flutter四年前开始开发,直到去年才有第一个beta版本。通过Dart编写APP,然后编译成机器码同时运行在Android和iOS上,做到了原生跨平台,HotReload,性能很不错,可定制性也非常强,连封装的系统层Dart代码都能改。提供了Web、iOS、Android、React-Native开发者学习Flutter的入门文档,也是去年移动端少数的几个比较火的热点之一。它的思路不同于React-Native,是一种全新的思路,目前我对Flutter持乐观态度。
支付宝的动态方式不同于以上所有,它是完全基于自己的H5容器进行Hybrid开发,不过由于内核也是自研的(UC内核),所以性能各方面都比原生的WebView好,支付宝里非常多的页面都是基于H5容器开发的,包括支付宝小程序,这也算是一种动态化的方式吧,只不过研发成本太高:自研WebView内核。
目前来看,动态化的三驾马车已经初步形成:
React-Native为首的jscore(v8)桥通信动态化方案;自研WebView内核,H5容器化方案;Flutter(我觉得Flutter正在发力争取第三驾马车的位置)。动态化改变了移动开发的方式,模糊了Web前端和客户端的界限,让越来越多的人认识了什么是“大前端”。如果有经验的开发者们对这个方向进行深入研究,五年内,应该不会被淘汰了(笑)。
移动端机器学习
毫无疑问,移动端机器学习从年年底就开始火起来了,TensorFlow也推出了移动端框架,很多应用都开始在移动端部署机器学习模型,例如相机类应用(FaceU)、电商类应用(唯品会)等,包括离线的机器学习。
如果深挖这个方向,我觉得十年内不会被淘汰。当然了,难度也不小。
ARVR
从支付宝的AR抢红包、QQ的AR踢球等玩法被越来越多的人体验,AR走进了人们的视野。对于广告引流玩法来说,AR无疑是能带来巨大收益的。
此前大众点评亲子上线了“亲子奇妙日”活动,就是基于大头儿子小头爸爸的AR玩法。那么开发AR引擎的移动开发者自然成了香饽饽,目前AR主要应用的领域还是广告变现,不过很多公司也找到了AR的一些落地场景,比如卖家具的电商公司可以通过AR技术让用户在购买之前就能看到实物在自己家里到底能不能放得下,这能极大的提升用户的购买体验。
如果是研究OpenGL、计算机图形学的移动开发者,可以往AR引擎开发方向发展,非常有前景。
VR同理。
移动端音视频
这个领域最火的产品当之无愧是抖音了,就连我自己都天天刷抖音。除了抖音,还有各大视频应用,都需要音视频开发领域的专业开发人员,图像处理、滤镜、裁剪等等骚操作都是需要专业的音视频开发知识才能做出来的,研究OpenGL、计算机图形学的移动开发者在这个领域也有很大的优势。
据我所知,这方面人才现在缺口依然很大,各大公司求贤若渴,如果在这方面有经验并且愿意深挖的同学,自然是各大公司的香饽饽啦。
移动端区块链
区块链,年最火的技术没有之一。
从人人都在谈比特币到人人都在谈区块链,可以看出区块链技术已经被越来越多人熟知。无数区块链公司如雨后春笋般的冒出,连大公司们也按捺不住开始涉足区块链领域。对于移动端来说,区块链应用最多的还是数字钱包。但是未来移动端区块链一定会有更多的落地应用,例如Status。区块链去年大火,移动端的区块链应用还没开始火,但是也不远了。
如果有移动开发同学对区块链方向感兴趣的,可以开始研究起来了。如果要学习智能合约开发的同学,我推荐一个非常好的网站:Cryptozombies,绝对是入门solidity智能合约开发的精品。
目前移动端的区块链人才还不多,各大公司也没有在招,但是两三年内,应该就会爆发了,现在还在探索落地场景的阶段,也给了对区块链技术感兴趣的移动开发同学学习的时间。改变世界的技术了解一下?
移动基础框架
UI未来可能都会被动态化技术接管,但是移动基础框架不会。但凡要开发一个APP,网络请求、日志处理、数据库处理、缓存、Push等框架都是不可或缺的,这部分和UI关系不大,又是APP的命脉所在。
只要APP存在,基础框架就存在。有同学可能要说了,我用ok