前言
2020年,移动互联网进入了下半场。
面对已经发展的相对成熟稳定的移动互联网市场,我们作为Android 开发者的下半场该如何打下去呢?
不少人都在焦虑,在担忧,自己到底要不要学Android?Android开发的方向在哪里?Android凉了吗?
今天就简单的谈一谈这个问题:Android开发的下半场该怎么打下去。
谈未来,先讲历史
为什么说已经进入了下半场呢?谈未来,先讲历史。
2005 年,Google 收购了成立不到两年的 Android 公司,经过三年多的研发,于 2008年推出了 Android 1.0 ,此时还是搭载塞班系统的诺基亚的天下,业界并不看好 Google 的 Android ,很多人认为最多一年 Google 就会放弃 Android。
2009 年, Android 1.5 出世,HTC G1 和 HTC G2 大卖,此时,国内已经有一批人开始写 Android 应用开发的入门教材了,尽管现在看来是多么没含量、官方文档一字不漏翻译甚至有翻译不当的教材,但是人家的确是抓住了时机赚了一把,也感谢这些人,让英文不佳的开发者快速入门。
2010 年,Android 2.3 面市,本人也是从这个版本开始拥有了第一台 Android 手机,开始接触 Android 开发,也就是这时开始 Android 手机的市场占有开始快速提升,在美国的市场占有率达到了 30%。而这时,有一个巨头开始在崩塌,它就是那个铃声都能让人幻听的诺基亚,一代手机帝国,轰然倒下了。
2011 年中,乔布斯生前的最后一部金典的产品 iPhone 4S 面市,把业界智能手机品质推到了一个新高度,当时的 Android 手机和 iPhone 比起来,无论是在工业设计还是运行速度、无论是稳定性还是安全性,Android 都是初生的婴儿。可惜 iPhone 太贵了,在当时看来 ,手持 iPhone 是一种身份的象征。
Android 渐入佳境
也就是这个时候,小米横空出世,让 Android 市场开启了千元机的时代,我们应该感谢小米、华为让我们大多数人快速上手智能手机。这一年,国内一大批 JavaEE 开发者开始转 Android 开发了,我就是其中的一员,此时开发手段也是比较原始的,比如网络框架,基本都是在 HttpClient 或 HttpUrlConnection 上手动封装, 大家都在干重复的活,程序员最不愿意干重复的活,后来才有了 AndroidAsyhcHttp、Volley、Ritrofit……
2012 年,Android 相序推出了 Android 3.x 和 Android 4.x ;3.x 主要用于平板设备,这个时候 Android 程序员开始认识 Fragments,一种为大屏而生的视图,如今被你我他用得很频繁;4.x 在流程度和易用性上做了几次优化,例如动画绘制二级缓冲升到三级缓冲。
到这个时候国内 Android 开发已经是火得一塌糊涂,学过 Java ,不管你有没有 Android 经验,只要你愿意从事 Android 开发就能找到待遇不错的工作;整个行业一片欣欣向荣,随便一家互联网公司,不做两个 App 都不好意思说自己是互联网公司。
那些做渠道、市场的也是豪赚了一把,比如 91、豌豆荚。也酝酿出了第一批 APP ,比如当时我们手机装得最多的就是 QQ 、微信、360助手、搜狗输入法、百度地图、UC浏览器、天天动听、优化大师、墨迹天气。看到没有,大多数都是工具属性,还谈不上改变生活,还没有滴滴打车、还没有各种 O2O 应用、微信也只是单纯的聊天工具。
大家都看到了移动互联网即将进入生活的方方面面的趋势了, 还有好多 APP 要开发,从零到一的开发一款 APP 的机会一大把, 还需要好多 Android 开发者入局干事情。
问题与解决
2013 年到 2014 年这两年 google 相序发布了 4.4 和 5.0,前面讲过,早期的 Android 就是初生的婴孩,安全、性能都存在问题。
比如 2012 年,有人让我写程序监听别人的电话、短信,居然轻而易举地就能实现这个功能,可见安全漏洞是多么明显,然而在4.4、5.0 上就难了,在后面的 6.x、7.x 就更难了。
在性能方面,我觉得 4.4 和 5.0 具有划时代的意义,4.4 开始 google 开始引入 ART 虚拟机准备代替 Davik 虚拟机, 5.0 以后,在摩尔定律的作用下, 手机硬件性能、内存也上来了, 彻底废弃了 Davik, 完全使用 ART 。
为啥 ART 之后为速度就快了?这里我简单解释一点, 了解 JVM 的应该比较好理解, Java 字节码需要通过 JVM 解释成目标 CPU 可执行的指令集, 这也是 Java 运行速度慢的原因, 后来出现了 JIT 编译, 对经常执行的热区代码做一次解释,解释成对应目标 CPU 指令集, 放到内存中, 下一次执行的时候就直接从内存中取出这部分 CUP 指令直接执行, 省去了每次都解释执行的耗时。
Davik 也是有 JIT 特性的, 不过还不够好;能不能再安装的时候就提前把要解释的字节码翻译好? 内存允许的话,答案是肯定的, ART 上面就这么干的, 这种方式叫做 AOT,即提前编译。所以我们会发现 5.0 以后安装程序会比较慢, 但运行速度快了太多, 5.0 以后 Android 和 iOS 的差距越来越小了。
时势造英雄
2013 年到 2014 这两年,移动互联网进入了新一轮的爆发式增长,真正把草莽丛生、野蛮生长演绎到了极致。
记得我在《一个程序员的运气》这篇文章中讲过一个故事:一个在 2010 年底还在白石洲和我同学一起住农民房、挤公交的师兄,2014 年的时候已经是身价千万的副总了; 同一年,另一个公司的年终时候在楼下摆满了奥迪作为年终奖,它就是 UC。
经过两三年的疯狂发展,生活的方方面面都可以在手机上进行了,各种 o2o 应用打得不可开交,打的不用再去马路边等着、超市到路边摊都不再需要掏现金、外卖随叫随到,移动互联网真正改变了人民的生活方式……
这个时候整个行业需要从零到一开发 APP 机会少了很多了,到 2015 年的时候很多创业公司第一步想到的不是要开发一个 APP ,而是先开一个微信公众号。
这个时候 APP 端的开发模式也慢慢在发生变化,各种动画开源库、网络开源库不说,原生开发已经相当成熟了,热更新插件化开发也初出锋芒,摩尔定律的作用下,硬件性能上来了,H5 也越来越多的分担了页面任务,Android 开发进入混合开发时代。
提高效率、解放双手是人类永恒的追求,程序员的理想就是要干到自己“没活干”。
2015 年底 facebook 推出 React Native,跨平台、动态性和性能达到双平衡,我也第一时间研究并写了 demo,发现上手也快,这种 web 化的开发方式、原生化的体验一定是趋势,js 再次发光发热。
渐趋成熟的Android
写到这里,我在标题上顿了下,一开始的小标题是“减去成熟的市场”,后面我想了下,改成了“渐趋成熟的Android”。
为什么不用市场呢?因为怕大家又开始焦虑,又开始误会,担心Android凉了,担心自己凉了。
2016 年插件化框架彻底成熟,没过多久,阿里的 Weex 发布,和 RN 如出一辙,Android 开发彻底进入混合时代,这个时后对端的架构能力是有要求的,你要考虑你的应用是不真的需要组件化,如果需要,又怎么把组件、业务插件、Web 容器、统跳协议等有效结合。
2007 微信小程序面市,跟着文档这个 Demo 轻而易举,站在创业者的角度,你还会花这么多成本去开发一个原生的 App 吗?而且这个时候各个领域、细分领域刮分已经完成,开发新 App 的机会真的没有多少了。
如今小程序自己形成气候,各家 App 都想仗着平台和流量做自己的航母,都要做自己的小程序,真是畸形,从统一的角度看,我还是希望快应用能成。不过事实证明,我的期望落空了,现在大家都知道小程序,却很少有人听说“快应用”。
随着 RN、Weex、小程序等前端技术的出现,技术发展又完成了一个轮回,在摩尔定律作用下,历史是如此的相似。还记得那个曾经差点要了微软命的浏览器公司吗,你操作系统很牛逼,但是流量入口都在我这,微软也感觉到了不妙,后来才出现了 IE 浏览器。
IE 浏览器出现后微软内部也开始了系统派和浏览器派两个派系旷日持久的斗争,最终系统派获胜了,不知道这是不是后来微软在新互联网时代衰败的原因!移动互联网和PC互联网的发展轨迹太像了,只不过移动互联网是螺旋上升的一个轮回,2008 年到现在,又是十年多一点,差不多十年一轮回。
下半场出力方向
下半场我们的战场在哪里?
下面这些点是我总结出来的当下最重要也是最热门的学习方向:
1.Java基础:虽然Kotlin现在是 Android 开发的首选语言,但是底层还是要熟悉Java的,如果想要更加的深入底层,还有C,C+这些。
2.App开发框架知识体系:Activity相关实体知识体系,Fragment 内核,Service 内核原理,实体间的通信方案等。
3.Android app全方位性能调优:代码框架结构优化,用户体验及资源消耗优化,屏幕适配,代码质量调优等。
4.Android前沿技术:热升级,热修复等。
5.NDK 模块开发:基础开发流程,图像处理与热修复应用,音视频开发应用,人工智能应用,微信小程序,Flutter等。
音视频时代
去年,第一款5G手机开始售卖,然而现在已经迅速铺开了。5G时代,音视频强势崛起。
从历史来看,2G打开了了移动互联网天下,3G带来了即时通信,诞生了QQ 微信等巨头,4G 带来了短视频兴起。字节跳动等公司崛起。他们的出现促成了移动互联网10年繁荣,而5G的出现,也会促成至少10年音视频行业的繁荣。
现在,短视频已经成为了一种生活刚需,无处不见刷着西瓜,抖音,火山,快手的人,男女老少,不同的职业……
其实这也是NDK技术,现在很多的APP都在做音视频模块的开发,维护和升级,这个点的需求是极大的,也是一个值得努力的方向,这里面的学问也远远不止是做一个简单的开发,事儿多着呢。
最后
我的领导常对我们说一句话,我觉得受益匪浅:现在的世界上从来不缺少提出问题的人,只是缺少解决问题的人。
在以前那个连教育都十分匮乏的年代,能提出问题的人已经十分难得,但是在当下几乎人均专科,本科的时代,更需要的是解决问题的人。
所以在这里,我把上面提到的知识点都整理出来了,不仅有PDF文档,还有视频教程,覆盖知识也很全面,现在,作为粉丝福利送给大家。
获取地址在我的【GitHub:https://github.com/xieyuliang/Note-Android】
长风破浪会有时,直挂云帆济沧海。愿有朝一日,你可以凌绝顶之上,一览众山之小。