一、前言

Android 开发可以分为多个层次:

  1. 应用界面开发

  2. 网络与数据处理

  3. 图片、缓存与本地存储

  4. 架构设计与工程化

  5. 第三方 SDK 集成

  6. 音视频与图形图像开发

  7. 跨平台与混合开发

  8. 系统级开发与 ROM 定制

  9. 性能、日志与稳定性治理

  10. 存量项目中的旧技术维护

这篇文章可以作为 Android 技术栈的总览,帮助我们把零散知识点放到清晰的体系中。


二、UI 与交互开发

2.1 屏幕适配

屏幕适配是 Android 开发中最基础也最容易出问题的部分,主要包括:

1. 普通屏幕适配

  • 不同分辨率

  • 不同屏幕尺寸

  • 不同像素密度

  • 横竖屏适配

  • 平板适配

2. 异形屏适配

异形屏主要包括:

  • 刘海屏

  • 水滴屏

  • 挖孔屏

  • 圆角屏

  • 曲面屏

重点关注:

  • 状态栏区域

  • 安全区域

  • 全屏沉浸式布局

  • DisplayCutout 适配

  • 不同厂商 ROM 的兼容问题

3. 折叠屏适配

折叠屏属于近几年 Android 设备形态变化中的重点方向,适配内容包括:

  • 展开态 / 折叠态

  • 大屏布局

  • 多窗口模式

  • 屏幕比例变化

  • Activity 重建问题

  • Jetpack WindowManager


2.2 自定义 View

自定义 View 是 Android UI 开发的重要能力,可以分为几类:

1. 继承 View

适合完全自定义绘制,例如:

  • 仪表盘

  • 进度条

  • 图表

  • 波浪动画

核心知识:

  • onMeasure

  • onLayout

  • onDraw

  • Canvas

  • Paint

  • Path

  • 事件分发

2. 继承 ViewGroup

适合自定义布局容器,例如:

  • 流式布局

  • 标签布局

  • 自定义滑动容器

核心知识:

  • 测量子 View

  • 摆放子 View

  • 处理滑动冲突

3. 组合控件

通过组合已有控件实现新控件,例如:

  • 标题栏

  • 搜索栏

  • 空状态页面

  • 带加载状态的按钮

组合控件开发成本低,适合业务项目中大量复用。


2.3 常见 UI 控件与交互组件

可以把下面这些内容归到 UI 组件部分:

1. DrawerLayout

用于实现侧滑菜单,常见于导航抽屉。

2. SlidingMenu

早期常用的侧滑菜单方案,现在很多场景已经被 DrawerLayout 替代。

3. SmartRefreshLayout

常用的下拉刷新、上拉加载框架。

4. StickyLayout / StickLayout

用于实现吸顶效果,例如:

  • Tab 吸顶

  • 标题栏吸顶

  • 列表分组吸顶


2.4 Android 动画

Android 动画可以单独作为 UI 模块中的一个章节。

1. Tween Animation 补间动画

早期动画方案,只改变显示效果,不改变 View 的真实属性。

包括:

  • 平移

  • 缩放

  • 旋转

  • 透明度

2. Frame Animation 帧动画

通过多张图片连续播放形成动画效果。

适合:

  • 简单动效

  • 加载动画

  • 表情动画

3. Property Animation 属性动画

现代 Android 开发中更常用。

代表类:

  • ObjectAnimator

  • ValueAnimator

  • AnimatorSet

优点:

  • 可以真正改变对象属性

  • 支持组合动画

  • 扩展性更强


2.5 换肤与国际化

1. 换肤

换肤主要关注:

  • 颜色资源切换

  • Drawable 替换

  • 夜间模式

  • 动态主题

  • 皮肤包加载

2. 国际化

国际化主要包括:

  • 多语言 strings.xml

  • 多地区资源

  • RTL 布局

  • 时间格式

  • 货币格式

  • 字体兼容


三、网络请求与数据解析

3.1 网络请求

网络请求是 Android 应用开发的核心能力。

1. OkHttp

OkHttp 是底层 HTTP 客户端,主要负责:

  • 发起 HTTP 请求

  • 连接池

  • 拦截器

  • 缓存

  • 超时控制

  • HTTPS

  • WebSocket

适合重点讲:

  • 拦截器机制

  • 连接复用

  • 请求缓存

  • 日志拦截

  • Token 自动刷新

2. Retrofit

Retrofit 是基于 OkHttp 的网络请求封装框架。

主要特点:

  • 接口化 API 定义

  • 注解配置请求

  • 支持 Gson、Moshi 等转换器

  • 支持协程、RxJava 等异步方式

OkHttp 更偏底层请求能力,Retrofit 更偏接口层封装。


3.2 JSON 数据解析

常见 JSON 解析框架包括:

1. Gson

Google 提供的 JSON 解析库,使用简单,历史悠久。

2. Moshi

Square 提供的 JSON 解析库,和 Kotlin 配合较好。

3. Kotlin Serialization

Kotlin 官方序列化方案,适合 Kotlin 项目。

4. Fastjson

阿里开源的 JSON 框架,在 Java 服务端更常见,Android 项目中使用时需要注意包体积和安全问题。


3.3 XML 数据解析

XML 在现代 Android 项目中使用频率下降,但仍然存在于:

  • 老接口

  • 配置文件

  • 第三方 SDK

  • SOAP 服务

  • RSS 数据

常见解析方式:

  • DOM

  • SAX

  • PullParser

Android 中 PullParser 较常见。


3.4 Protobuf 数据解析

Protobuf 是一种高效的二进制数据序列化协议。

适合用于:

  • 高性能通信

  • IM 消息

  • 音视频信令

  • 跨端协议

  • 大型项目数据传输

优点:

  • 体积小

  • 解析快

  • 跨语言

  • 接口结构清晰

缺点:

  • 可读性不如 JSON

  • 调试成本更高

  • 需要维护 proto 文件


四、图片加载、缓存与本地存储

4.1 网络图片加载

Glide

Glide 是 Android 中常见的图片加载框架,主要能力包括:

  • 网络图片加载

  • 图片缓存

  • GIF 加载

  • 图片压缩

  • 生命周期绑定

  • 占位图

  • 错误图

  • 圆角、裁剪、模糊等变换

可以重点讲:

  • 内存缓存

  • 磁盘缓存

  • 生命周期感知

  • 大图加载优化


4.2 数据缓存

Android 项目中的缓存可以分为:

1. 内存缓存

适合缓存短生命周期数据,例如:

  • 页面数据

  • 图片 Bitmap

  • 临时对象

2. 磁盘缓存

适合缓存长期数据,例如:

  • 接口响应

  • 图片文件

  • 下载文件

  • 离线数据

3. 数据库缓存

适合结构化数据,例如:

  • 用户信息

  • 聊天记录

  • 商品列表

  • 配置数据


4.3 SQLite ORM 框架

Android 本地数据库可以直接使用 SQLite,也可以使用 ORM 框架。

1. GreenDao

早期常用 ORM 框架,性能较好,但现在新项目使用较少。

2. LitePal

使用简单,适合轻量项目。

3. Room

Jetpack 官方数据库框架,现代 Android 项目更推荐使用。

Room 的优势:

  • 官方维护

  • 支持 LiveData / Flow

  • 编译期 SQL 检查

  • 和 Jetpack 生态结合好


4.4 MMKV

MMKV 是腾讯开源的高性能键值存储框架。

适合替代 SharedPreferences,用于保存:

  • 用户配置

  • 登录状态

  • 小型缓存

  • 开关配置

  • 本地标记位

优点:

  • 性能高

  • 使用简单

  • 支持跨进程

  • 适合高频读写场景


五、架构设计与工程化

5.1 Android 组件化

组件化是中大型 Android 项目常用架构方式。

核心目标:

  • 降低模块耦合

  • 提高编译速度

  • 支持多人协作

  • 支持业务模块独立开发

  • 支持模块独立运行

常见模块划分:

  • app 壳工程

  • common 基础库

  • network 网络层

  • database 数据层

  • user 用户模块

  • home 首页模块

  • order 订单模块

  • payment 支付模块


5.2 Android 插件化

插件化用于实现 APK 动态加载能力。

常见场景:

  • 动态加载业务模块

  • 减小主包体积

  • 按需下载功能

  • 宿主与插件分离

核心技术点:

  • ClassLoader

  • Resources 加载

  • Activity 启动代理

  • Dex 加载

  • 插件生命周期管理

插件化实现复杂,现代项目中使用需要谨慎。


5.3 Android 热更新

热更新用于线上动态修复问题。

常见类型:

  • Java 代码热修复

  • Native so 修复

  • 资源修复

  • Dex 修复

核心技术点:

  • ClassLoader

  • Dex 插桩

  • 方法替换

  • 资源加载

  • 兼容性处理

热更新涉及平台政策、稳定性和兼容性问题,商业项目中需要谨慎使用。


5.4 Android 路由框架

路由框架主要用于组件化项目中的页面跳转和模块解耦。

常见框架:

1. ARouter

阿里开源的 Android 路由框架,使用广泛。

2. DRouter

轻量级路由框架,支持页面路由和服务路由。

3. TheRouter

现代 Android 项目中也常见的路由框架,强调组件化和动态化场景。

路由框架主要解决:

  • 页面跳转解耦

  • 模块间通信

  • 参数传递

  • 服务发现

  • 降低直接依赖


5.5 响应式框架

RxJava

RxJava 是早期 Android 项目中非常流行的响应式编程框架。

常见用途:

  • 异步任务

  • 网络请求组合

  • 线程切换

  • 事件流处理

  • 防抖、节流

不过在 Kotlin 项目中,很多场景已经逐渐被 Coroutines、Flow 替代。


5.6 依赖注入

Dagger2

Dagger2 是 Google 官方推荐过的依赖注入框架。

主要作用:

  • 管理对象创建

  • 降低类之间耦合

  • 方便测试

  • 管理生命周期

现代 Android 项目中,也可以关注 Hilt,它是基于 Dagger 的官方依赖注入方案。


5.7 事件通信

EventBus

EventBus 是早期 Android 项目中常用的事件通信框架。

优点:

  • 使用简单

  • 解耦发送方和接收方

缺点:

  • 调用链不清晰

  • 难以维护

  • 容易滥用

  • 不利于大型项目排查问题

现在更推荐根据场景使用:

  • ViewModel

  • LiveData

  • Flow

  • SharedFlow

  • 接口回调

  • 明确的数据流架构


5.8 APK 多渠道包

多渠道包主要用于应用分发统计。

常见场景:

  • 应用宝

  • 华为应用市场

  • 小米应用商店

  • OPPO 应用商店

  • vivo 应用商店

  • Google Play

核心内容:

  • 渠道号写入

  • 渠道统计

  • 自动化打包

  • Gradle 构建配置

  • CI/CD 集成


5.9 APK 内置更新

APK 内置更新主要包括:

  • 版本检测

  • 下载 APK

  • 安装 APK

  • 增量更新

  • 强制更新

  • 灰度更新

  • 应用市场跳转

注意事项:

  • Android 8.0 之后安装未知来源权限变化

  • Android 10+ 文件访问限制

  • 国内应用市场政策

  • Google Play 项目一般使用官方更新机制


六、第三方 SDK 集成

6.1 SDK 集成通用流程

第三方 SDK 集成通常包括:

  1. 阅读官方文档

  2. 添加 Gradle 依赖

  3. 配置 AndroidManifest

  4. 初始化 SDK

  5. 处理权限

  6. 处理混淆规则

  7. 处理回调

  8. 处理隐私合规

  9. 测试不同设备和系统版本


6.2 声网 SDK

声网主要用于实时音视频场景。

常见业务:

  • 视频通话

  • 语音通话

  • 直播连麦

  • 在线课堂

  • 语聊房

重点关注:

  • 权限申请

  • Token 鉴权

  • 音视频采集

  • 频道加入

  • 推拉流

  • 网络状态回调


6.3 地图 SDK

地图 SDK 常见功能:

  • 定位

  • 地图展示

  • POI 搜索

  • 路径规划

  • 地理围栏

  • 轨迹绘制

常见 SDK:

  • 高德地图

  • 百度地图

  • 腾讯地图

  • Google Maps

重点关注:

  • 定位权限

  • 后台定位

  • 坐标系转换

  • 隐私合规

  • 电量优化


6.4 支付 SDK

支付模块通常是商业项目中的核心能力。

常见支付方式:

1. Google Play Billing

用于 Google Play 海外应用内购。

2. 微信支付

国内应用常见支付方式。

3. 支付宝支付

国内应用常见支付方式。

支付模块重点关注:

  • 订单创建

  • 支付调起

  • 支付回调

  • 服务端验签

  • 支付状态查询

  • 重复回调处理

  • 防止客户端伪造支付结果


6.5 推送 SDK

极光推送

极光推送常用于国内 Android 消息推送。

推送系统需要关注:

  • 厂商通道

  • 离线推送

  • 通知栏权限

  • 消息到达率

  • 点击统计

  • 推送别名

  • 标签分组

  • 隐私合规


6.6 数据统计 SDK

友盟

友盟常用于:

  • 用户统计

  • 页面统计

  • 事件埋点

  • 渠道统计

  • 崩溃统计

数据统计要关注:

  • 埋点规范

  • 用户隐私

  • 数据准确性

  • 多渠道统计

  • 事件命名规范


6.7 分享与第三方登录

常见第三方登录:

  • 微信登录

  • QQ 登录

  • 微博登录

  • Google 登录

  • Facebook 登录

  • Apple 登录

常见分享渠道:

  • 微信好友

  • 微信朋友圈

  • QQ

  • 微博

  • 系统分享面板

重点关注:

  • 授权流程

  • Token 管理

  • 回调处理

  • 用户信息获取

  • 隐私授权

  • 平台审核规则


6.8 IM 即时通信 SDK

IM SDK 常见于:

  • 聊天应用

  • 社交应用

  • 直播互动

  • 在线客服

  • 游戏聊天

核心能力:

  • 单聊

  • 群聊

  • 消息收发

  • 离线消息

  • 已读回执

  • 消息撤回

  • 图片、语音、视频消息

  • 会话列表

  • 用户在线状态


6.9 语音助手

语音助手可以归入 AI / 语音交互 SDK 集成方向。

常见能力:

  • 语音识别 ASR

  • 语音合成 TTS

  • 唤醒词

  • 自然语言理解

  • 指令执行

  • 车机语音控制

  • 智能家居控制


七、音视频、图形图像与视觉开发

7.1 Android 音视频开发

Android 音视频开发可以分为:

  • 音频采集

  • 视频采集

  • 编码

  • 解码

  • 渲染

  • 推流

  • 拉流

  • 播放器

  • 音视频同步

核心 API:

  • MediaCodec

  • MediaExtractor

  • MediaMuxer

  • AudioRecord

  • AudioTrack

  • Camera2

  • SurfaceView

  • TextureView


7.2 流媒体播放器

流媒体播放器主要处理:

  • HLS

  • DASH

  • RTMP

  • FLV

  • 点播

  • 直播

  • 缓冲控制

  • 清晰度切换

  • 弱网处理


7.3 音视频播放器框架

1. ijkplayer

ijkplayer 基于 FFmpeg,早期在 Android 音视频项目中非常常见。

适合学习:

  • FFmpeg 播放器

  • Native 播放

  • 解码流程

  • 音视频同步

2. ExoPlayer

ExoPlayer 是 Google 推出的 Android 播放器框架。

适合现代 Android 项目使用,支持:

  • HLS

  • DASH

  • DRM

  • 字幕

  • 自定义缓存

  • 自定义渲染器


7.4 NDK / JNI

NDK 和 JNI 用于 Android Java/Kotlin 层与 Native C/C++ 层交互。

常见场景:

  • 音视频开发

  • 图像处理

  • 加密算法

  • 性能敏感模块

  • 复用 C/C++ 库

  • 接入 FFmpeg、OpenCV 等 Native 库

核心知识:

  • JNI 方法注册

  • Java 调 C/C++

  • C/C++ 调 Java

  • so 库加载

  • CMake

  • ABI

  • 内存管理

  • 线程切换


7.5 OpenGL ES

OpenGL ES 用于图形渲染。

常见场景:

  • 视频渲染

  • 滤镜

  • 美颜

  • 贴纸

  • 相机预览

  • 3D 图形

  • 特效动画

核心知识:

  • EGL

  • Shader

  • 顶点着色器

  • 片段着色器

  • 纹理

  • FBO

  • 坐标系

  • 渲染管线


7.6 OpenCV

OpenCV 用于计算机视觉和图像处理。

常见场景:

  • 图像识别

  • 边缘检测

  • 人脸检测

  • 图像滤波

  • 图像矫正

  • 二维码识别

  • 目标追踪


7.7 扫码

ZXing

ZXing 是常见的二维码 / 条形码扫描框架。

常见功能:

  • 二维码识别

  • 条形码识别

  • 相机预览

  • 扫码框 UI

  • 闪光灯控制

  • 扫码结果解析


八、跨平台与混合开发

8.1 Flutter 开发

Flutter 是 Google 推出的跨平台 UI 框架。

特点:

  • 一套代码支持 Android / iOS

  • 自绘 UI

  • 性能较好

  • 热重载

  • 生态成熟

适合场景:

  • 新业务快速开发

  • 跨端统一 UI

  • 独立业务模块

  • 多端一致体验


8.2 React Native

React Native 是基于 JavaScript / TypeScript 的跨平台开发方案。

特点:

  • 使用 React 思想开发移动应用

  • 调用原生组件

  • 支持热更新能力

  • 适合前端团队参与移动端开发


8.3 Hybrid 开发方案

Hybrid 是原生 App 与 Web 技术结合的开发方式。

常见技术:

  • WebView

  • Cordova

  • JSBridge

  • H5 容器

适合场景:

  • 活动页

  • 内容页

  • 低频业务

  • 快速上线页面

  • 跨端复用页面

重点关注:

  • WebView 性能

  • JSBridge 安全

  • Cookie 同步

  • H5 与 Native 通信

  • 文件上传

  • 页面缓存

  • 白屏优化


九、Jetpack 与现代 Android 开发

9.1 Jetpack 组件

Jetpack 是现代 Android 开发的重要组成部分。

常见组件:

  • ViewModel

  • LiveData

  • Lifecycle

  • Room

  • Navigation

  • WorkManager

  • Paging

  • DataStore

  • CameraX

  • Compose

可以重点讲:

  • 生命周期管理

  • MVVM 架构

  • 数据持久化

  • 后台任务

  • 页面导航

  • 分页加载


十、系统级开发与 ROM 定制

10.1 定制 ROM

定制 ROM 属于 Android 系统开发方向,和普通 App 开发有明显区别。

需要掌握:

  • AOSP

  • Framework

  • SystemServer

  • Binder

  • HAL

  • SELinux

  • init

  • 系统签名

  • 系统应用权限

  • OTA


10.2 ROM 开发模块

ROM 开发可以拆成多个系统应用和系统模块。

1. SystemUI

负责系统状态栏、导航栏、通知栏、快捷设置等。

常见内容:

  • 状态栏

  • 导航栏

  • 通知面板

  • 快捷设置

  • 锁屏

  • 音量面板

2. Settings

系统设置应用。

常见内容:

  • Wi-Fi 设置

  • 蓝牙设置

  • 显示设置

  • 声音设置

  • 应用管理

  • 权限管理

  • 账号设置

3. Launcher

桌面启动器。

常见内容:

  • 桌面图标

  • 小组件

  • 应用抽屉

  • 最近任务入口

  • 壁纸

  • 桌面布局


10.3 AR 眼镜

AR 眼镜可以归到新型 Android 终端或系统定制方向。

涉及内容:

  • Android 系统定制

  • 相机

  • 传感器

  • OpenGL 渲染

  • SLAM

  • 手势识别

  • 语音交互

  • 低功耗优化

  • 多屏显示


十一、性能、稳定性与调试

11.1 日志系统

日志可以分为:

1. 原生日志

Android 原生日志主要使用:

  • Logcat

  • Log.d

  • Log.i

  • Log.w

  • Log.e

2. 项目日志框架

项目中通常会封装日志工具,支持:

  • 日志开关

  • 日志级别

  • 文件日志

  • 崩溃日志

  • 线上日志回捞

  • 隐私字段脱敏


11.2 LeakCanary

LeakCanary 是 Android 内存泄漏检测工具。

常见检测场景:

  • Activity 泄漏

  • Fragment 泄漏

  • View 泄漏

  • Handler 泄漏

  • 单例持有 Context

  • 回调未释放


十二、旧技术与存量项目维护

有些技术现在新项目中不一定推荐使用,但在老项目中仍然可能遇到。

12.1 ButterKnife

ButterKnife 曾经常用于 View 注入。

现在新项目更推荐:

  • ViewBinding

  • DataBinding

  • Jetpack Compose

12.2 xUtils

xUtils 早期提供网络、图片、数据库、注解等能力。

现在这些能力通常被更细分、更现代的框架替代,例如:

  • OkHttp

  • Retrofit

  • Glide

  • Room

  • ViewBinding

12.3 EventBus

EventBus 在老项目中仍然常见,但大型项目中容易造成事件流混乱。

建议作为存量项目维护技术掌握,而不是作为新项目首选架构方案。

12.4 SlidingMenu

SlidingMenu 是早期侧滑菜单方案,现在一般可以使用 DrawerLayout 替代。


十三、推荐学习顺序

如果按学习路线来安排,可以分为以下阶段:

第一阶段:Android 应用开发基础

  • 屏幕适配

  • 自定义 View

  • Android 动画

  • 网络请求

  • JSON 解析

  • 图片加载

  • 本地存储

  • SQLite / Room

  • 日志

  • LeakCanary

第二阶段:项目工程化能力

  • Jetpack

  • MMKV

  • Retrofit + OkHttp

  • Glide

  • 组件化

  • 路由框架

  • Dagger2 / Hilt

  • RxJava / Flow

  • APK 多渠道包

  • APK 内置更新

第三阶段:商业项目能力

  • 支付

  • 推送

  • 分享

  • 第三方登录

  • 数据统计

  • 地图

  • IM

  • 声网

  • 语音助手

第四阶段:高级 Android 能力

  • NDK / JNI

  • OpenGL ES

  • OpenCV

  • 音视频开发

  • 流媒体播放器

  • ijkplayer

  • ExoPlayer

  • 插件化

  • 热更新

第五阶段:跨端与系统方向

  • Flutter

  • React Native

  • Hybrid

  • WebView

  • Cordova

  • AR 眼镜

  • 定制 ROM

  • SystemUI

  • Settings

  • Launcher


十四、总结

Android 技术体系非常庞大,不能只按照单个框架来学习,而应该按照能力域来理解。

可以大致分为:

  1. UI 与交互能力

  2. 网络与数据能力

  3. 存储与缓存能力

  4. 架构与工程化能力

  5. 第三方 SDK 集成能力

  6. 音视频与图形能力

  7. 跨平台开发能力

  8. 系统 ROM 开发能力

  9. 性能与稳定性能力

  10. 老项目维护能力

这样整理之后,原本零散的技术点就能形成一套比较完整的 Android 开发知识体系。