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

2023-05-16

文章目录

  • 背景
  • Anroid 应用开发工程师技能参考
  • Android 基础设施建设技能参考
  • Android 逆向开发工程师技能参考
  • Android Framework工程师技能参考(车载系统、系统开发方向)
  • Android 性能优化工程师技能参考
  • 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),向左是智能硬件(车机交互),向右是大前端(跨平台)。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 如何在 ADB 连接期间禁用电池充电?

    问题描述 每次我在电脑和手机之间连接 USB 线时 电池都会自动充电 我想使用 ADB 协议 但我不想在 ADB 连接期间为电池充电 是否可以关闭此充电功能 当然 我该怎么做呢 环境 Android 操作系统 4 及更高版本的手机 我只需要
  • 从历史堆栈中删除活动

    我的应用程序在用户第一次运行应用程序时显示注册活动 如下所示 活动启动画面 欢迎来到游戏 注册帐户 ActivitySplashScreenSignUp 很好 填写此信息 ActivityGameMain 游戏主屏幕 因此 当用户单击每个屏
  • 如何在活动中的必填字段中显示 * 符号

    我需要在活动中的必填字段中显示 符号 你能建议我怎样才能做到这一点吗 任何帮助 将不胜感激 我想说 作为必填字段的标记不遵循本机 Android 主题 的组合setHint and setError对于 Android 应用程序来说看起来更
  • onScale 事件后触发奇怪的 onScroll 事件

    我有一个同时使用 SimpleOnScaleGestureListener 和 SimpleOnGestureListener 的应用程序 每当我进行捏缩放时 我都会得到预期的 onScale 但是当我抬起时 我会看到一个奇怪的 onScr
  • 使用 HttpUrlConnection Android 将 base64 编码的图像发送到服务器

    我正在尝试使用 HttpUrlConnection 将 base64 编码的图像发送到服务器 我遇到的问题是大多数图像均已成功发送 但有些图像会生成 FileNotFound 异常 我的图像编码代码可以在下面找到 public static
  • Android Fragment onCreateView 与手势

    我正在尝试在片段中使用手势 我在 FragmentActivity 中有以下内容来处理我的详细信息片段 我试图发生的情况是 当在视图上检测到滑动时 将该视图内的数据替换为上一个或下一个条目 如果有更好的方法来处理这个问题 我完全同意 然而
  • 屏幕开/关检测

    在这里 我试图确定屏幕是否打开 但按下电源锁定 解锁按钮时它似乎不起作用 应用程序运行没有错误 但 if else 中的代码似乎没有效果 Edited现在代码可以工作了 谢谢Olgun 但媒体播放器播放不会停止 并且每次在屏幕上 离屏时都会
  • Glass 语音命令给定列表中最接近的匹配项

    使用 Glass 您可以通过 确定 Glass 菜单启动应用程序 它似乎会选择最接近的匹配项 除非命令相距数英里 并且您可以明显看到命令列表 无论如何 是否可以从应用程序内或从语音提示 在初始应用程序触发后 给出类似的列表并返回最接近的匹配
  • 如何构建自定义摄像机应用程序?

    我正在尝试开发一个自定义摄像机录像机 当我的设备在 Activity 的 beginRecording 中执行 start MediaRecorder 方法时 应用程序崩溃 我不知道出了什么问题 因为我遵循谷歌API指南 http deve
  • 如何在 Android 上将动态 alpha 遮罩应用于文本

    I want to make a dynamic alpha mask with drawable shapes as circles or whatever and apply it to a drawed text on Android
  • Activity 类型中的方法 showDialog(int) 在 Android 中已被弃用?

    方法showDialog int 从类型Activity is 已弃用 什么原因 以及如何解决 什么原因 http developer android com reference android app Activity html show
  • 如何关闭 EditText 中的建议?

    如何在 Android 中关闭 EditText 中的建议 android inputType textNoSuggestions 根据this http comments gmane org gmane comp handhelds an
  • 无法使用文件提供程序从内部存储打开 PDF 以便在 Android 8 和 9 上查看

    仅适用于 Android 8 和 9 我这里有一个 PDF 文件管理器 String url file storage emulated 0 Android data com verna poc files Download mypdf p
  • 在android中创建SQLite数据库

    我想在我的应用程序中创建一个 SQLite 数据库 其中包含三个表 我将向表中添加数据并稍后使用它们 但我喜欢保留数据库 就好像第一次安装应用程序时它会检查数据库是否存在 如果存在则更新它 否则如果不存在则创建一个新数据库 此外 我正在制作
  • 使用 DataBindingComponent 的 Inflate 方法

    当 Glide 成功渲染图像后 我在更新文本视图时看到此错误 致命异常 java lang IllegalStateException 必需 CustomBinding 类中的 DataBindingComponent 为 null 绑定适
  • Flash 对象未显示在phonegap android 中

    我已经在 android 手机间隙创建了一个应用程序 我有一个屏幕 我想显示一个静态 flash obj 所以我在屏幕 HTML 页面中放入了以下代码
  • Fragment 生命周期和在不存在的 Fragment 上调用 onCreate 的问题

    我正在 Android 中测试片段 并且片段生命周期有一些令人困惑的行为 我有一个活动 在横向和纵向模式下使用 xml 布局 我有一些代码可以访问在片段布局之一中定义的 EditText 对象 如果我以横向模式启动应用程序 一切都会正常 我
  • 如何正确编写AttributeSet的XML?

    我想创建一个面板适用于 Android 平台的其他小部件 http code google com p android misc widgets 在运行时 XmlPullParser parser getResources getXml R
  • R.java是手动修改的!恢复到生成的版本

    我在布局中添加了一个 xml 文件 之后这个错误就来了 但问题是我还没有接触过 R java 文件 现在 在我的新活动中 我要将其内容视图设置为我新创建的 xml 文件 但是当我执行 R layout 时 新创建的 xml 不会出现在建议中
  • 我应该如何在 Android 上使用 Retrofit 处理“无互联网连接”

    我想处理没有互联网连接的情况 通常我会运行 ConnectivityManager cm ConnectivityManager context getSystemService Context CONNECTIVITY SERVICE N

随机推荐