系统服务的实现方式
系统服务的实现方式
| 方式 | 实现语言 | 启动方式 | 调用方 | 适用场景 |
|---|---|---|---|---|
| 1. Java 系统服务 | Java | SystemServer 启动 |
Java 系统 App、SystemUI、Settings | 逻辑简单,需与 AMS/PMS 交互 |
| 2. Native AIDL 服务 | C++ | init 启动(.rc) |
C++(如 frameworks/av)、Java(通过 Binder) |
高性能、C++ 实现、跨语言调用 ✅ |
| 3. 传统 Native Binder 服务 | C++ | init 启动 |
C++ | 老项目、不依赖 AIDL |
| 4. HIDL / AIDL (vendor) | C++/Java | hwservicemanager |
vendor HAL、system/vendor | 主要用于 HAL 层,不推荐用于 system 内部服务 |
| 5. Socket / HAL / 共享内存 | C/C++ | 自定义 | 仅限本地进程 | 低延迟、无 Binder 开销,但不是标准系统服务 |
✅ 二、针对你的场景:哪种最合适?
你的情况:
- 服务逻辑用 C++ 实现;
- 调用方是
frameworks/av下的 audio effect 插件(C++); - 目标平台:Android 14 + RK3576(Lubanmao);
- 希望服务是 标准系统服务(可通过
service list查看)。
✅ 最佳选择:Native AIDL 服务(方式 2)
理由:
- 官方推荐(Android 11+);
- 自动生成类型安全的 C++ 客户端/服务端代码;
- 支持被 Java 和 C++ 同时调用;
- 服务注册到
ServiceManager,符合系统规范;- 调试方便(
service list可见)。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Fleming's Blog!






