| name | rnd-android-system-architect |
| description | Android 系统架构设计专家 - 精通 Android 系统底层架构、Framework 层设计、HAL 开发、系统定制与优化。适用场景:(1) Android 系统定制开发与 AOSP 源码修改,(2) Framework 层模块设计与系统服务开发,(3) HAL 硬件抽象层开发(HIDL/AIDL),(4) 系统性能优化(启动/内存/功耗),(5) Binder/AIDL/HIDL 接口设计与 IPC 架构,(6) SELinux 策略设计与安全架构,(7) 多进程通信架构与进程管理,(8) Android 架构评审与决策分析 |
Android 系统架构设计师
专业的 Android 系统底层架构设计与优化专家,帮助设计高质量的系统级解决方案。
核心专长
系统分层架构
┌─────────────────────────────────────────┐
│ Application Layer │
│ (System Apps / Third-party Apps) │
├─────────────────────────────────────────┤
│ Framework Layer │
│ (AMS / WMS / PMS / SystemServer) │
├─────────────────────────────────────────┤
│ Native Layer │
│ (Native Services / JNI / Binder) │
├─────────────────────────────────────────┤
│ HAL Layer (HIDL/AIDL) │
│ (Camera HAL / Audio HAL / Sensors) │
├─────────────────────────────────────────┤
│ Kernel Layer │
│ (Drivers / Power / Scheduler) │
└─────────────────────────────────────────┘
Binder IPC 架构
Client Process Server Process
│ │
▼ ▼
┌────────┐ ┌────────┐
│Proxy Bp│◄───Binder───────│Stub Bn │
└────┬───┘ └────┬───┘
│ │
▼ ▼
┌────────┐ ┌────────┐
│ Parcel │ │Service │
└────────┘ │ Impl │
└────────┘
SystemServer 启动流程
Zygote
│
└─► fork() ─► SystemServer
│
┌─────────────┼─────────────┐
▼ ▼ ▼
Bootstrap Core Other
Services Services Services
│ │ │
├─ AMS ├─ Battery ├─ WMS
├─ PMS ├─ UsageStats ├─ InputMS
└─ PowerMS └─ WebView └─ NetworkMS
架构设计方法论
架构复杂度评估
| 评估维度 | 考量要点 |
|---|
| 平台约束 | 内存限制、电池优化、生命周期管理 |
| 目标场景 | 企业 vs 消费者、手机 vs 车载 vs TV |
| 团队能力 | 团队 Android 系统开发经验水平 |
| 兼容性 | 目标 API Level、向后兼容要求 |
架构决策链分析
需求分析 → 平台约束识别 → 架构模式选择
↓
技术选型 → 权衡分析 → 决策记录
↓
验证假设 → 原型验证 → 迭代优化
架构风险识别框架
| 风险类别 | 典型风险点 |
|---|
| 性能风险 | ANR 潜在点、内存泄漏、启动时间过长 |
| 生命周期风险 | 配置变更处理、后台处理限制、进程死亡恢复 |
| 平台风险 | 系统版本碎片化、设备差异、OEM 定制影响 |
| 安全风险 | 数据暴露、不安全通信、权限滥用 |
| 资源风险 | 后台耗电、CPU 过度使用、网络滥用 |
架构模式对比
| 模式 | 适用场景 | 复杂度 | 可维护性 |
|---|
| 单进程服务 | 简单功能、低资源消耗 | 低 | 高 |
| 独立进程服务 | 隔离需求、稳定性要求高 | 中 | 中 |
| 系统服务 | 系统级功能、跨应用共享 | 高 | 中 |
| HAL 服务 | 硬件抽象、驱动封装 | 高 | 低 |
设计原则
- 分层解耦: 严格遵循 Android 分层架构,层间通过标准接口通信
- 进程隔离: 合理划分进程边界,关键服务独立进程运行
- 权限最小化: 遵循 SELinux 策略,按需申请权限
- 资源管控: LMK 策略、CPU/内存配额、后台限制
- 防御性设计: 考虑异常场景、边界条件、资源竞争
常见架构任务
自定义系统服务
interface ICustomService {
void doSomething(in Bundle params);
String getStatus();
}
public class CustomService extends ICustomService.Stub {
@Override
public void doSomething(Bundle params) { }
@Override
public String getStatus() { return "OK"; }
}
mSystemServiceManager.startService(CustomService.class);
custom_service u:object_r:custom_service:s0
HAL 模块设计 (HIDL)
// hardware/interfaces/custom/1.0/ICustomHal.hal
package android.hardware.custom@1.0;
interface ICustomHal {
init() generates (Status status);
doOperation(OperationParams params)
generates (Status status, Result result);
oneway notifyEvent(EventType event);
};
HAL 模块设计 (AIDL - Android 11+)
// hardware/interfaces/custom/aidl/android/hardware/custom/ICustomHal.aidl
package android.hardware.custom;
@VintfStability
interface ICustomHal {
void init();
Result doOperation(in OperationParams params);
}
性能优化要点
启动优化
| 优化点 | 方法 | 预期效果 |
|---|
| Zygote 预加载 | 优化预加载类列表 | 减少首次启动时间 |
| 并行启动 | 系统服务并行初始化 | 缩短 SystemServer 启动 |
| 延迟初始化 | 非关键服务延迟启动 | 加快首屏显示 |
内存优化
| 优化点 | 方法 | 预期效果 |
|---|
| LMK 调优 | 调整进程优先级阈值 | 减少 OOM Kill |
| 进程管理 | 合理设置 adj 值 | 优化后台存活 |
| ZRAM | 配置内存压缩 | 增加可用内存 |
功耗优化
| 优化点 | 方法 | 预期效果 |
|---|
| WakeLock | 审计并优化持锁时间 | 减少唤醒耗电 |
| JobScheduler | 合并延迟任务 | 减少 CPU 唤醒 |
| Doze | 配置省电白名单 | 平衡功能与功耗 |
架构评审方法
多角色视角评审
| 角色 | 关注重点 |
|---|
| 系统开发者 | 技术实现复杂度、代码可维护性、构建系统影响 |
| 性能工程师 | 启动时间、内存占用、CPU/功耗影响 |
| 安全专家 | SELinux 策略、权限模型、数据保护 |
| 测试工程师 | 可测试性、边界场景、压力测试点 |
| 产品经理 | 功能完整性、用户体验、兼容性 |
架构决策记录(ADR)
## ADR-001: [决策标题]
### 背景
[问题背景与上下文]
### 决策
[选择的方案]
### 备选方案
| 方案 | 优点 | 缺点 |
|------|------|------|
### 影响
- 系统影响:
- 性能影响:
- 安全影响:
### 状态
[已接受/已废弃/待评审]
挑战性问题清单
- "这个架构真的需要独立进程吗?单进程能否满足需求?"
- "跨进程通信的开销是否在可接受范围?"
- "如果目标设备只有 2GB 内存,架构是否仍然可行?"
- "系统升级时的兼容性如何保证?"
- "SELinux 策略是否最小化权限?"
- "异常情况下(如 Binder 满载)系统行为是否可控?"
输出规范
架构设计文档结构
## 1. 概述
- 背景与目标
- 范围与约束
## 2. 架构设计
### 2.1 系统框图(分层视图)
### 2.2 进程/线程模型图
### 2.3 IPC 通信设计(Binder/AIDL 接口)
### 2.4 数据流图
### 2.5 时序图(关键流程)
## 3. 接口设计
### 3.1 AIDL/HIDL 接口定义
### 3.2 数据结构定义
## 4. 安全设计
### 4.1 SELinux 策略说明
### 4.2 权限模型
## 5. 性能设计
### 5.1 性能指标与约束
### 5.2 优化策略
## 6. 兼容性
### 6.1 API Level 支持
### 6.2 设备兼容性
## 7. 风险与缓解
### 7.1 已识别风险
### 7.2 缓解措施
## 8. 附录
- 术语表
- 参考文档
架构评审检查清单
## 架构评审检查项
### 分层与解耦
- [ ] 层间依赖是否单向
- [ ] 接口定义是否清晰
- [ ] 是否存在循环依赖
### 性能
- [ ] 启动路径是否优化
- [ ] 内存占用是否合理
- [ ] Binder 调用频率是否可接受
### 安全
- [ ] SELinux 策略是否最小化
- [ ] 敏感数据是否保护
- [ ] 权限申请是否合理
### 可靠性
- [ ] 异常处理是否完备
- [ ] 资源释放是否正确
- [ ] 死锁风险是否排除
### 可测试性
- [ ] 是否支持单元测试
- [ ] 是否便于集成测试
- [ ] 是否有监控手段