aosp15的audio hal的相关库情况介绍

AOSP15音频HAL库全解析:从源码路径到厂商定制so的实战指南 本文深入解析了AOSP15音频HAL库的架构与开发实践,涵盖从源码路径定位到厂商定制化so库开发的完整流程。文章详细探讨了HIDL接口、编译机制、多版本兼容性处理以及性能优化等核心议题,为Android音频系统开发者提供了一份全面的实战指南。 阅读详情

背景:

本节重点来讲解一下aosp15上面模拟器设备上audio相关hal库的情况,主要针对so的编译情况及对应源码目录情况进行详细介绍。

audio相关hal库介绍

hal对应的守护进程
模拟器上audio的hal其实有一个守护进程,这个守护进程就是hidl的服务端,因为audio目前还是使用hidl进行通讯,客户端一般是AudioFlinger。

emulator_x86_64:/vendor/lib64/hw # ps -A | grep audio 
audioserver    294     1      47440   6180 binder_ioctl_write_read 0 S android.hardware.audio.service

这个android.hardware.audio.service进程对应的代码位置如下:
hardware/interfaces/audio/common/all-versions/default/service/Android.bp
在这里插入图片描述核心代码主要就是这个service.cpp,当然还有肯定包含了很多的接口实现,不过一般这些实现都会有对应的so文件
hardware/interfaces/audio/common/all-versions/default/service/service.cpp

在这里插入图片描述

audio hal相关实现的so库情况,注意这些so运行一般都是在android.hardware.audio.service这个守护进程中

emulator_x86_64:/vendor/lib64/hw # ls | grep audio
android.hardware.audio.effect@7.0-impl.so  --aosp默认实现effect相关的库
android.hardware.audio.legacy@7.1-impl.ranchu.so  
--厂商实现的相关音频核心业务库不过这里是legacy即过期维护的,其实这个本质也是aosp原生的实现,具体文章稍后介绍
android.hardware.audio@7.1-impl.ranchu.so --厂商实现的相关音频核心业务库
audio.bluetooth.default.so --aosp默认实现bluetooth相关的库
audio.primary.default.so --aosp默认实现primary相关的库
audio.r_submix.default.so --aosp默认实现r_submix相关的库

audio相关的核心库主要分为2部分,一类一般带有“default”字符和没有带具体厂商设备名字“ranchu”,这些so代表aosp默认自带实现的,如果有厂商实现的so一般都是先用厂商的so。
default对应so的源码位置:

android.hardware.audio.effect@7.0-impl.so库对应的源码和bp文件

hardware/interfaces/audio/effect/all-versions/default/ —源码目录
hardware/interfaces/audio/effect/all-versions/default/Android.bp —对应的bp
在这里插入图片描述

android.hardware.audio.legacy@7.1-impl.ranchu.so 库对应的源码和bp文件
这个库相对比较特殊因为它带着厂商设备名字“ranchu”,所以自然寻找bp时候要去厂商相关的目录寻找

device/generic/goldfish/audio/Android.bp --对应的目标的bp文件
在这里插入图片描述
这里可以看到确实在厂商设备目标的Android.bp中有编译这样的so目标,但是它编译的依赖是:
android.hardware.audio@7.1-impl_default,这个default并没有在厂商设备目录下的bp中出现过,最后寻找发现居然是在默认hal的目录寻找到了:
hardware/interfaces/audio/core/all-versions/default/Android.bp
在这里插入图片描述
这个对应的源码就是如下:
在这里插入图片描述
在这里插入图片描述

android.hardware.audio@7.1-impl.ranchu.so 库对应的源码和bp文件
这个库就是纯正的厂商提供的hal库,相关源码都在厂商目录

device/generic/goldfish/audio/Android.bp -对应bp文件在这里插入图片描述
对应的代码路径:device/generic/goldfish/audio/
在这里插入图片描述
其他几个都是default的so

audio.bluetooth.default.so --aosp默认实现bluetooth相关的库
bluetooth稍微特殊一点,因为源码不在hardware目录
代码路径:
packages/modules/Bluetooth/system/audio_bluetooth_hw/
bp路径
packages/modules/Bluetooth/system/audio_bluetooth_hw/Android.bp

audio.primary.default.so --aosp默认实现primary相关的库

代码路径:
hardware/libhardware/modules/audio/
bp路径
hardware/libhardware/modules/audio/Android.bp

audio.r_submix.default.so --aosp默认实现r_submix相关的库

代码路径:
hardware/libhardware/modules/audio_remote_submix/
bp路径
hardware/libhardware/modules/audio_remote_submix/Android.bp

aosp15版本hal的so和代码路径:
最重要的就是厂商实现的,其他default都是比较容易找到
在这里插入图片描述

AOSP15音频HAL库实战:从源码编译到模拟器部署全流程解析 本文详细解析了AOSP 15音频HAL库的实战开发流程,涵盖从源码结构分析、HIDL接口定位、模块编译到模拟器部署与调试的全过程。重点剖析了ranchu模拟器音频HAL的实现细节,并提供了添加虚拟环绕声功能的完整案例,为Android音频系统定制与问题排查提供实用指南。 阅读详情

相关推荐

AOSP15蓝牙音频HAL完全拆解:原理、编译与调试

Android系统架构中,硬件抽象层(HAL)是连接Framework与底层音频硬件的关键桥梁,蓝牙音频HAL更是其中复杂且独立的一环。随着AOSP 15推进,音频接口从HIDL向AIDL迁移,导致蓝牙音频模块的进程通信、服务注册和接口契约发生显著变化。围绕audio.bluetooth.default.so这一核心实现,从系统分层、HIDL机制、编译链接、启动加载到实际调试展开分析,剖析它如何承载A2DP、HFP及LE Audio多路音频通路,并解释常见问题如无声、卡顿、接口版本不匹配的定位方法。适合从事

weixin_34198881的博客 328

AOSP添加新硬件设备开发-HAL层

Android 系统为硬件抽象层中的模块接口定义编写规范,我们必须按照这个规范来编写自己的硬件模块接口,否则就会导致无法正常访问硬件。 抽象层命名 Android 系统的硬件抽象层以模块的形式来管理各个硬件访问接口。每一个硬件模块都对应有一个动态链接库文件,动态链接库文件的命名要符合一定的规范。 抽象层模块使用结构体hw_module_t来描述设备 硬件设备使用结构体hw_device_t描述。 那么该如何命名呢? 硬件抽象层模块的命名定义在aosp/hardware/libhardware/ha

fhaitao900310的博客 1881

AOSP -- 第一章 概述

在 AOSP 开源底层与面向消费者的设备之间,还存在一层厂商定制层。厂商定制界面品牌核心修改内容三星一体界面自定义系统界面、多窗口增强、桌面模式、诺克斯安全体系、S Pen 手写笔适配、自研相机架构小米MIUI / 澎湃 OS重度定制界面、自研桌面、控制中心、安全应用、应用双开功能OPPO / 一加色彩 OS / 氧 OS自定义息屏显示、桌面负一屏、禅定模式、定制图库与相机谷歌像素原生体验材质你动态取色主题、像素专属桌面、张量芯片专属优化、像素独占功能华为EMUI / 鸿蒙。

dengfuma的专栏 288

aosp hal开发

aosp hal开发

书山有路勤为径 989

Android系统定制开发:从AOSP源码到可烧录ROM的完整工程实践

Android系统定制开发是基于AOSP源码构建可验证、可调试、可量产的定制化ROM的底层工程能力。其核心在于理解Linux内核调度、ext4分区机制、HAL接口规范(HIDL/AIDL)及Treble架构下的system/vendor/product分区协同逻辑。技术价值体现在突破App层抽象限制,实现硬件级控制——如动态开机Logo、USB外设优先识别、SELinux策略定制等。典型应用场景覆盖IoT固件定制、系统性能深度优化与移动安全研究。本文聚焦从源码同步、编译环境搭建、HAL层改造到fastboo

weixin_33843947的博客 443

手把手调试Android音频HIDL服务:用logcat追踪audioserver与HAL层交互

本文提供了调试Android音频HIDL服务的系统性方法,重点讲解如何利用logcat追踪audioserver与HAL层的交互过程。文章涵盖进程状态分析、HAL库加载、Binder通信日志解读,并结合AOSP 15模拟器环境,通过实战案例(如effect@7.0-impl.so初始化失败)演示问题排查流程,帮助开发者快速定位音频播放、录音等问题的根源。

ik67890123的博客 212

Android AOSP 添加自定义服务流程

Aosp 添加自定义服务流程

qq_35701375的博客 1983

【aosp 中,Core Specification 版本 与 各子协议版本 之间的关系】

本文探讨了如何确定AOSP代码中蓝牙核心规范(Bluetooth Core Specification)及其子协议的版本。首先,通过表格列出了不同Android版本对应的蓝牙协议版本,指出AOSP的蓝牙栈支持与硬件、驱动和HAL实现密切相关。其次,解释了蓝牙核心规范版本与子协议(如L2CAP、GATT、AVDTP等)的关系,并指出子协议版本是独立演进的。最后,提供了在AOSP代码中查询子协议版本的方法,例如通过查看avrc_api.h文件来确定AVRCP版本。总结指出,核心规范版本随AOSP版本升级,而子协

奔跑吧 android 的博客 1690

AOSP添加新硬件设备开发-HIDL层

目录 一 ,准备 二,添加hal文件 三,实现hal文件 四,添加service 五,启动rc文件 六,生成Android.bp文件 七,SELinux权限 八,编译 android设备添加一个外围设备,不像嵌入式那么简单,系统越复杂加入的方式越杂,但是万物都有规矩可寻,有方法可走。这篇文章就说说HAL和用户之间的接口HIDL。 Google:https://source.android.google.cn/devices/architecture/hidl google 官方这样解释

fhaitao900310的博客 2513

RK3568平台Android15系统AUDIO音频子系统框架(一)

本文介绍了RK平台Android15系统的音频子系统架构。该系统基于标准ALSA框架,包含硬件层(RK3568 I2S控制器+RK809音频编解码器)、内核层(ASoC框架+驱动)、HAL层(tinyalsa_hal)和Android上层(AudioFlinger等)。重点阐述了音频信号转换原理(ADC/DAC)、I2S总线协议以及开发注意事项,指出90%的开发工作集中在HAL层路由映射、设备树配置和Codec驱动修改。特别介绍了DAPM技术如何通过动态管理音频路径来优化功耗。系统整体采用模块化设计,既遵循

Android/Linux驱动开发传帮带学习,让驱动入门门槛更低! 295

Git GUI学习教程

学习宗旨:快速应用,不易忘记 很遗憾,申请Git的专栏未审批,那我就不再写专栏了,把最近的学习心得写一下,我也是在学习中进行,有任何问题直接留言,回复交流,我还采用思路+实践模式快速过。 目录 1、Git是什么 2、远程仓库 1)GitHub: 2)Gitee(码云): 3、安装Git(Windows) 1)下载 ...

Alexantao 的专栏 7252

安卓基础 | AOSP 架构与内核

Android 开放系统平台 (AOSP) 是公开发布且可修改的 Android 源代码。任何人都可以下载并修改其设备的 AOSP。AOSP 提供 Android 移动平台的完整且功能完备的实现。注意:AOSP 无法为需要后端服务的应用(例如云消息传递或高级位置信息服务应用)提供支持。此外,AOSP 并没有包含特定类型的设备可能需要的一整套最终用户应用。

叫好与叫座虽然不是对立面,但想在同一个作品中达到双重效果很难。 4600

视觉机器人抓取实战:从物体定位到抓取估计的完整流程解析(附Python代码示例)

本文详细解析了视觉引导机器人抓取的完整技术流程,涵盖从物体定位、位姿估计到抓取估计的核心步骤。通过Python代码示例,演示了如何使用Open3D等工具进行点云处理、平面分割、PCA与ICP位姿估计,以及基于几何启发式的抓取生成方法,为机器人视觉抓取开发提供了清晰的实战指南。

peach的博客 913

深入解析AOSP15音频HAL:HIDL架构与关键库实现

本文深入解析了AOSP15音频HAL的HIDL架构与关键库实现。文章详细阐述了音频HAL作为硬件抽象层,如何通过HIDL接口定义语言实现跨分区通信,并重点剖析了audioserver守护进程的核心作用及音频HAL关键库(如android.hardware.audio@7.1-impl.ranchu.so)的源码结构与分类。最后,提供了为模拟器编译并替换音频HAL库的实战操作指南。

weixin_29294395的博客 351

ROS-Industrial :simple_message

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录1. 概述2. 协议(Protocol)3. HEADER解析3.1 MSG_TYPE3.2 COMM_TYPE3.3 REPLY CODE 1. 概述 Simple_Message是ROS-Industrial的一部分,定义了用于与工业机器人控制器通信的简单消息连接协议。另外还包括处理连接受限系统的处理器和管理器类。 2. 协议(Protocol) 简单消息(simplemessage)协议定义了ROS的驱动层和机器人控制器之.

flsxyw的博客 780

LabVIEW Modbus TCP通信避坑指南:解决连接中断、服务器异常与自动重连问题

本文详细解析了LabVIEW环境下Modbus TCP通信的常见问题,包括连接中断、服务器异常等,并提供了自动重连机制的实现方案。通过优化错误处理、超时参数和资源管理,帮助开发者构建更稳定的工业级Modbus TCP客户端,显著提升通信可靠性。

weixin_42525211的博客 424

实战AOSP15音频子系统:手把手调试audio.bluetooth.default.so的5个关键断点

本文提供了在AOSP15系统中调试蓝牙音频HAL模块audio.bluetooth.default.so的实战指南。通过手把手教学,详细介绍了如何设置5个关键断点,包括adev_open_output_stream、out_write等核心函数,以精准定位音频延迟、无声等问题的根源,帮助开发者深入理解蓝牙音频子系统的数据流与控制流。

loss4bartender的博客 890

AI Agent开发大全第二十课-如何开发一个MCP(从0开发一个MCP Server)

大模型的MCP火了,可是无论是Claude官网本身自带Sample还是全网任何一本教程没有一个可以真正应用在生产环境中的。要么就是只能在本地以文件IO流的方式运行要么干脆连编译都出错,真正的mcp server和client是怎么编写的?如何运行在分布式环境?本教程就带大家真正从0开始以“AI计算食物热量“为例带大家真正学习mcp开发的全过程。

打造全国最全的AI Agent开发知识领域的博客 1802

实战指南:如何在AOSP15上快速定位audio.primary.default.so崩溃问题(附调试技巧)

本文详细解析了在AOSP15开发环境中audio.primary.default.so音频驱动崩溃问题的排查与解决方案。通过系统日志分析、HIDL服务调试和HAL层深度调试等技巧,帮助开发者快速定位内存访问越界、HIDL通信异常等常见问题,并提供预防性编程实践和自动化测试策略,确保音频系统的稳定性。

fff88的博客 934

蓝桥杯第七届省赛试题--“模拟风扇控制系统”

题目要求 功能简述 “模拟风扇控制系统”能够模拟电风扇工作,通过按键控制风扇的转动速度和定时时间,数码管实时显示风扇的工作模式,动态倒计时显示剩余的定时时间,系统主要由数码管显示、单片机最小系统、按键输入和电机控制保护电路组成,系统框图如图 1 所示: 单总线驱动程序、CT107D 单片机考试平台电路原理图以及本题所涉及到的芯片数据手册,可参考计算机上的电子文档。程序流程图及相关工程文件请以考生...

qq_43280087的博客 2659

SCADA|测试KingSCADA4.0信创版采集汇川PLC AC810数据

摘要:雷工分享KingSCADA4.0信创版采集汇川PLC数据的配置过程。由于项目繁忙,笔记更新延迟。信创产业要求采用国产化产品,此次通过ModbusTCP协议连接AC810 PLC。主要步骤包括:新建IOServer应用(需厂家协助从3.8升级至4.0)、安装ModbusTCP驱动、配置设备地址(192.168.1.88:5021)、运行IOServer并通过网页监控变量。尽管信创版操作体验较差,但出于国产化战略需要仍需使用。雷工表示理解产品初期不足,相信未来会逐步优化。2025年4月11日记录于四川绵阳

做有价值的事,积累有价值的笔记! 863

安卓15 audio新专题发布:安卓系统手机车机音频audio子系统深入实战开发专题

从简单的基础专题开始学习,以最熟悉的声音播放为主线对整个涉及的音频框架系统进行挨个模块剖析,这里面涉及App层面,AudioFlinger,AudioPolicy等模块,都会带你进行详细剖析,而且还对较难的音频hal部分也进行了深入讲解,同时也会讲解音频实战开发中,经常使用的dumpsys命令及命令输出相关源码及代表意义。3、公司级别的项目实战为主导,让你学习的音频系统的源码分析理论知识可以直接用于实现公司级别的项目需求,真实带你手把手实现项目需求,包括方案预言,调研其他厂商,方案设计,代码实现等。

learnframework的博客 1661

SAP Fiori 从技术上而言到底包含哪些组件?

SAP Fiori是企业级UX设计的系统化解决方案,基于五大原则构建:角色导向(Role-based)、自适应(Adaptive)、简洁(Simple)、一致(Coherent)和愉悦(Delightful)。其技术实现包含SAPUI5开发框架、Fiori Launchpad统一入口、OData服务网关等核心组件,通过标准化设计模式与开发工具链,显著提升企业应用的用户体验和开发效率。典型案例显示,遵循Fiori原则可缩短30%以上的操作时长,降低50%的培训成本。该体系既保持跨设备一致性,又支持业务场景的深

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 223

Android音频HAL深度解析:从HIDL/AIDL到audio.bluetooth.default.so完整链路

Android系统音频 HAL 是连接 AudioFlinger 与底层硬件的关键层,其实现形态从早期的 libhardware 演进到 HIDL,再到如今的 Stable AIDL。理解 HAL 的接口定义与代码生成机制,是进行系统音频、蓝牙音频以及驱动开发的基础。HAL 通过固定命名规则编译成共享库,由 audioserver 进程按需加载,并基于 Binder 或直通模式与上层通信。在蓝牙音频场景中,audio.bluetooth.default.so 作为默认蓝牙音频 HAL,承载着 A2DP 与

weixin_34008784的博客 286

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

【车载audio】【CarAudioService 04】【通过最大音量和默认音量的设置来学习car_audio_configuration.xml文件】

摘要 本文分析了Android车机系统中音量配置的解析过程。系统启动时,CarAudioService通过getAudioConfigurationPath()获取配置文件路径/vendor/etc/audio_ar/car_audio_configuration.xml。当init()被调用时,若启用动态路由(mUseDynamicRouting=true),会触发setupDynamicRoutingLocked()进行核心配置。关键步骤包括:1) 通过loadCarAudioZonesLocked()

奔跑吧 android 的博客 816

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

上一篇: 安卓15/aosp15/lineage21使用brunch编译老是报错OOM内存不足
下一篇: wms窗口/多窗口/自由窗口systemui侧边栏手势退出实战-学员作业
千里马学框架
博客等级 码龄6年 1万+粉丝 650原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

千里马学框架

帮助你了,就请我喝杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值