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

        作为一名资深的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 显示还是隐藏。

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

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

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

        动态化

        在聊动态化之前,我们先聊聊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)、电商类应用(唯品会)等,包括离线的机器学习。

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

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

        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 知识的深度,你们懂得。

        结语

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

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

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

        在这里我也分享一份自己收录整理的Android学习PDF+架构视频+面试文档+源码笔记,还有高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习

        如果你有需要的话,可以点赞,然后加入Android开发交流群(820198451)免费领取

        image

        image

        相关文章
        相关标签/搜索
        香港马会免费资枓大全香港开奖结果_香港马会2019开奖结果_2019 最快开奖记录结果_小鱼儿玄机2站开奖 开奖结果 谢通门县| 佛山市| 桑日县| 营山县| 安西县| 姜堰市| 巴彦县| 清水县| 广平县| 安仁县| 平凉市| 集贤县| 汕头市| 松溪县| 拉萨市| 巴楚县| 广南县| 招远市| 伊春市| 溧水县| 深泽县| 安图县| 青川县| 岐山县| 临夏市| 宣威市| 瓮安县| 井研县| 陆丰市| 家居| 措勤县| 乳山市| 海南省| 石门县| 新宾| 梨树县| 镇康县| 墨竹工卡县| 南宫市| 建平县| 洛扎县| 蕉岭县| 东阿县| 三门县| 宜兴市| 台安县| 怀来县| 疏勒县| 鲁山县| 波密县| SHOW| 夹江县| 枣强县| 宿迁市| 星子县| 天全县| 怀柔区| 玉门市| 敖汉旗| 塔河县| 基隆市| 蓬莱市| 凤城市| 嵊泗县| 泸水县| 舟山市| 中牟县| 错那县| 刚察县| 田林县| 茂名市| 安多县| 搜索| 永修县| 襄樊市| 伊春市| 榕江县| 花莲市| 新巴尔虎左旗| 临汾市| 临湘市| 若尔盖县| 吴堡县| 长乐市| 平阳县| 柳林县| 南涧| 广德县| 金华市| 乡宁县| 吴堡县| 永修县| 米泉市| 罗源县| 安岳县| 玉屏| 商城县| 府谷县| 鹤庆县| 离岛区| 深州市| 云和县| 江陵县| 延津县| 宽甸| 屏东县| 淮北市| 思南县| 北宁市| 甘洛县| 阿拉善盟| 新和县| 黑河市| 齐河县| 诏安县| 兰溪市| 临汾市| 宜川县| 临朐县| 广丰县| 永川市| 宜春市| 金塔县| 漳平市| 息烽县| 金堂县| 治多县| 金平| 涡阳县| 洮南市| 博野县| 恭城| 高阳县| 定西市| 浠水县| 朝阳区| 永新县| 昌宁县| 普兰店市| 同心县| 博野县| 花莲市| 太保市| 泰兴市| 通州市| 南陵县| 松江区| 台北市| 册亨县| 青浦区| 谢通门县| 濉溪县| 米脂县| 翼城县| 濉溪县| 阳西县| 鹿邑县| 宜兴市| 锦州市| 枣强县| 梧州市| 赤峰市| 阿拉尔市| 铜鼓县| 苗栗县| 荔浦县| 常山县| 黄大仙区| 北宁市| 郸城县| 拉萨市| 柯坪县| 五河县| 正阳县| 宜君县| 陇西县| 措勤县| 泸西县| 南召县| 西城区| 沂南县| 宁蒗| 望都县| 博罗县| 库伦旗| 新乡县| 玛曲县| 澜沧| 德兴市| 汉源县| 道真| 汝南县| 长乐市| 前郭尔| 大足县| 龙游县| 无为县| 水富县| 乌拉特后旗| 白玉县| 平陆县| 毕节市| 繁峙县| 泰州市| 铅山县| 资溪县| 沙洋县| 岳西县| 福建省| 武乡县| 林西县| 临沧市| 都昌县| 沙湾县| 成安县| 潍坊市| 永安市| 光山县| 平潭县| 梅河口市| 勃利县| 微山县| 枞阳县| 开鲁县| 深水埗区| 新兴县| 萝北县| 大化| 满城县| 修武县| 米泉市| 莱州市| 临猗县| 清流县| 邓州市| 毕节市| 嵩明县| 清镇市| 大埔区| 忻城县| 厦门市| 赤城县| 腾冲县| 太仆寺旗| 会泽县| 长兴县| 阿图什市| 泰来县| 武宁县| 东乡县| 乐昌市| 灵山县| 商水县| 宜丰县| 吉林市| 江西省| 大庆市| 大足县| 山东省| 绍兴市| 平乡县| 阳朔县| 博野县| 连云港市| 晴隆县| 镇江市| 沂水县| 社旗县| 平原县| 湖南省| 山东省| 林口县| 和平区| 托克逊县| 邓州市| 吉安县| 军事| 凌海市| 聂拉木县| 宜良县| 漠河县| 沐川县| 平谷区| 漳平市| 麻城市| 鄯善县| 且末县| 小金县| 梅州市| 习水县| 茌平县| 准格尔旗| 独山县| 万载县| 尖扎县| 金山区| 九寨沟县| 香河县| 桦南县| 通城县| 曲麻莱县| 日土县| 波密县| 安顺市| 海兴县| 清苑县| 白沙| 卢氏县| 临西县| 若尔盖县| 哈密市| 昌乐县| 阳曲县| 诸暨市| 牟定县| 家居| 精河县| 清涧县| 邻水| 克山县| 清水河县| 出国| 九江县| 临安市| 河北区| 京山县| 棋牌| 平谷区| 泰和县| 高雄县| 夏津县| 伊吾县| 张家川| 北安市| 瑞安市| 莱西市| 宿州市| 扬中市| 乾安县| 两当县| 赫章县| 桂林市| 六安市| 西城区| 郑州市| 崇州市| 中宁县| 凤城市| 射阳县| 武夷山市| 霍邱县| 兴山县| 金堂县| 武陟县| 海安县| 九龙城区| 西安市| 登封市| 和田县| 大悟县| 北京市| 新津县| 呼和浩特市| 安新县| 晋宁县| 迭部县| 库尔勒市| 奇台县| 高碑店市| 斗六市| 灵丘县| 苍南县| 道真| 颍上县| 时尚| 商都县| 巴塘县| 方山县| 博兴县| 措勤县| 龙井市| 新宁县| 汉沽区| 应城市| 南溪县| 盐亭县| 新安县| 韶山市| 抚顺市| 黔南| 乐平市| 延寿县| 大邑县| 山西省| 辰溪县| 且末县| 白山市| 台前县| 洛南县| 伊金霍洛旗| 桐柏县| 遂宁市| 浪卡子县| 铜梁县| 阳朔县| 武冈市| 松阳县| 根河市| 文登市| 南宁市| 锦屏县| 梅河口市| 皮山县| 吉安市| 娱乐| 阜新市| 上林县| 仪陇县| 错那县| 改则县| 青神县| 闽清县| 黄浦区| 江城| 武平县| 灵石县| 惠州市| 内黄县| 四平市| 老河口市| 蒲江县| 岐山县| 崇明县| 垦利县| 海南省| 珠海市| 南雄市| 连云港市| 太谷县| 吉木乃县| 新田县| 正镶白旗| 吉木乃县| 团风县| 宁河县| 南康市| 贵定县| 正镶白旗| 虞城县| 稻城县| 精河县| 黄骅市| 新民市| 浮山县| 南京市| 宣化县| 榆社县| 台湾省| 若尔盖县| 伊春市| 温泉县| 寿宁县| 绥阳县| 乌鲁木齐市| 都昌县| 宜城市| 琼结县| 彭水| 达孜县| 阳城县| 仙游县| 南昌县| 金门县| 怀安县| 镶黄旗| 海兴县| 黎城县| 正安县| 句容市| 通江县| 突泉县| 景洪市| 厦门市| 留坝县| 尉犁县| 正定县| 墨江| 深圳市| 慈利县| 防城港市| 汶川县| 潍坊市| 扬中市| 唐海县| 阿克苏市| 稻城县| 龙口市| 比如县| 泰安市| 呼图壁县| 泽州县| 大丰市| 钦州市| 伊通| 阳高县| 额尔古纳市| 通榆县| 牡丹江市| 陈巴尔虎旗| 九龙城区| 林周县| 珠海市| 永康市| 区。| 盐城市| 威远县| 宁晋县| 南乐县| 巫溪县| 富宁县| 古浪县| 榆林市| 南和县| 家居| 区。| 奉新县| 英超| 蓬莱市| 内丘县| 巫山县| 明水县| 会泽县| 塔河县| 山丹县| 杨浦区| 灵宝市| 梁河县| 南丰县| 江川县| 中江县| 修武县| 海南省| 信宜市| 梁山县| 唐海县| 亚东县| 得荣县| 凤山市| 宣城市| 新宁县| 府谷县| 文成县| 阳信县| 天峨县| 仁布县| 西乡县| 永善县| 从江县| 怀集县| 嘉善县| 鹿泉市| 宜宾县| 满城县| 内江市| 广平县| 五指山市| 常山县| 义马市| 杭锦旗| 神农架林区| 双辽市| 兴化市| 临沭县| 开远市| 临夏县| 绥江县| 大竹县| 宁阳县| 竹溪县| 漳平市| 汉沽区| 名山县| 登封市| 屏边| 肇州县| 新郑市| 三穗县| 道真| 金乡县| 西安市| 渭源县| 罗平县| 镇雄县| 米林县| 白银市| 台北市| 左贡县| 峡江县| 平定县| 屯门区| 开封县| 西宁市| 开化县| 南华县| 商河县| 丹棱县| 阿拉尔市| 灵寿县| 隆林| 女性| 汽车| 西林县| 建德市| 洛南县| 盐源县| http://www.hz0j2r0vo.fun http://wap.jx1870featurev.fun http://jx1870existv.fun http://m.jx1870knowv.fun http://jx1870giftv.fun http://jx1870exercisev.fun http://www.hz0j1r4vo.fun http://www.jx1870facev.fun http://www.jx1870focusv.fun http://wap.hz0j1r7vo.fun http://jx1870labelv.fun http://m.jx1870feev.fun http://www.hz0j2r6vo.fun http://wap.jx1870getv.fun http://wap.jx1870lastv.fun http://wap.hz0j4r7vo.fun http://m.jx1870jackv.fun http://www.jx1870explainv.fun