当前位置: 首页 > news >正文

Android14之解决编译libaaudio.so报错问题(二百二十七)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!

新书发布:《Android系统多媒体进阶实战》🚀
优质专栏: Audio工程师进阶系列原创干货持续更新中……】🚀
优质专栏: 多媒体系统工程师系列原创干货持续更新中……】🚀
优质视频课程:AAOS车载系统+AOSP14系统攻城狮入门视频实战课 🚀

人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.

更多原创,欢迎关注:Android系统攻城狮

欢迎关注Android系统攻城狮

🍉🍉🍉文章目录🍉🍉🍉

    • 🌻1.前言
    • 🌻2.Android之AAudio介绍
    • 🌻3.解决方案
      • 🐓3.1 问题复现
      • 🐓3.2 解决方案

🌻1.前言

本篇目的:Android14之解决编译libaaudio.so报错问题

🌻2.Android之AAudio介绍

  • AAudio是Android系统中一个重要的音频框架,它为开发者提供了一套低延迟的音频接口,使得应用程序能够在音频输入和输出方面实现更高的性能。自Android 8.1(API级别27)起,AAudio成为官方支持的音频API,主要用于满足专业音频应用和游戏开发的需求。
  • AAudio的特点主要体现在以下几个方面:
  1. 低延迟:AAudio专为低延迟音频应用设计,相较于传统的Java Audio API,AAudio的延迟更低,更适合实时音频处理场景,如音乐制作、现场演出和游戏音效等。
  2. 高性能:AAudio采用C++编写,提供了高效的音频处理能力。通过直接操作硬件,减少了中间环节,提高了音频处理的性能。
  3. 简洁的API:AAudio的API设计简洁,易于上手。开发者可以轻松地实现音频数据的读取和写入,降低了音频开发的门槛。
  4. 流式处理:AAudio采用流式处理方式,音频数据以块(Buffer)的形式进行传输。这种方式有利于提高音频处理的效率,减少内存拷贝。
  5. 全双工支持:AAudio支持全双工音频,即同时进行音频输入和输出,适用于需要同时处理麦克风和扬声器数据的场景。
  6. 音频设备管理:AAudio提供了音频设备的查询和管理功能,开发者可以轻松获取设备信息,如采样率、通道数等,并根据需求进行配置。
    以下是AAudio的基本使用流程:
  7. 创建AAudio引擎:首先,调用AAudio_createEngine函数创建一个AAudio引擎实例。
  8. 打开音频流:通过AAudioEngine_openStream函数打开音频流,指定音频流的方向(输入或输出)、采样率、通道数等参数。
  9. 设置回调函数:为音频流设置回调函数,用于处理音频数据。在回调函数中,开发者可以实现对音频数据的读取和写入。
  10. 启动音频流:调用AAudioStream_requestStart函数启动音频流,开始音频数据的传输。
  11. 处理音频数据:在回调函数中,根据音频流的方向,进行音频数据的读取或写入操作。
  12. 关闭音频流:当音频处理完毕后,调用AAudioStream_requestStop函数停止音频流,并释放相关资源。
  • AAudio为Android音频开发提供了强大的支持,使得开发者能够轻松实现低延迟、高性能的音频应用。随着Android系统的不断升级,AAudio将在音频领域发挥越来越重要的作用。

🌻3.解决方案

🐓3.1 问题复现

# cd frameworks/av/media/libaaudio
# mm -j12
  • 报错如下:
FAILED: .soong/.intermediates/frameworks/av/media/libaaudio/fuzzer/libaaudio_fuzzer/android_arm64_armv8-a_fuzzer/unstripped/libaaudio_fuzzer
ld.lld: error: undefined symbol: android::AVMediaUtils::sInst
>>> referenced by AVMediaExtensions.h:52 (frameworks/av/media/libavextensions/media/AVMediaExtensions.h:52)
>>>               AudioTrack.o:(android::AudioTrack::createTrack_l()) in archive
clang-17: error: linker command failed with exit code 1 (use -v to see invocation)
13:43:29 ninja failed with: exit status 1#### failed to build some targets (22 seconds) ####
  • 如果遇到以上使用mm编译命令来编译,每一次都会有依赖,所以要把没有编译到库,要一一的编译出来,这样就很浪费时间。

🐓3.2 解决方案

# croot
# make libaaudio -j`nproc`
http://www.lryc.cn/news/424605.html

相关文章:

  • 【专题】2024年7月人工智能AI行业报告合集汇总PDF分享(附原数据表)
  • 干货分享|如何使用Stable Diffusion打造会说话的数字人?
  • OrangePi AIpro学习4 —— 昇腾AI模型推理 C++版
  • vue js 多组件异步请求解决方案
  • 【Android】不同系统版本获取设备MAC地址
  • 残差网络--NLP上的应用
  • 1章4节:数据可视化, R 语言的静态绘图和 Shiny 的交互可视化演示(更新2024/08/14)
  • 浅谈个人用户如何玩转HTTP代理
  • 动手研发实时口译系统
  • C#(asp.net)电商后台管理系统-计算机毕业设计源码70015
  • Unity 中创建动画的教程
  • 2024年最全渗透测试学习指南,小白也能轻松hold住!零基础到精通,看完这篇就够了!
  • 有道云docx转换markdown,导入hugo发布到github page,多平台发布适配
  • 如何理解:进程控制
  • 工业互联网边缘计算实训室解决方案
  • Android全面解析之Context机制(一) :初识Android context
  • 气象百科——气象监测站的介绍
  • 学懂C++(三十):高级教程——深入解析 C++ Windows API 的多线程支持
  • 苹果笔记本电脑可以玩steam游戏吗 MacBook支持玩steam游戏吗 在Steam上玩黑神话悟空3A大作 苹果Mac怎么下载steam
  • 海康摄像头(测温型)桌面客户端开发分享
  • 骑行耳机哪个品牌性价比高?精选五大畅销骑行耳机推荐!
  • libcurl8.9.1 上传json
  • 什么是暗水印?企业暗水印如何实施?企业保护利器
  • Qt 系统相关 - 文件
  • Android Toast居中显示方法二
  • Vue启动时报异常 ‘error:03000086:digital envelope routines::initialization error‘
  • C#委托—马工教你轻松玩转委托
  • 当下最强的 AI art 生成模型 Stable Diffusion 最全面介绍
  • NPM 使用教程:从入门到精通
  • 基于ssm+vue+uniapp的停车场小程序的设计与实现