关于Android 未来开发的方向探讨

背景

本文总结了目前 Android开发的从业方向和所需要的技能。

Android 目前的开发方向主要基于Android的特性和体系架构来定,开源的特性,出现了Android应用架构开发、Android FrameWork开发,Android TV开发、Android 串口开发、车载智能座仓开发等等。

目标岗位出现了:Android应用开发、Android性能优化、Android系统开发、Android系统安全开发。

再精准匹配可能就是对应的业务线和产品功能方向细分了,如音视频开发、智能硬件如车机人机交互开发、工具类产品开发等等等。

Android开发的技术架构演进的过程,也从 MVC 到 MVP/MVI,然后转向 MVVM,最后是 MVVM 和 MVI 的混合。

先来一张 Google官方提供的经典分层架构图:

Android系统架构从下往上依次分为Linux内核、HAL、系统Native库和Android运行时环境、Java 框架层以及应用层这5层架构,其中每一层都包含大量的子模块或子系统。

关于这张图的进一步解读可以参考:

掌握 Android 系统架构,看这一篇就够了!

根据上面这张图 我们大概可以得到以下几个方向

目前的Android方向有:

  • Android 应用开发(框架开发、架构开发、基础设施建设)

    如参与手机端、平板端、智能机顶盒TV端的迭代功能需求开发、Android平台设施建设与性能优化等等。

  • Andriod跨平台开发(React Native、Flutter开发等)

    根据公司业务规划或当前公司的人力考虑,整个项目或者某些功能模块直接用跨平台开发技术来开发。

  • Android 安全方向(逆向分析、安全渗透等)

Anroid 应用开发工程师技能参考

Android技术点

Android 基础设施建设技能参考

中台建设

基础平台设施的建设的同学可谓全栈开发,不但需要做基础通用组件(基本上是业务上开发难搞的通用组件),还要关注性能优化,还得关注研发体系的持续构建、稳定性、安全性等等。

关于基础设施建设的意义和实践可进一步参考:

有赞移动基础设施建设的实践和思考

Android 逆向开发工程师技能参考

1.2年以上android rom开发/移植经验,熟悉java/c/c++;
2.熟悉Android框架及工作机制、ROM修改及开发;
3.熟悉linux kernel 、驱动编程、bootloader、电源管理方案;
4.熟悉Android hal层的原理和架构,熟悉高通或者mtk芯片方案商对于wifi、ril的 hal层架构和实现优先;
5.熟悉Android服务、Zygote、JNI、内存管理机制等;
6.具有从Framework层到应用层app的垂直开发能力,熟悉android原生APP的开发;
7.学习能力强,强烈的责任心,具有较好的沟通能力、抗压力能力、创新能力及团队合作精神。

岗位职责:
1、负责热门APP的风控对抗以及加解密算法分析;
2、处理平时的逆向分析任务。
任职要求:
1、计算机、软件工程或相关专业,1年以上相关工作经验;
2、熟悉Thumb、ARM、ARM64汇编指令,熟悉smali指令,熟悉C/C++/Java一门语言,对逆向工程有浓厚兴趣;
3、熟悉dex,elf文件结构;
3、熟悉常见Hook工具,了解其原理,并且能够编写插件辅助分析;
4、熟悉Android常见加密算法,交互协议分析;
5、熟悉常见加固的脱壳技巧,脱壳原理。
加分项:
1、熟悉JS逆向;
2、熟悉浏览器插件开发。

Android Framework工程师技能参考(车载系统、系统开发方向)

工作职责
1、负责Android框架层的架构方案设计及优化
2、负责多平台框架层方案整合,并Leading推动方案落地
3、 负责新功能导入评估以及框架搭建
4、负责疑难问题的攻关解决,包含窗口显示异常、死机冻屏等
5、跟进Android平台的演进方向,追踪业界相关的技术动态,并负责架构领域技术洞察
任职要求
1、有3年及以上Android开发经验,1年以上架构相关工作经验,同时涉及Qualcomm、MTK者优先
2、具备系统架构设计能力,主导/参与过大型架构设计及优化者优先
3、 对WMS、AMS、PMS、Binder、HAL等有深入的理解,能够优化调整相关逻辑
4、 有整合多平台方案者,深入理解Plugin以及映射机制优先
5、有Kernel相关知识背景者优先
6、自驱力强,深入FWK知识域的学习,能够形成体系
7、精通Java语言,需要有C++、python语言背景
8、 全日制本科及以上学历,数学分析、计算机、软件开发等相关专业优先

1、负责Android稳定性优化和技术攻关,打造极致用户体验;
2、负责调查和解决各种影响用户体验的疑难问题,如JE、Native Crash、ANR、SWT、冻屏/黑屏、内存泄漏等;
3、参与开发稳定性各类工具,提升工作效率;
职位要求
1、5年以上Android客户端或系统Framework开发经验;
2、熟练掌握Java和C+++开发语言;
3、扎实的编程能力,熟悉多线程和网络编程,了解操作系统原理及计算机体系架构;
4、优秀的分析和解决问题能力,熟练使用lldb/gdb,熟悉ARM汇编。
5、加分项:熟悉虚拟机(ART、Dalvik)、内存优化、系统C库、Linux Kernel主要模块(内存、调度、IO等)的技术架构

Android 性能优化工程师技能参考

1.有丰富的性能调优的项目经验,熟练使用常用的性能分析工具分析系统性能(A:systrace,top,vmstat,trace等工具;B:分析过两种及以上如下问题:偶发卡顿,掉帧,benchmark, 冻屏,老化,游戏体验,开关机速度,App启退慢,内存泄漏,整机慢等);
2.熟悉Android Framework,至少精通AMS, WMS / View, PMS, 显示系统中一个子模块;
3.对Linux底层了解(lmk,lmkd要熟悉;Cgroup,IO,MM,FS,Net等或其中一种较为了解);
4.对java有丰富的编码经验, 熟悉c/c++/python更佳;

Android 音视频开发技能参考

  1. 负责投屏/媒体流转框架需求开发及维护,输出高质量的代码;
  2. 负责投屏框架的核心库、SDK及Demo的开发,参与架构设计、关键技术选型等工作;
  3. 参与投屏框架的 CodeReview,以及相关技术性文档的维护和撰写;
  4. 负责投屏框架的交付缺陷解决,确保版本按时保质交付,并持续完善交付经验传承体系。
    任职要求:
  5. 计算机及相关专业,本科及以上学历,三年以上Android全职开发工作经验;
  6. 熟悉Java、C/C++,熟悉Android框架,掌握常用数据结构与算法;
  7. 熟练掌握Android平台上的开发、调试及性能优化的工具和方法,有安卓整机交付经验者优先;
  8. 熟悉音视频编码、封装及常见的流媒体协议,如AVC、HEVC、HLS、MP4、MPEG-TS、RTP/RTCP等;
  9. 熟悉视频开源项目,有WifiDisplay,FFmpeg、WebRTC等开源库相关经验者优先;

总结

Android开发的根据方向未来定位,向上则是基础框架(App),向下是系统开发(FrameWork),向左是智能硬件(车机交互),向右是大前端(跨平台)。

在工作中,我们需要的技能树是需要有交叉,便于系统性的分析、定位、解决的问题,有些技术点我们可以不用,但是不能不懂。尤其是找工作面试时,这将是对你的全面考查。我们得抽象出底层通用的技能持续学习,我们在这条技术开发的道路上,任重道远。每一个方向的扎进去,都够我们折腾好几年的。

猜你喜欢

转载自blog.csdn.net/jun5753/article/details/126628226