description: “深度剖析 Android Telephony 跨层与层内通信机制,包括 App 层 Binder IPC、Framework 到 HAL 层的 AIDL/HIDL 通信以及进程内 Handler 机制。”
Android Telephony 系统由于横跨应用层、系统服务层、硬件抽象层,其内部存在大量复杂的进程间通信(IPC)与进程内事件分发机制。理解这些通信链路,是排查 Telephony 问题的先决条件。
1. 通信机制全景图
Telephony 内部包含三种核心的通信/分发机制:
- Top-Down Binder IPC: App 与 Telephony 框架层的通信(
App 进程->com.android.phone进程)。 - Top-Down/Bottom-Up HAL IPC: 框架层与 Vendor RIL 的通信(
com.android.phone进程 <->rild守护进程)。 - Internal Event Loop: 框架层内部的状态同步(
com.android.phone进程内组件解耦通信)。
2. App -> Framework: Binder IPC 通信链
第三方应用或系统 App 无法直接实例化Phone对象,所有对外暴露的 API 都必须通过标准的 Android Binder 机制跨进程调用。
2.1 核心组件映射
暴露的 Manager (frameworks/base) | 对应的 AIDL 接口定义 | 系统服务层实现 (packages/services) | 职责说明 |
|---|---|---|---|
TelephonyManager | ITelephony.aidl | PhoneInterfaceManager | 通用的电话、网络、数据状态控制 |
SubscriptionManager | ISub.aidl | SubscriptionController | 多卡/多 Subscription 状态管理 |
SmsManager | ISms.aidl | SmsManagerService | 短信发送与接收控制 |