自身技术过硬就有前景,混日子就没前景,好好学吧...

高爷:Android 开发者学习路线(2020 版)?

zhuanlan.zhihu.com图标

Android开发的现状

目前,移动开发已经处于饱和的阶段,Android开发也不如当年盛况,已经不再像前几年前那么火爆。正如一种编程语言如果经历过盛极一时,那么必然有这样的一条曲线,像我们学的正弦曲线先急速上升,然后到达顶点,然后再下降,最后再趋近一个平稳的值。

可以看到,从2016年的下半年开始,移动互联网基本处于缓慢发展的阶段,很多大佬称之为互联网的下半场。如果移动互联网的前半场是粗放式的强地盘阶段,那么下半场就是守地盘的阶段,这一阶段,会出现众多的寡头。

在技术上,相比之前之前面试只问Android四大组件,资料库,网路和项目经验不同,现在面试Android岗位会设计各种原理(包括系统的一些原理以及第三方库的原理及流程)、Android优化以及与Android相关的跨平台技术。除此之外,稍微大点的公司还会对App的用户体验、流畅度等等提出要求,所以说,Android的面试已经不可同日而语。

Android开发的未来

移动操作系统的演变过程,从按键交互的塞班功能机到触摸屏交互的Android/IOS智能机,从小屏幕手机到全面屏、刘海屏、水滴屏。总结一下,任何系统无非干两件事:输入和输出,接收到外部输入信号后经过操作系统处理后输出信息。

Android发展至今,已成为全球用户量最广泛的移动操作系统,手机行业竞争异常激烈,经过几番洗牌,国内手机厂商主要是华米OV四大公司,并且随著移动互联网增长见顶,国内Android开发的需求也越来越少,那么Android的未来在哪里呢?

目前,Android在应用层次的发展已经见顶,未来的发展主要集中在人工智慧和5G结合的产业,智能汽车、智能家居、IOT都将是Android发展的广阔市场。但就目前人工智慧的奇点还没到来,技术还处于前期阶段,一旦奇点来临将会爆炸式发展,或将重新定义生活方式。汽车的智能化和互联网化是未来一大趋势,Google这两年确实在汽车领域发力,Android Auto在过去一年的用户增长250%。天生的移动特性加上越来越多的互联网服务需求,汽车需要一个具备多种感知能力的系统,或将成为是继手机、电视后Android的下一重点开拓领域。

对于Android开发人员来说,我有以下几点建议:

  • 在Android领域深耕,做到极致,努力成为这个方向的专家,提升工程架构思维和能力,因为软体工程思想都是相通的。只要一个领域做到极致,即便Android被淘汰了,换新领域面试官依然会相信你也能做到极致。
  • 在有深度的情况下,适当拓宽自己的广度,在每完成一个项目后就进行总结,并能够熟知整个系统的整体架构,对核心有深刻的认知。

在这个日异月新的时代,不光需要Follow一线技术,更重要的是要引领时代,才能在技术快速发展的阶段不被淘汰,才能在下一次技术革命中抓住机会。

这里列举一些Android热门技术:

总结

说一千道一万,不如自己去行动。要想在移动互联网的下半场是自己占有一席之地,那就得从现在开始,从今天开始,马上严格要求自己,既重视业务实现能力,也重视基础和原理。基础夯实好了,高楼才能够平地而起,稳如泰山。

推荐阅读:

Zz潇晓:遇到瓶颈如何提升自己?Android 最全知识体系总结及学习路线分享给你!?

zhuanlan.zhihu.com图标

或者可以看一下我这些相关的回答:

如何学习Android,Android学习路线图??

www.zhihu.com图标android程序员如何提高自己的核心竞争力??

www.zhihu.com图标Android开发前景怎么样??

www.zhihu.com图标

最后再分享一下我自己的一个专栏,里面定期分享Android架构技术知识点及解析,还会不断更新的BATJ面试专题,以及安卓相关资料免费分享,欢迎大家关注,如有好的文章也欢迎投稿。

Android高级技术分享?

zhuanlan.zhihu.com图标

天天都有人在说Android市场饱和了。

不是饱和,只是过掉了爆发期,趋于平和了。

天天都有人说Android要凉了。

不是Android要凉了,是你要凉了。

现在的Android开发,不在是十年前你随便能写个简单的APP就能找到工作的年代了。

时代在进步,你原地踏步,却抱怨经济不行,就业环境不好。那么这边建议穿越回清朝重造一下。

社会缺的不是「CV搬运工」,需要的是创造者。Android高工有多么抢手,你如果一直呆在底层搬砖,自然是感受不到,自然也就随波逐流抱怨Android开发饱和,Android凉凉。

奉劝:少喝鸡汤,那这焦虑的时间多看看源码,多学学底层。那都是创始者、前辈们留下的永不过时的东西。

Android开发从零到起飞成长技能树:

必备Java基础

泛型

  • 作用于定义
  • 通配符于嵌套
  • Rxjava中的泛型

注解

  • 自定义注解与元注解
  • APT,编译时注解处理器
  • 插桩
  • 反射,运行时动态获取注解信息
  • Retrofit

并发线程

  • 线程共享与实现实现
  • CAS原理
  • Android AsyncTask原理

Java虚拟机

  • Dalvik虚拟机
  • CG演算法、机制
  • 内存分配策略

Hook技术动态编程

动态代理模式双亲委托机制JavaIO体系IO操作Dex加密

数据结构及演算法

数据结构

  • 栈和队列
  • 数组和链表,自定义一个动态数组
  • Hash表,及Hash冲突的解决
  • 二叉树
  • B+ B-树
  • 基础排序演算法:重点 快排、归并排序、堆排序(大根堆、小根堆)
  • 快排的优化
  • 二分查找与变种二分查找
  • 哈夫曼树、红黑树
  • 字元串操作,字元串查找,KMP演算法
  • 图的BFS、DFS、prim、Dijkstra演算法(高阶技能)
  • 经典问题:海量数据的处理 (10亿个数中找出最大的10000个数 TOP K问题)

演算法

  • 分治演算法
  • 动态规划
  • 贪心演算法
  • 分支限界法

Android基础

  • Android Activity生命周期
  • Application生命周期
  • Android Service、IntentService,Service和组件间通信
  • Activity的onNewIntent
  • Fragment的懒载入实现,参数传递与保存
  • ContentProvider实例详解
  • BroadcastReceiver使用总结
  • Android消息机制
  • Binder机制,共享内存实现原理
  • Android 事件分发机制
  • Android 多线程的实现:Thread、HandlerThread、AsyncTask、IntentService、RxJava
  • ActivityThread工作原理
  • 嵌套滑动实现原理
  • RecyclerView与ListView(缓存原理,区别联系,优缺点)
  • View的绘制原理,自定义View,自定义ViewGroup
  • View、SurfaceView 与 TextureView
  • 主线程Looper.loop为什么不会造成死循环
  • ViewPager的缓存实现
  • requestLayout,invalidate,postInvalidate区别与联系
  • AndroidP新特性
  • Android两种虚拟机
  • ADB常用命令
  • Asset目录与res目录的区别
  • Android SQLite的使用入门

Android开发高级

注:

Android高级工程师招聘要求:1.熟悉Android SDK,熟悉Android UI,熟悉Android各种调试工具;2.有丰富的Android应用架构能力,能够独立主导并架构App;3.Mobile Web 开发经验;具备各种复合技能:熟悉iOS、H5、Python、.NET等多种开发语言的优先考虑;4.对Android性能优化,安全,软体加固,自动化测试有深刻认识;5.博客,开源项目

Android技术难点

AIDL、Binder、多进程、View的绘制流程、事件分发、消息队列等

这类知识对于定位自己为高级Android工程师的人来说是必须掌握的,同时他也是能鉴别高级和初中级工程师的一块试金石,其中binder是Android系统进程间通信最重要的手段之一,现阶段app的发展离不开多进程的运用,经常会启动例如定位、推送等需要在后台开启动的进程来来保证主进程的内存运行;所以合理的使用多进程也是十分必要的;view的绘制是我们自定义控制项的理论基础,只有掌握了view是如何绘制的才能个性化的自定义控制项;事件分发一直是Android开发的难点之一,也是必须掌握的;关于handler机制也是android的一块难点,因为包括Asynctask、系统启动、Intentservice等底层都是通过handler来实现的,所以掌握后handler机制不仅能提高你的实战开发能力,更能让你系统的了解整个android系统运作的情况。

Android框架层源码掌握

  • Android包管理机制,核心PackageManagerService
  • Window管理,核心WindowManagerService
  • Android Activity启动和管理,核心ActivityManagerService
  • 根Activity工作流程
  • Context关联类
  • 各种原理,经典第三方库源码系列
  • 自定义LayoutManager,RecyclerView中如何自定义LayoutManager
  • VLayout实现原理,即如何自定义LayoutManager
  • Glide载入原理,缓存方案,LRU演算法
  • Retrofit的实现与原理
  • OKHttp3的使用,网路请求中的Intercept
  • EventBus实现原理
  • ButterKnife实现原理
  • RxJava实现原理
  • Dagger依赖注入
  • 热修复实现原理,解决方案
  • 组件化原理和解决方案

Android进程通信以及多进程开发

Android 多进程和Application关系

经典解决方案:多进程通信解决方案:Andromeda

  • Android动画机制
  • Android绘图原理
  • Android页面恢复

Android的页面恢复采用以下两个方法:

  • onSaveInstanceState(Bundle outState)
  • onRestoreInstanceState(Bundle savedInstanceState)

onSaveInstanceState :当Activity容易被系统销毁时,会触发该方法。具体的说:

  • 用户点击Home键
  • 用户点击Home键,切换到其他应用程序
  • 有电话来了等附加操作

混合开发及Android WebView应用

混合开发涉及到的知识点主要包括:

  • APP调用WebView载入url
  • 掌握WebView的封装,了解所有的WebSettings配置,掌握WebViewClient、* WebChromeClient
  • 掌握WebView和Native双向通信机制,会自己封装双向通信中间件
  • 对WebView的封装可参考:GitHub: AgentWeb
  • 对通信中间件原理理解:GitHub:webprogress

Gradle,自动化构建,持续集成相关

Android系统

Android Studio编译过程

其中使用到的编译工具:

aapt、aidl、Java Compiler、dex、 zipalign

主要步骤描述:

  • 通过aapt打包res资源文件,生成R.java、resources.arsc和res文件(二进位 非二进位如res/raw和pic保持原样)
  • 处理.aidl文件,生成对应的Java介面文件
  • 通过Java Compiler编译R.java、Java介面文件、Java源文件,生成.class文件
  • 通过dex命令,将.class文件和第三方库中的.class文件处理生成classes.dex
  • 通过apkbuilder工具,将aapt生成的resources.arsc和res文件、assets文件和classes.dex一起打包生成apk
  • 通过Jarsigner工具,对上面的apk进行debug或release签名
  • 通过zipalign工具,将签名后的apk进行对齐处理。

App启动载入过程

Android虚拟机 Android App运行的沙箱原则

Android架构

在Android源码中最重要的三个类:ActivityManagerService/PackageManagerService/View,推荐大家周末的时候可以去阅读下这部分的源码,阅读源码能提高我们今后设计架构自己代码的能力,同时也能从底层了解整个android系统的运行原理,其他一些比如主线程的消息循环、主线程如何和AMS如何跨进程交互、SystemServer进程中的各种Service的工作方式、AsyncTask的工作原理等。这些知识也是作为一个Android高级开发工程师必须掌握的,不能整天沉溺于ui和四大组件的交互,要站在更高的角度去考虑Android的有些问题。

  • MVC模式
  • MVP模式
  • MVVM模式
  • CLEAN模式
  • 组件化开发
  • 跨平台开发:Flutter、ReactNative(RN未来要黄,了解一下就好)

移动开发外围

伺服器开发相关

  • SpringBoot技术
  • Restful API开发
  • 网路协议理解:TCP/IP、HTTP/HTTPS、OSI七层协议
  • 授权认证协议: OAuth2.0 等
  • 基本的资料库技术
  • 数据缓存技术v:Memcached、Redis,Web缓存原理
  • 消息队列技术
  • 监控、日志分析技术

前端开发相关

前端开发知识很多,框架层出不穷,本质的东西却只有以下这些。

  • 核心必备:HTML、CSS、JavaScript
  • 入门提高:浏览器兼容性、自定义UI和动效
  • 中级技能:框架层出不穷,当前以vue.js、react.js 为核心
  • 协作开发技能:包管理、模块化,工具采用 npm、webpack等
  • 高级技能:框架原理源码研究

开发调试各种工具

  • 性能分析工具:Memory Monitor
  • 性能追踪及方法执行分析: TraceView
  • 视图分析:Hierarchy Viewer
  • ApkTool- 用于反向工程Android Apk文件的工具
  • Lint- Android lint工具是一个静态代码分析工具
  • Dex2Jar- 使用android .dex和java .class文件的工具

没有Android系统学习方向的,可以看看参考一下我的:我的Android架构师成长笔记


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

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

第一次看我文章的小伙伴可以关注一下我,顺便关注一下我的专栏:Android技术交流,每天更新各种技术干货,分享更多最热程序员圈内事。

Android技术交流?

zhuanlan.zhihu.com图标

移动端开发的现状

移动端开发的现状是什么?我们可以从自己写的代码中寻找线索。以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 知识的深度,你们懂得。

    结语

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

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


    谢邀! 腾讯优测助力与企业和个人解决多样化测试疑难问题,这里浅谈2020年大前端的趋势预测;希望对您有所帮助。

    腾讯优测?

    newtest.21kunpeng.com

    前端开发的快速发展每年都会给开发者带来新的关键词。回望一下2019年,小程序的突飞猛进、跨端开发RN生态已经成熟、前端工程化,很多团队都在建设完备的前端devops工具集…根据2019年大前端的发展进行预测,2020年大前端在5g的环境下,仍将在小程序、跨端开发、前端工程、云计算方面进行发展

    小程序

    2019 年,各大主流 App 纷纷推出小程序平台。小程序发展至今,热度不断攀升,使各种跨平台的小程序框架不断涌现。已有的框架在性能和兼容性方面也在持续优化,结合小程序云的开发能力,越来越低的开发门槛将持续刺激小程序的发展。只要小程序的流量还在,小程序仍然是明年的焦点和重点投入对象,当前的性能问题,预计也会得到解决,同时,小程序的同构也值得期待,它真实的解决了一部分开发者的痛点,另外,小程序的工程化也会有更多工具支撑。

    跨端开发

    对于跨终端开发,RN状态通常是成熟的,今年许多团队改变了他们的调子,以 Flutter为Release,这重新点燃了希望,并使 Flutter前端渴望尝试。同时,苹果也发布了新的用户界面系统——SwiftUI。与此同时,面向网路的SwiftUI已经在开源社区中上路了。安卓的SwiftUI会如何我们也拭目以待。跨终端开发,颤振仍将快速发展,并将有更多的开发者。Flutter on JS、SwiftUIfor WebAndroid上也将是值得期待的开源软体。腾讯在2019年12月底也推出了自己的开源新生移动跨端开发框架Hippy:支持iOS、安卓,跨终端开发仍然没有完美的解决方案,需要一步一步的进行迭代。

    前端工程

    在前端编程中,开发人员最重要的基本成就是提高效率,此时前端开发人员将继续迭代和优化。一些团队之间也开始协作共建,不管是Web还是小程序项目,从新建项目、开发、联调、部署、测试、发布、运维到监控统计,都有完善的工具去保证和提效,今后前端工程也会越走越标准化。展望2020年前端的发展,前端工程系统肯定会更加闭环,不像脚手架那么简单,而是将集成开发环境(IDE)结合起来,从项目初始化、代码编写、配置项、灰度级和发布,打开业务属性,形成一个完整的闭环。

    云计算

    云计算已经再是一个陌生的词语了,对于大公司而言,真正把业务全部搬到云上,也只是近两年的事,而使用原生云不是迁移伺服器那么简单,提到原生云的应用,不得不提到 「炙手可热」的Serverless,任何一场互联网技术大会都不会缺席的话题。Serverless火爆的原因大部分是因为前端,因为Serverless比较完美的支持Node.js,使用 Serverless帮助前端开发者解决了使用Node.js过程中的诸多问题,前端开发不再需要过多关注服务端的运维,运维成本大幅降低,它安全、弹性伸缩、按次收费便宜,试错的成本也将大大降低。前端开发者只需要专注于业务的开发,专注于业务逻辑的实现,需要关心的事情变少,能做的事情更多。Serverless也必将对前端的研发模式产生变革,随著Node.js成为前端开发者必备技能之后,云计算不断普及让Serverless触手可及,一些前端能搞定的后台任务,站在研发效率的角度,都应决策让前端开发者全栈搞定。

    5g

    5G到底会给Web前端开发带来哪些变革?首先,5G带宽的大幅提升带来传统Web页面复杂度的进一步提升,如同2G到4G变革过程中页面从WAP的纯文本超链接时代变革到4G全图片视频时代,5G对于页面的变革必将是巨大的,但肯定不会一蹴而就,因为相应的配套设施也需要逐步完善,如硬体性能和浏览器的处理速度,而服务端渲染(SSR)肯定是其中一个捷径,轻前端重后台,5G是桥梁,把渲染放后台,就已经不是同构那么简单,需要关注和优化渲染性能,由于它可以无缝对接后台多种语言,WebAssembly或许会在这个机遇下得到快速发展,而后台渲染的优化也会带来前端页面研发模式和技术架构的变革;其次,5G带来的万物互联,又将带来有别于智能手机和普通PC的多样化新的应用场景,VR、可穿戴设备、车载系统、智能投影、智能交互等等又会把Web带入各种各样的垂直领域,仅仅VR这一项领域就有非常多需要去探索和完善的地方,这也意味著前端将有更多广阔的空间。

    随著5g和云计算的不断发展,行业对软体的质量要求越来越高,测试服务也需要更加专业化,优测云服务平台是移动云测试平台,拥有50余名测试领域专家,300余人专业测试团队,10余年终端测试服务经验,提供兼容性测试、自动化测试、云真机,设备分享等多种服务方式,不仅支持标准能力输出,也可提供定制化测试解决方案,帮助企业打造完备的DevOps测试体系,以及具有互联网思维的质量团队。

    腾讯优测?

    newtest.21kunpeng.com

    腾讯优测是一个移动云测试平台,为应用、游戏、H5混合应用的研发团队提供产品质量检测与问题解决服务。不仅在线上平台提供全面兼容测试、远程真机租用等多种质量检测工具,更为VIP客户配备了专家团队提供定制化综合测试解决方案。


    已经转入大前端领域了。死守安卓这一小块池子,以后机会越来越少。不能坐井观天,一直呆在舒适区。


    没啥前景


    好多回答都是推销自己回答的,足见安卓是越发没落了,反正我是真的不想在安卓里什么深挖了


    前言

    从2010年开始Android市场开始需要大量的Android开发人员,招聘市场上也开始大量招Android开发人员,大量java开发者开始学习Android开发,招聘市场面试要求上只要有一定java语法基础,都很容易应聘上Android开发的岗位,因为那时候国内Android开发的需求刚刚起步,从事Android开发的人员很少,到2011-2012年,只要有一年左右的Android开发经验,那时候在一线城市很容易拿到10K的起步薪资,那时候市场Android开发的市场空缺大概有30万左右。

    这时候大量软体培训公司开始大量培训Android开发人员,一时大批开发者或者大学毕业生开始涌向移动开发,当然此时也是移动互联网大势发展的时候,一大批互联网创业公司也开始出现,当时号称只要做个App就可以开始创业了。

    到了2016年年底时,市场上Android的招聘需求大量减少,当然这时候有一批相应的创业公司已经衰退,对应培训市场上已经不再把Android开发作为热门核心的培训科目,到现在创业也不用一开始就做一个App就可以开始了,现在越来越讲究精益创业,刚开始推崇最小化可行产品。

    现在越来越讲究效益和成本,比如现在只需一个小程序,一个微信公众号,一个视频,一个微信群或者QQ群,甚至只需要经营你的朋友圈就可以开始你的初期创业想法。

    当然一些新技术的不断更新与迭代,新技术的层出不穷让我们本身对Android开发水平还没有达到理想状态时已经产生各种焦虑和担忧,比如前段时间快应用的出现,今年小程序的火爆,各种混合开发,跨平台开发已经让我们学习跟不上脚步,就算我们在Android原生开发中也出现各种框架,各种开源库,以及各种大型项目的构建技术和细分领域的技术比如NDK,音视频、逆向技术、图像技术等等已经让我们应接不暇。

    以上种种让我们产生了移动Android开发已经凉了,有人有这样的比喻,现在学习加入Android开发,犹如1949年10月加入GMD。确实移动市场没有之前的火爆,但是移动开发真的凉了吗?

    现实状况

    我的回答是凉还不至于,因为目前是市场趋于稳定正常,这个是市场发展的比如趋势,现在火爆大家都看好的人工智慧,大数据,犹如2010年刚开始的移动开发。

    目前现在是需求量趋于平衡,对初中级水平的开发人员需求量变少,但是对高级以上的需求市场还是很匮乏,特别是对于特定细分领域的Android开发人员也是很匮乏,对Android开发的综合能力,特别是基础原理性要求也越来越高,比如很多公司要求会对对某项要求会优先考虑,比如现在流行的Kotlin,混合开发,跨平台开发,NDK,高级图像处理等,市场上很火爆的直播和小视频对音视频这个细分领域的高级人才需求量也是比较大的,以至于AI、AR、VR等技术也需要通过终端展示给用户,所以说移动端开发未来还是会有所作为。

    要求

    所以目前我们要选好自己细分领域深入研究,对基础原理性内容深入理解,尽快向高级水平靠近并达到。当然也要了解新技术,拥有开放的心态去学习一些新技术,不要一开始出来一个新技术就转入学习,这样会导致啥都会一点啥都不会,当然新技术是有一个发展过程的,不会立马流行和大量应用等它稍微成熟点,这样你会少踩很多坑,也不要排斥它,完全不去理会和了解学习,正确的方式是简单了解这个技术产生是为了解决什么问题,有什么优缺点已经目前发展成熟度和应用范围,我们还是要多抓住技术的本质和基础,这样出现了新技术学起来也会很轻松,当然机会合适了再去学习它。

    所以,找准自己的定位及细分领域。

    这里我归类了如下几类:

    1、应用层开发,不限于各种产品,主要还是Android原生开发,主要是各种性能优化。

    2、嵌入式开发,不限于各种开发板子,物联网,智能家居,车联网/车载

    3、安全开发,不限于各种反逆向,反汇编,寻找安全漏洞

    4、音视频开发,不限于直播、点播、音视频通话、音视频会议,短视频等

    5、插件化、组件化、热修复开发,不限于自研和使用开源框架集成开发

    6、系统开发(Android),不限于Rom维护和FrameWork层定制需求

    7、图形图像开发,不限于OpenGL ES,EGL,GLSurfaceView,滤镜,美颜

    8、小程序 / 快应用

    小程序是基于微信这个亿级流量入口所衍生出来的产品,而快应用,快应用是九大手机厂商基于硬体平台共同推出的新型应用生态。用户无需下载安装,即点即用,享受原生应用的性能体验,不过个人觉得,他已经凉凉了,小程序倒是挺看好的,腾讯这座大山,微信这座凉亭,你想不凉快都难,不过看你是否刚需,比如你公司有需求,那你可以去学习。

    推荐学习的新技术,Flutter和Kotlin,这两个都是Google推荐的。

    Flutter

    Flutter是Google在2018年2月27日,在2018世界移动大会上发布的用以帮助开发者在ios和Android两个平台开发高质量原生应用的全新移动UI框架

    由于是是Google发布的,就前景来看,还是值得肯定的。

    Kotlin

    Kotlin 是Google推荐的官方开发语言,与Java互通,可相互转换,简洁安全等,是一种在 Java 虚拟机上运行的静态类型编程语言,被称之为 Android 世界的Swift,由JetBrains 设计开发并开源,

    Kotlin 可以编译成Java位元组码,也可以编译成 JavaScript,方便在没有 JVM 的设备上运行。

    最后

    如果你的水平接近达到高级水平,有信心快速达到高级水平,那就按照高级水平的技能点和市场招聘的高级要求对照靠近,一步步达到这个水平。如果你的水平还是初级入门水平,或者兴趣度不是很高,想早点转换,你可以快速转变,因为在正确方向上努力太重要了,这里也建议不要跨度太大,这里我推荐往大前墩或者产品方向转变,当然前提是你有这方面的兴趣。

    当然上面讲的都是技术方向上的发展,当然对一些技术栈水平和技术积累到一定程度后你也可以往技术管理和产品方向发展,当然你也可以选择创业,如果你有足够好的idea和心理准备。

    当然大部分人停留在中高级水平,然后一直停滞不前,加上外部各种环境,产生了各种焦虑,所以很矛盾,这时候你最好的状态是快速往高级水平发展,当然这里是比较难的,这个坎也是比较难迈过去的。因为Android知识体系比较庞大和复杂的,涉及到计算机知识领域的方方面面。下次可以专门讲讲怎么快速进阶为Android高级工程师。

    更多详情可以参考我的【Github


    Android不仅仅局限于应用和游戏的开发,接下来的Android发展趋势,它将应用到AI人工智慧、智能家居,AR虚拟现实技术,安全等热门领域。在未来的十年里,Android将更加人性化、智能化,以及安全和直观的体验。


    推荐阅读:
    相关文章