经常逛逛脉脉职言平台,作为一名Android开发者,难免会更多的关注行业动态。
脉脉职言充斥着:“客户端内卷,客户端3年内消失、客户端2年内消失、客户端1年内消失,客户端已消失。”言论。
最近看到很多客户端要消失的言论,整体感觉就是贩卖焦虑。
不过,客户端在走下坡路确实是真的。目前客户端存在的原因在于跨平台性能不够好,但差距在缩减。
客户端工作三年和工作五年十年的差距,大多数都在深度广度上,源码了解更深,解决的bug多一些,但工作三年开发的 app 已经够用。
现在贩卖焦虑也是好事,能提前有危机意识。大前端趋势是肯定的,react、flutter还要继续卷着学。有机会做管理就努力争取。
不要把鸡蛋放到一个篮子里,要提前规划后路,如果不做这行了,以后靠什么谋生?值得我们深思。
我自己是做客户端的,自己也在招人,理性说几句。客户端可做的事情太多了,可做的深度也更深。一般小厂快速开发迭代上线,rn的技术选型会更好一些,毕竟快速试错和开发成本都比较低,对大厂来说,一方面人力成本不是太在意,另外客户端确实能做的事情更深更多,轮子之类的也会自己维护。所以对于只做业务,写写ui,调调api的客户端可能会淘汰,但是对于底层的客户端反而是非常稀缺的。
在现在这个阶段,公司之间的技术鸿沟已经非常明显,开发者身在其中,也因为自身学习能力,环境,项目等等的差别,技术上的差距越拉越大,造成了工作几年之后的两级分化,并且这种差距的拉开不是靠自己的努力就能弥补的。在前段时间面试了一个在某一线手机厂商做App的同学,985出身,工作3年,目前也是公司的核心骨干,跟我说了他做的很多UI上的优化和重构工作。他们的App团队大概是4,5个人,看的出来他已经在力所能及的范围内努力做到最好,可惜,受限于团队规模,支持力度和技术储备,他的天花板来的太快,做的不够深入,技术能力也不够全面。
那面对这种情况,作为开发者,我们能做的是什么?最基本的,脱离舒适区,不停磨练自己的技术。举我自己的例子,刚进公司的时候我主要做的是UI,平时搞一些页面上的优化,解决一些小BUG和ANR,做的还算不错;因为之前做的不错,也因为方向变化,大半年之后我开始切换到做视频下载,后来又开始做视频播放,一年半多时间里跟我的导师把空间播放器和下载器推倒了重做,到现在各项指标都很不错。刚开始切换的时候很痛苦,音视频领域入门有一定门槛,项目压力非常大,之前又完全没有接触过。那段时间不知道多少次15楼南区半夜和假日只剩我跟我导师两个人在公司加班,可现在想想也确实是成长最快的时候。这块做的差不多了,今年又开始做编解码,继续在音视频这块深挖下去。所以就是这样,技术不行就深挖技术,觉得环境束缚了你就尽快跳槽,保持自己足够的竞争力。或许一次跳槽还没有办法改变什么,但这是一个量变产生质变的过程,一份不断向上的简历也能为你敲开很多公司的大门。
我在一线互联网企业工作近十年,指导过不少同行后辈。帮助很多人得到了学习和成长。
应用层开发
Android原生开发,需要重点关注的依然主要是各种性能优化,启动速度,耗电量,流畅度,网络优化再到大厂项目实战,这些都是作为一名优秀Android开发具备的基本素养。
- 启动速度
- 流畅度
- 抖音在APK包大小资源优化的实践
- 优酷响应式布局技术全解析
- 网络优化
- 手机淘宝双十一性能优化项目揭秘
- 高德APP全链路源码依赖分析
- 彻底干掉OOM的实战经验分享
- 微信Android终端内存优化实践
以上资源均免费分享给大家,内容均放在了开源项目:【Github】,大家可以自行获取。
音视频开发
音视频/高清大图片/人工智能/直播/抖音等等这年与用户最紧密,与我们生活最相关的技术一直都在寻找最终的技术落地平台。
以前是windows系统,而现在则是移动系统了,移动系统中又是以 Android占比绝大部分为前提,所以Android NDK技术已经是我们必备技能了。要学习好NDK,其中的关于C/C++,jni, Linux基础都是需要学习的,除此之外,音视频的编解码技术,流媒体协议, ffmpeg这些都是音视频开发必备技能,而且OpenCV/OpenG/这些又是图像处理必备知识。
接下来我们可以通过字节跳动抖音部门整理音视频学习手册,来学习如何进行音视频开发。
以下是这份开发文档的部分章节:
阶段一:Android多媒体
第1章 三种方式绘制图片
第2章 AudioRecord录制PCM音频
第3章 AudioTrack播放PCM音频
第4章 Camera视频采集
第5章 MediaExtractor MediaMuxer 实现视频的解封装与合成
第6章 MediaCodec硬编解流程与实践
阶段二:OpenGL ES
第7章 OpenGL ES 基本概念
第8章 GLSL及Shader的渲染流程
第9章 OpenGL ES 绘制平面图形
第10章 GLSurfaceView源码解析&EGL环境
第11章 OpenGL ES矩阵变换与坐标系统
第12章 OpenGL ES之纹理
第13章 OpenGL ES 滤镜 (篇一)
第14章 OpenGL ES 实时滤镜
第15章 OpenGL ES粒子系统 - 喷泉
第16章 OpenGL ES粒子效果-烟花爆炸
阶段三::JNI&NDK
第17章 JNI与NDK的学习和使用
第18章 JNI - 引用类型、异常处理、函数注册
第19章 NDK构建方式 ndk-build与cmake
第20章 指针、内存模型、引用
第21章 运算符重载、继承、多态、模版
第22章 STL 之 容器
子系列 算法
第23章 算法系列 - 冒泡排序
第24章 算法系列-快速排序
第25章 算法系列-堆排序
第26章 算法系列-选择、插入排序以及STL中sort的实现
第27章 算法序列 - 二叉查找树
第28章 算法序列 - 平衡二叉树
第29章 算法序列 - 散列表
阶段四 : FFmpeg
第30章 音视频基础知识
第31章 FFMPEG常用命令
第32章 FFMPEG +OPENSL ES实现音频解码和播放
第33章 FFMPEG + OPENGLES 边解码边播放视频
以上资源均免费分享给大家,内容均放在了开源项目:【Github】,大家可以自行获取。
微信小程序
小程序是基于微信这个亿级流量入口所衍生出来的产品,而快应用,快应用是九大手机厂商基于硬件平台共同推出的新型应用生态。用户无需下载安装,即点即用,享受原生应用的性能体验,不过个人觉得,他已经凉凉了,小程序倒是挺看好的,腾讯这座大山,微信这座凉亭,你想不凉快都难,不过看你是否刚需,比如你公司有需求,那你可以去学习。
推荐学习的新技术,Flutter和Kotlin,这两个都是Google推荐的。
Flutter
Flutter是Google在2018年2月27日,在2018世界移动大会上发布的用以帮助开发者在ios和Android两个平台开发高质量原生应用的全新移动UI框架
官网:https://flutter.io/
中文论坛:http://flutter-dev.cn/
由于是是Google发布的,就前景来看,还是值得肯定的。
Kotlin
Kotlin 是Google推荐的官方开发语言,与Java互通,可相互转换,简洁安全等,是一种在 Java 虚拟机上运行的静态类型编程语言,被称之为 Android 世界的Swift,由JetBrains 设计开发并开源,
Kotlin 可以编译成Java字节码,也可以编译成 JavaScript,方便在没有 JVM 的设备上运行。
学习资料
Kotlin 官网:https://kotlinlang.org/
Kotlin 文档:https://kotlinlang.org/docs/reference/
Kotlin 中文文档:http://www.kotlincn.net/docs/reference Kotlin GitHub:https://github.com/JetBrains/kotlin
本文在开源项目:https://github.com/Android-Alvin/Android-LearningNotes 中已收录,里面包含不同方向的自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中...