当前位置: 首页 > 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`

相关文章:

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

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 新书发布:《Android系统多媒体进阶实战》🚀 优质专栏: Audio工程师进阶系列…...

【专题】2024年7月人工智能AI行业报告合集汇总PDF分享(附原数据表)

原文链接:https://tecdat.cn/?p37350 随着人工智能技术的飞速发展,AI已经成为当今时代的重要驱动力。本报告将聚焦于人工智能AI行业的最新动态,涵盖客户服务、体验营销、资产管理以及国产AI大模型应用等多个领域。通过深入研究和分析,我们…...

干货分享|如何使用Stable Diffusion打造会说话的数字人?

数字人已不是什么新鲜名词了。在许多领域,尤其是媒体和娱乐领域,经常可以看到卡通形象的人物或逼真的虚拟主持人。在Stable Diffusion中,我们可以上传一段录制好的音频文件,然后使用SadTalker插件,将音频和图片相结合&…...

OrangePi AIpro学习4 —— 昇腾AI模型推理 C++版

目录 一、ATC模型转换 1.1 模型 1.2 ATC工具 1.3 实操模型转换 1.4 使用ATC工具时的一些关键注意事项 1.5 ATC模型转换命令举例 二、运行昇腾AI模型应用样仓程序 2.1 程序目录 2.2 下载模型和模型转换 2.3 下载图片和编译程序 2.4 解决报错 2.5 运行程序 三、运行…...

vue js 多组件异步请求解决方案

接口之间异步问题可以采用Promiseasyncawait 链接: https://blog.csdn.net/qq_39816586/article/details/103517416 使用场景: 1.保障用户必须完成自动登录,才调用后续逻辑 2.保障必须完成初始启动,才调用后续逻辑 3.保障先执行on…...

【Android】不同系统版本获取设备MAC地址

【Android】不同系统版本获取设备MAC地址 尝试实现 尝试 在开发过程中,想要获取MAC地址,最开始想到的就是WifiManager,但结果始终返回02:00:00:00:00:00,由于用得是wifi ,考虑是不是因为用得网线的原因,但…...

残差网络--NLP上的应用

在自然语言处理(NLP)领域,残差网络(ResNet)同样有着广泛的应用。虽然最初的残差网络设计是为了处理图像任务,但其核心思想也被成功地迁移到了自然语言处理任务中,以解决深层神经网络中的退化问题…...

1章4节:数据可视化, R 语言的静态绘图和 Shiny 的交互可视化演示(更新2024/08/14)

在数据科学的世界中,“一图胜千言”的古老谚语依然适用。数据可视化不仅仅是将数据以图形化的方式展现,更是帮助我们发现数据背后隐藏模式、趋势和异常的强大工具。R语言作为数据科学的主要编程语言之一,以其强大的可视化能力而闻名,许多数据科学家和分析师因此选择了R作为…...

浅谈个人用户如何玩转HTTP代理

今天,准备和大家聊聊我是如何玩转HTTP代理的,希望能给大家带来一些启发和帮助。 犹记得刚开始接触HTTP代理时,我对它还是一无所知。那时我总被各种网络限制所困扰,无法随心所欲地访问我想看的网站。直到HTTP代理的出现&#xff0c…...

动手研发实时口译系统

重磅推荐专栏: 《大模型AIGC》 《课程大纲》 《知识星球》 本专栏致力于探索和讨论当今最前沿的技术趋势和应用领域,包括但不限于ChatGPT和Stable Diffusion等。我们将深入研究大型模型的开发和应用,以及与之相关的人工智能生成内容(AIGC)技术。通过深入的技术解析和实践经…...

C#(asp.net)电商后台管理系统-计算机毕业设计源码70015

摘 要 随着互联网技术的不断发展,电商行业也越来越受到人们的关注。为了提高电商行业的管理效率和服务水平,本文提出了一种基于ASP.NET电商后台管理系统的设计与实现方案。 电商管理系统基于VisualStudio开发平台,采用C#编程语言和ASP.NET等技…...

Unity 中创建动画的教程

Unity 动画创建教程 在游戏开发中,生动的动画能够极大地提升玩家的体验。在这篇教程中,我们将一起探索如何在 Unity 中创建动画。 一、准备工作 首先,确保您已经安装了最新版本的 Unity 引擎。创建一个新的 Unity 项目或者打开您现有的项目…...

2024年最全渗透测试学习指南,小白也能轻松hold住!零基础到精通,看完这篇就够了!

可能会有很多人觉得渗透测试门槛很高,学习周期长,似乎只有天赋异禀者方能涉足。实则不然,渗透测试行业虽有其专业门槛,但绝非如外界渲染的那样高不可攀。归根结底,所需的基础不过是扎实的编程语言功底,同时…...

有道云docx转换markdown,导入hugo发布到github page,多平台发布适配

版权归作者所有,如有转发,请注明文章出处:https://cyrus-studio.github.io/blog/ 有道云导出docx 有道云笔记右上角更多按钮选择【导出为Word】,可以导出docx文档 docx转换markdown 尝试了几个docx转markdown的python库后&…...

如何理解:进程控制

文章目录 前言:进程创建:进程终止:如何终止进程?进程等待非阻塞等待: 总结: 前言: ​ 对于前面的地址空间的学习,我们现在了解到原来所谓变量的地址其实是虚拟地址,该虚…...

工业互联网边缘计算实训室解决方案

一、引言 随着物联网(IoT)、5G通信技术的快速发展,工业互联网已成为推动制造业转型升级的重要力量。边缘计算作为云计算的延伸和补充,在实时数据分析、降低数据传输延迟、提升处理效率及增强数据安全性方面展现出巨大潜力。在此背…...

Android全面解析之Context机制(一) :初识Android context

什么是Context 回想一下最初学习Android开发的时候,第一用到context是什么时候?如果你跟我一样是通过郭霖的《第一行代码》来入门android,那么一般是Toast。Toast的常规用法是: Toast.makeText(this, "我是toast", To…...

气象百科——气象监测站的介绍

气象监测站是专门用于监测和记录大气环境状态及变化规律的设施。这些站点通过安装各种观测仪器,如温度传感器、湿度传感器、气压传感器、风速风向传感器、雨量传感器以及近年来兴起的雷达水位计等,全方位、多角度地收集大气中的温度、湿度、气压、风速风…...

学懂C++(三十):高级教程——深入解析 C++ Windows API 的多线程支持

引言 在现代应用程序中,多线程编程是实现高性能和高并发任务的关键手段。Windows 操作系统为开发者提供了一套强大的 API,用于创建和管理线程、同步任务,并优化线程性能。本文将深入探讨 C 中 Windows API 的多线程支持,详细介绍线…...

苹果笔记本电脑可以玩steam游戏吗 MacBook支持玩steam游戏吗 在Steam上玩黑神话悟空3A大作 苹果Mac怎么下载steam

游戏是生活的润滑剂,越来越多的用户开始关注Mac平台上可玩的游戏。幸运的是,Steam作为最大的数字发行平台之一,提供了大量适用于Mac操作系统的游戏。无论你是喜欢策略、冒险还是射击类游戏,都能在Steam上找到适合自己Mac设备玩耍的…...

[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?

🧠 智能合约中的数据是如何在区块链中保持一致的? 为什么所有区块链节点都能得出相同结果?合约调用这么复杂,状态真能保持一致吗?本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里&#xf…...

第19节 Node.js Express 框架

Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...

STM32F4基本定时器使用和原理详解

STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》

在注意力分散、内容高度同质化的时代,情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现,消费者对内容的“有感”程度,正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中&#xff0…...

【配置 YOLOX 用于按目录分类的图片数据集】

现在的图标点选越来越多,如何一步解决,采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集(每个目录代表一个类别,目录下是该类别的所有图片),你需要进行以下配置步骤&#x…...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...

Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战

说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下,风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

深度学习水论文:mamba+图像增强

🧀当前视觉领域对高效长序列建模需求激增,对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模,以及动态计算优势,在图像质量提升和细节恢复方面有难以替代的作用。 🧀因此短时间内,就有不…...