Ahao's Technical Blog Ahao's Technical Blog
首页
  • 001.基础篇
  • 002.玩转AOSP篇
  • 003.学穿Binder篇
  • 004.基础组件篇
  • 005.系统启动过程分析
  • 006.Hal开发入门与实践
  • 007.显示系统
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

阿豪讲Framework

不积跬步无以至千里
首页
  • 001.基础篇
  • 002.玩转AOSP篇
  • 003.学穿Binder篇
  • 004.基础组件篇
  • 005.系统启动过程分析
  • 006.Hal开发入门与实践
  • 007.显示系统
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 基础篇

  • 玩转AOSP篇

  • 学穿Binder篇

  • 基础组件篇

  • 系统启动过程分析

  • Hal开发入门与实践

    • 001.Android HAL 层概览
    • 002.传统 Hal 开发指南1 —— 开发环境准备
    • 003.传统 Hal 开发指南2 —— 传统 HAL 整体架构
    • 004.传统 Hal 开发指南3 —— 驱动开发
    • 005.传统 Hal 开发指南4 —— 实现一个简单的 Hal 模块
    • 006.传统 Hal 开发指南5 —— 添加硬件访问服务
    • 007.传统 Hal 开发指南6 —— 开发一个 App 访问硬件服务
    • 008.HIDL HAL 开发指南1 —— 开发环境准备
    • 009.HIDL Hal 开发指南2 —— Android 8 HAL 变迁
    • 010.HIDL Hal 开发指南3 —— HIDL HAL 实例程序
    • 011.HIDL Hal 开发指南4 —— Binderized HALs 实例分析
    • 012.HIDL Hal 开发指南5 —— Passthrough HALs 实例分析
    • 013.HIDL Hal 开发指南6 —— Same-Process HALs 实例分析
    • 014.HIDL Hal 开发指南7 —— 驱动开发
    • 015.HIDL Hal 开发指南8 —— 简单 HIDL HAL 实现
    • 016.HIDL Hal 开发指南9 —— 添加硬件访问服务
    • 017.HIDL Hal 开发指南10 —— 开发一个 App 访问硬件服务
    • 018.AIDL Hal 开发指南1—— 开发环境准备
    • 019.AIDL Hal 开发指南2 —— AIDL HAL 整体架构
      • 参考资料
    • 020.AIDL Hal 开发指南 3 ———— AIDL HAL 实例分析1
    • 021.AIDL Hal 开发指南 4 ———— AIDL HAL 实例分析2
    • 022.AIDL Hal 开发指南5 —— stable-c HAL 实例分析
    • 023.AIDL Hal 开发指南6 —— 驱动开发
    • 024.AIDL Hal 开发指南7 —— 实现一个简单的 AIDL HAL
    • 025.AIDL Hal 开发指南8 —— 添加硬件访问服务
    • 026.AIDL Hal 开发指南10 —— AIDL HAL 的升级
  • 显示系统

  • Framework
  • Hal开发入门与实践
阿豪
2024-03-29
目录

019.AIDL Hal 开发指南2 —— AIDL HAL 整体架构

20240408172332

Google 在 Android11 觉得 HIDL 那一套有点多余,把 HIDL HAL 弃用了。并提供了新的 AIDL HAL。

主要有以下几点变化:

  • 一般情况下 HAL 是一个 binder 服务,注册到 ServiceManager,通过命令 adb shell service list 中有大量的 hal binder 服务。
  • 通常,App 作为 binder 客户端与 Framework 中的系统进程(SystemServer SurfaceFlinger 等)通信,Framework 中的系统进程会作为 hal binder 服务的客户端,访问 hal。一般情况下,App 访问 hal 要经过两次跨进程通信
  • 特殊情况下,比如某个硬件只有一个 App 使用,App 可以直接通过 binder 通信访问到 hal binder 服务。
  • 某些 hal 对性能要求高(主要是显示相关的),hal 层是一个 so 库,系统进程通过 dlopen 的方式加载。这类 hal 叫 stable-c hal

# 参考资料

  • AIDL for HALs实战 (opens new window)
  • hal深入剖析之aidl实战-android framework车机车载手机系统开发 (opens new window)
018.AIDL Hal 开发指南1—— 开发环境准备
020.AIDL Hal 开发指南 3 ———— AIDL HAL 实例分析1

← 018.AIDL Hal 开发指南1—— 开发环境准备 020.AIDL Hal 开发指南 3 ———— AIDL HAL 实例分析1→

最近更新
01
如何调试 SurfaceFlinger
10-05
02
SurfaceFlinger 概述
10-05
03
HWC 接口分析
10-05
更多文章>
Theme by Vdoing | Copyright © 2020-2025 AHao Framework | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式