2025年Android六边形战士开发趋势,需要掌握哪些技能可自我反省

5,296 阅读10分钟

系列文章:
(一)2025年Android六边形战士开发趋势,需要掌握哪些技能可自我反省
(二)该怎么学Android进阶,拒绝沦为高级三方SDK调用工程师?
(三) 金三银四,分享N年前准备的面试真经,可能适用绝大部分人

一、前言

从2007年Android到来到现在,已经来了17个多年头了,Android正式版也从Android 1.0 发展到Android 15,Android 16正式版今年也即将出来了。作为深耕Android开发的,现已经不是当年只会写写UI界面,用用第三方框架就可以了闯荡江湖了,需要向 六边形战士方向 发展并不断深入,当然六边形战士只是一个名词,Android实际涉及到的分支,可能不止6个,可以7个,8个或者更多。

其实Android并没有凉
只是现在要求Android开发需要懂得更多更深了,走向于学术分科阶段了

二、Android开发必备技能

  1. 掌握Java 基础,IO ,线程,网络,文件
  2. 掌握Kotlin基础,协程,Flow, Channel
  3. 掌握注解、注解处理器,APT , KAPT,KSP,KCP,SPI机制,反射等
  4. 掌握动态代理,Aspect, Javassist, ASM字节码插桩等面向切面编程
  5. 深入理解JVM的 运行时数据区,对象怎么分配,GC及调优方法,ART虚拟机和调优和ClassLoader加载器和字节码
  6. 掌握并发模型和内存 , 锁,CAS,原子变量, 线程池 ,AQS
  7. 理解基础数据结构和算法
  8. 深入理解IO模型,BaseIO,BIO,NIO,OKIO
  9. 深入理解网络(Http,Https,Http1.0,2.0,3.0,https加密原理,TCP,UDP,Socket及与FD关系
  10. 掌握C,C++基础,指针,IO, STL内存管理,线程管理等
  11. 掌握NDK,JNI,Cmake等相关知识
  12. 理解23种设计模式和生产消费者模式

三、万恶最卷的应用层

  1. Android原生XML布局,绘制流程,Jetpack 那一全套,不要放弃,翻开系统源码,系统App,如launcher,SystemUI等,至少再等过好几年,都不会用Compose
  2. 新一代声明式UI布局:Jetpack Compose及时跟进,还没跟上的加紧补进自己的知识库,
  3. 应用层UI层,大多数还是业务层,想要一直在应用UI层领域深耕,夸端就必须要掌握:
    1)Kotlin Multiplatform(KMP)Compose Multiplatform(CMP)Android 自带夸端方案技术跟进 2)Flutter已经成熟,随时进入都是好机会。

前沿技术: AI接入开发或者AI关联Android上部分开发

四、深入Framework系统层面与应用

  1. 深入理解Handler消息通信机制
  2. 深入理解Binder跨进程通信原理包含驱动分析,能够自己实现一套IPC跨进程方案
  3. 深入理解ServiceManager管理服务
  4. 掌握Zygote进程执行流程
  5. 理解AMS,PMS,WMS,IMS等
  6. 深入理解View的绘制流程,事件处理分发过程。
  7. 理解并吸取RecyclerView设计理念

应用场景与反省:

  1. 自己能修改AOSP源码并编译吗?
  2. 能胜任车载或者手机 launcher,SystemUI等的开发吗?
  3. 车载倒车影像开发,会?
  4. 车载智能导航定位开发,会?
  5. 车载多媒体应用,本地音乐,蓝牙音乐,在线音乐
  6. 智能AI识别小助手,车载上有,手机上面也有,比如:小爱同学
  7. 智能家居,智慧零售收银机,收银秤,串口,USB,蓝牙技术,分屏等。

五、所有的都离不开的性能优化

  1. Android app开发给客户留下印象的第一步,启动优化:
    1)app冷启动500ms能到第一个首页吗?
    2)app能在6年前的手机上秒开?
    3)拓展开自己的认知:离开手机端,现在还有很多智能家居,智能设备在用Android 5.0,Android7.0等, 它的CPU芯片水平还在16年中档次的手机芯片。
    4)拓展开自己的认知:智能终端启动同时展示多屏的启动优化难度远远大于单屏的手机启动优化
    5)拓展开自己的认知:和别的app对比启动优化不需要两个app复杂难度,数量级一样。只需要硬件设备一样就行。要有意识地向天龙八部扫地僧学习,带上2个人轻功依然可以秒杀其他人。
    6)拓展开自己的认知:大厂某些App在手机上很快,在某些终端平板上面仍然要2s左右,它还只是单屏

  2. 布局优化:
    1)减少布局套层,过度绘制,约束布局,帧布局,线性布局,merge标签使用:ViewStub 延迟化加载标签
    2)合理使用异步加载布局AsyncLayoutInflater,
    3)能够搭建一套提前加载布局框架
    4)利用工具查看布局层级及耗时:Android Device Monitor 中内置的一种工具 Hierarchy Viewer

  3. 内存优化:
    1)使用工具MAT,MemoryProfiler,systrace监控等
    2)掌握常见内存泄漏避坑点
    3)掌握频繁创建对象导致内存抖动的原理,涉及到JVM,STW机制及常见优化方案
    4)掌握修改对象引用类型,及JVM中标量替换,逃逸分析的实际应用
    5)掌握复用原理:包括线程池,对象池,各种池的合理使用
    6)拓展开自己认知:普通app大部分就连续用2~5个小时顶天了,然后划掉,回桌面玩其他的,或者锁屏放在口袋里,app就被释放了,这是手机上的app,要知道launcher app可能连续1个多月不关机,不重启,更有某些终端设备直接连接好电源线,24小时开着一直放着多条广告视频,10天半个月不关机。比如大型超市连续12个多小时,排队频繁操作收银,客屏还一直放着视频广告,有的甚至晚上都不会关机,监控着,对内存控制非常严格。

  4. APK瘦身:
    1)清理无用资源
    2)图片资源优化:压缩图片,使用svg,tinypng,不带alpha的jpg图片,使用shape,使用色彩方案等
    3)资源动态加载,皮肤加载,在线素材,模块插件化等
    4)lib库的优化
    5)使用7Zip来压缩资源
    6)代码混淆,资源混淆,使用微信AndResGuard对资源混淆并且压缩图片res等
    7)使用Facebook的redex优化字节码

  5. 网络优化:
    1)首先必须得认识到一点,不能通过写代码来改变信号源的信号强度
    2)弱网优化:压缩/减少数据传输量,利用缓存减少网络传输 ,针对弱网(移动网络), 不自动加载图片 ,界面先反馈, 请求延迟提交
    3)网络框架自身优化:http1.1-->http2.0--->http3.0

  6. 崩溃,异常捕获:
    1)掌握Framework中异常处理流程
    2)能够设计一套自定义Thread.UncaughtExcerptionHandler,用当前这个Handler嫁接系统的Handler进行处理异常的方案,即:比如友盟异常管理,bugly异常管理的Android端能够自己实现这一套方案。

  7. WebView优化:
    1)可以在初始化同时先请求数据,让后端和网络不要闲着,
    2)可以提前初始化Webview的相关设置,多个webview可以搞个Webview池子管理
    3)常用 JS 本地化及延迟加载,使用第三方浏览内核
    4)后端处理慢,可以让服务器分 trunk 输出,在后端计算的同时前端也加载网络静态资源
    5)脚本执行慢,就让脚本在最后运行
    6)DNS 和链接慢,想办法复用客户端使用的域名和链接

  8. 大图bitmap优化:
    1)可用luban压缩,条件好可以自研一套更好压缩算法,比如微信自己有一套 2)区域解码:只解码屏幕或者UI显示范围之内的图像数据

  9. 崩溃优化ANR方案
    1)懂崩溃ANR的原理
    2)理解常见ANR场景
    3)能设计出一套traces.txt文件监控方案并分析

  10. 电量优化:
    1)‌减少不必要的网络请求
    2)优化位置服务
    3)优化后台任务
    4)优化图像和动画
    5)避免后台服务常驻
    6)使用性能检查工具:可以使用Perfetto等性能检查工具来分析应用的耗电量和网络使用情况,并进行优化
    7)检测和优化Overdraw
    8)CPU优化:避免CPU时间片消耗异常,可以使用TraceView获取进程执行信息
    9)使用Battery Historian工具*:Battery Historian是Android 5.0之后Google开源的一款用于检测与电池有关的信息和事件的工具。它可以可视化分析各耗电模块的耗电情况,帮助开发者定位和优化耗电问题。

六、高端特殊功能,摄像头,图片处理,音视频及特效剪辑处理

当今短视频,直播天下,别相信已经了或者饱和了,现在短剧,爽剧天下又来了。所以这一领域还是有很大发展趋势

  1. 摄像头,图片处理,类似美颜相机,各种处理
  2. 音视频编码,解码,硬编,软编,混音,制作大片,特效处理,直播,投屏
  3. h264,h265,rtmp,rtsp,webrtc,openGl,FFmpeg

应用场景与反思:

  1. 抖音上面哪些剪辑特效,自己会写几个?
  2. 能手撸软编解码写一个音乐播放器或者视频播放器吗?
  3. 美颜相机里面处理撸一个吗?
  4. 音频处理均衡器,混响,过滤器,消音,抽取人声拿伴奏等能自己撸一个?

七、逆向安全

  1. ‌掌握DEX文件格式和字节码指令
  2. 熟悉Smali语言
  3. ‌Native部分:学习SO(ELF)文件格式,了解动态链接相关的链接逻辑,如rel、got、plt等section的定义
  4. 反编译工具:学习如何使用Jadx-gui、Jeb,Apktool、Dex2jar等工具分析APK,查找、跳转、调试、查看寄存器、函数调用栈
  5. 调试工具:使用IDA-pro进行SO分析,查找字符串、跳转函数、交叉引用跟踪、动态调试、查看内存、寄存器、函数调用栈‌
  6. 熟悉APK包的结构,识别代码和资源文件,分析应用的基本信息、引用的三方库、加固方案和技术栈‌
  7. 动态调试:使用Xposed框架进行Java层Hook,使用Frida进行动态调试,进行HTTPS抓包和加密算法识别‌
  8. Native层逆向:使用IDA Pro、Ghidra等工具进行SO文件逆向,进行OLLVM反混淆和加固脱壳‌
  9. 协议分析与功能破解:选择感兴趣的App进行协议分析和功能破解实战‌

总结

本文重点总结和分享了Android六边形战士开发趋势的各个小点:

写在最后:

只要还没有离开Android 这一领域,或者还没有转变在其他行业站稳脚跟,技术的学习与时俱进,活到老学到老
个人建议:不管你是初级,中级,还是高级,还是资深,中厂大厂都只是个平台,当你哪一天离开,或者被裁员了,那种平台给带来的影响力立马完全消失,但是自己掌握到的技能却永远不会消失。
东邪,西毒,南帝,北丐,中神通,并不是只有在华山之巅论剑才是五绝级别高手,他们任何环境下都是五绝级别高手。
多掌握点技能,成为大佬:离开了平台,闯荡江湖,依然是大佬

祝大家到点早点成为大佬。

感谢阅读:

欢迎用你发财的小手 关注,点赞、收藏

这里你会学到不一样的东西