作为一名资深的Android 开发者。从2017年下半年开始,就听到各种言论,例如“Android 开发凉凉”、“移动端开发没出路了赶紧转行”、“要被XXX 替代了” 等等,充分反映了大家焦虑的心态。

移动端开发真的要凉凉了吗?也经常有粉丝私信我,在群里聊起这个话题,今天我决定写下自己的一些看法,供大家参考。

移动端开发的现状

移动端开发的现状是什么?我们可以从自己写的代码中寻找线索。以Android 为例,很多大公司的移动端开发者写的最多的代码是这样的:

LinearLayout layout = new LinearLayout;layout.addView(xxxx);...复制代码

或者也许是这样的:

public class XXXView extends RelativeLayout {public XXXView(Context context) {this(context, null);}public XXXView(Context context,@Nullable AttributeSet attrs) {this(context, attrs, 0);}public XXXView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);initView;}private void initView {LayoutInflater.from(getContext).inflate(R.layout.xxxlayout, this, true);
...}public void setData(XXX xxx) {...}复制代码

又或者是对着xml 标签做出各种骚操作——UI 开发。

没错,如今移动端技术栈已经愈发趋于成熟完善,对业务来说,就连大公司的工程师也是在做UI 的展示逻辑。大公司产品相对比较完善,后端管控了大部分业务逻辑,客户端做的就是取到后端的数据,然后通过setText(xxx)展示出来,然后通过接口返回的Boolean 值来判断View 显示还是隐藏。

我听到很多人说,工作几年感觉自己没什么提升,天天都在堆代码,随便找个刚毕业的学生也能分分钟替代自己,于是就很焦虑。那对于工作几年的人来说,要想尽可能不让自己过早的被替代、被淘汰,就需要选一个有潜力的有前景的领域深挖。

那么移动端开发的未来在哪里?

动态化

在聊动态化之前,我们先聊聊Android 的插件化。

前两年,插件化火起来了。为什么火?因为可以实现Android 应用不发版本的同时动态上线需求,同时热修复还可以动态的修复线上出现的bug。但是插件化存在最大的问题是什么呢?兼容性。Android 机型太多太复杂,插件化框架难免会涉及到系统API 的hook,兼容性问题就出现了,开发者会看到莫名其妙的错误上报上来却束手无策。

随着Android 版本的迭代更新,插件化这条路越来越不好走,Android P给了开发者们一个信号:别随便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 语法树,写法实在太简单,又准备在三端的基础上提供小程序端的支持。

2018年GMTC 大会上,Flutter 发布了第一个预览版,阿里巴巴闲鱼团队已经在闲鱼APP 中使用了Flutter 技术。Flutter四年前开始开发,直到去年才有第一个beta 版本。通过Dart 编写APP,然后编译成机器码同时运行在Android 和iOS 上,做到了原生跨平台,Hot Reload,性能很不错,可定制性也非常强,连封装的系统层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 前端和客户端的界限,让越来越多的人认识了什么是“大前端”。如果有经验的开发者们对这个方向进行深入研究,五年内,应该不会被淘汰了(笑)。

移动端机器学习

毫无疑问,移动端机器学习从2017年年底就开始火起来了,TensorFlow 也推出了移动端框架,很多应用都开始在移动端部署机器学习模型,例如相机类应用(FaceU)、电商类应用(唯品会)等,包括离线的机器学习。

如果深挖这个方向,我觉得十年内不会被淘汰。当然了,难度也不小。

AR & VR

从支付宝的AR 抢红包、QQ 的AR 踢球等玩法被越来越多的人体验,AR 走进了人们的视野。对于广告引流玩法来说,AR 无疑是能带来巨大收益的。

此前大众点评亲子上线了“亲子奇妙日” 活动,就是基于大头儿子小头爸爸的AR 玩法。那么开发AR 引擎的移动开发者自然成了香饽饽,目前AR 主要应用的领域还是广告变现,不过很多公司也找到了AR 的一些落地场景,比如卖家具的电商公司可以通过AR 技术让用户在购买之前就能看到实物在自己家里到底能不能放得下,这能极大的提升用户的购买体验。

如果是研究OpenGL、计算机图形学的移动开发者,可以往AR 引擎开发方向发展,非常有前景。

VR 同理。

移动端音视频

这个领域最火的产品当之无愧是抖音了,就连我自己都天天刷抖音。除了抖音,还有各大视频应用,都需要音视频开发领域的专业开发人员,图像处理、滤镜、裁剪等等骚操作都是需要专业的音视频开发知识才能做出来的,研究OpenGL、计算机图形学的移动开发者在这个领域也有很大的优势。

据我所知,这方面人才现在缺口依然很大,各大公司求贤若渴,如果在这方面有经验并且愿意深挖的同学,自然是各大公司的香饽饽啦。

移动端区块链

区块链,2018年最火的技术没有之一。

从人人都在谈比特币到人人都在谈区块链,可以看出区块链技术已经被越来越多人熟知。无数区块链公司如雨后春笋般的冒出,连大公司们也按捺不住开始涉足区块链领域。对于移动端来说,区块链应用最多的还是数字钱包。但是未来移动端区块链一定会有更多的落地应用,例如Status。区块链去年大火,移动端的区块链应用还没开始火,但是也不远了。

如果有移动开发同学对区块链方向感兴趣的,可以开始研究起来了。如果要学习智能合约开发的同学,我推荐一个非常好的网站:Cryptozombies,绝对是入门solidity 智能合约开发的精品。

目前移动端的区块链人才还不多,各大公司也没有在招,但是两三年内,应该就会爆发了,现在还在探索落地场景的阶段,也给了对区块链技术感兴趣的移动开发同学学习的时间。改变世界的技术了解一下?

移动基础框架

UI 未来可能都会被动态化技术接管,但是移动基础框架不会。但凡要开发一个APP,网络请求、日志处理、数据库处理、缓存、Push 等框架都是不可或缺的,这部分和UI 关系不大,又是APP 的命脉所在。

只要APP 存在,基础框架就存在。有同学可能要说了,我用okhttp 分分钟写一个网络请求出来,没错,这是okhttp 已经帮我们做好了很多事。什么是框架?用一句话总结,我的理解就是:

一种可以让能力差别较大的开发者写出功能、性能差不多的代码的库。

不知道大家能不能理解这种说法,我举个例子:如果使用HttpUrlConnection 来写网络请求,可能不同能力的开发者写出来的代码不一样,网络请求的性能和效果也不一样。但是如果使用了okhttp 库,只要看一看okhttp 的文档,新手和老手写出来的代码估计差不多,性能和效果也差不多,这就是框架做出的最大的贡献。

在这些框架的基础上,P5 写的代码可能和P6、P7 区别不会多大。然而,这些框架总要有人开发,开源的框架往往不能满足公司业务的需求,需要自研基础框架。尤其是BAT、TMD 六家公司,移动端框架有大部分都是自研的,越来越多的公司也开始自研,所以如果是在这个方向有经验的移动开发者,在APP 被淘汰之前,应该都不会被淘汰。这方面对移动开发者的知识深度和广度都要求相对较高,需要沉淀和学习。

Android 工具类应用

这个就比较特殊了,这类应用我举个例子:360 手机助手。对于Android 用户来说,清理内存、清理垃圾等已经成为了一种习惯,这方面应用的开发自然是不可少的,而且非常考验对Android 知识的深度,你们懂得。

结语

上面七个移动端开发方向,是我总结出来的有潜力有前景的方向,各位移动开发同学可以参考,可以选择一个方向进行深挖,相信一定会有收获。

嘴上焦虑是没有意义的,最好的办法就是付出行动。

转载于:https://juejin.im/post/5ccee4296fb9a032165e320e

2019年Android开发的未来发展方向该如何走?相关推荐

  1. 股市大跌对于IT行业的我们应该如何应对!2020年Android开发的未来发展方向该如何走?

    作者:Android架构 原文链接:https://zhuanlan.zhihu.com/p/64736562 最近这几天基金股市一片绿油油,心拔凉拔凉的.虽然我是一名Android开发者,但是更是一 ...

  2. 2020年Android开发的未来发展方向该如何走?

    作为一名资深的Android 开发者.从2017年下半年开始,就听到各种言论,例如"Android 开发凉凉"."移动端开发没出路了赶紧转行"."要被 ...

  3. Android开发的未来发展方向

    现状 从2010年开始Android市场开始需要大量的Android开发人员,招聘市场上也开始大量招Android开发人员,大量java开发者开始学习Android开发,招聘市场面试要求上只要有一定j ...

  4. Android工程师未来发展方向以及薪资待遇

    昨天,上家公司HR问我有没有认识的Android工程师推荐一下,薪资待遇12-20k区间,聊完之后,我差点冲动去报个培训班,重新开始进入这个行业.最后,我被现实拉回了现实.不过我了解了一下Androi ...

  5. 全球及中国新能源汽车电机市场未来发展方向与投资潜力研究报告2022版

    全球及中国新能源汽车电机市场未来发展方向与投资潜力研究报告2022版 HS--HS--HS--HS--HS--HS--HS--HS--HS--HS--HS--HS-- [修订日期]:2021年11月 ...

  6. 中国幼儿教育市场运营模式与未来发展方向分析报告2022版

    中国幼儿教育市场运营模式与未来发展方向分析报告2022版 HS--HS--HS--HS--HS--HS--HS--HS--HS--HS--HS--HS-- [修订日期]:2021年11月 [搜索鸿晟信 ...

  7. 新基建专题报告:未来发展方向及重点产业分析

    报告来源:中银证券 转自:未来智库 一.新基建以强外溢性稳增长.补短板.调结构 1)新基建以强外溢性稳增长 全球经贸摩擦加剧,叠加海外疫情导致各国经济存在不确定性的影响下,外需不足,内需承压,经济发展 ...

  8. Postgres 9.5的特性及未来发展方向

    2019独角兽企业重金招聘Python工程师标准>>> Postgres 9.5的特性及未来发展方向 在2015年中国数据库技术大会上来自华为postgres 中国用户会发起人李元佳 ...

  9. 学Java后未来发展方向和前景怎么样?

    学习Java成为Java程序员,进入IT行业,已经成为很多年轻人的选择.毕竟,Java开发薪资高.待遇好已经是公认的事实.那么,学Java后,未来的发展方向和前景怎么样呢?针对这些问题,小千就给大家分 ...

最新文章

  1. 9-Qt6 QString和QChar
  2. 使用Chrome浏览器自动下载文件并保存到指定的文件路径(使用Selenium更改Chrome默认下载存储路径)...
  3. 判断jQuery选择器结果为空 - CSDN博客
  4. 飞鸽传书创造出自己的一片天吧
  5. android代码查找图像,Android平台上利用opencv进行图像的边沿检测
  6. mysql根据行数排序_mysql指定某行或者某列的排序
  7. 【解题报告】表达式求值(栈,表达式树)
  8. Python语法特点
  9. numpy数组打印格式设置
  10. 三维视觉和三维点云基础概念
  11. 回忆测试--------广告理论
  12. 软件工程实训有必要吗_软件工程专业有没有必要考研?
  13. NOI(OJ)编程基础篇
  14. Visual Studio Code 快速生成HTML结构
  15. 《蔡康永的说话之道》思维导图学习笔记
  16. 前端实现文件在线预览功能
  17. JAVA根据PDF文件生成图片
  18. 【离散数学】数学归纳法
  19. Hypervisor操作系统间的通信技术
  20. 哪些人工智能企业有内部人才培养项目?

热门文章

  1. java jtextarea.setfont_如何在JTextArea中更改文本颜色?
  2. RTFM(Read The Fucking Manual)的意思(zt)
  3. 入库订单(组合关系、主从表)模型
  4. 从VIVO到华为,让人目瞪口呆的“未来SMT智能工厂”亮相
  5. Git 使用cherry-pick摘取提交
  6. RabbitMQ-全面详解(学习总结---从入门到深化)
  7. 2020互联网大厂职级对应薪资一览表。
  8. 软件质量有什么特性?
  9. 人工智能领域的计算机科学,主要包含哪些重要职位?
  10. docker image 的sha256 digest摘要