Android14之解决编译libaaudio.so报错问题(二百二十七)
简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!
新书发布:《Android系统多媒体进阶实战》🚀
优质专栏: Audio工程师进阶系列【原创干货持续更新中……】🚀
优质专栏: 多媒体系统工程师系列【原创干货持续更新中……】🚀
优质视频课程:AAOS车载系统+AOSP14系统攻城狮入门视频实战课 🚀
人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.

🍉🍉🍉文章目录🍉🍉🍉
- 🌻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的特点主要体现在以下几个方面:
- 低延迟:AAudio专为低延迟音频应用设计,相较于传统的Java Audio API,AAudio的延迟更低,更适合实时音频处理场景,如音乐制作、现场演出和游戏音效等。
- 高性能:AAudio采用C++编写,提供了高效的音频处理能力。通过直接操作硬件,减少了中间环节,提高了音频处理的性能。
- 简洁的API:AAudio的API设计简洁,易于上手。开发者可以轻松地实现音频数据的读取和写入,降低了音频开发的门槛。
- 流式处理:AAudio采用流式处理方式,音频数据以块(Buffer)的形式进行传输。这种方式有利于提高音频处理的效率,减少内存拷贝。
- 全双工支持:AAudio支持全双工音频,即同时进行音频输入和输出,适用于需要同时处理麦克风和扬声器数据的场景。
- 音频设备管理:AAudio提供了音频设备的查询和管理功能,开发者可以轻松获取设备信息,如采样率、通道数等,并根据需求进行配置。
以下是AAudio的基本使用流程: - 创建AAudio引擎:首先,调用AAudio_createEngine函数创建一个AAudio引擎实例。
- 打开音频流:通过AAudioEngine_openStream函数打开音频流,指定音频流的方向(输入或输出)、采样率、通道数等参数。
- 设置回调函数:为音频流设置回调函数,用于处理音频数据。在回调函数中,开发者可以实现对音频数据的读取和写入。
- 启动音频流:调用AAudioStream_requestStart函数启动音频流,开始音频数据的传输。
- 处理音频数据:在回调函数中,根据音频流的方向,进行音频数据的读取或写入操作。
- 关闭音频流:当音频处理完毕后,调用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代理的出现,…...
动手研发实时口译系统
重磅推荐专栏: 《大模型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设备玩耍的…...
使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...
深度学习在微纳光子学中的应用
深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...
【Linux】shell脚本忽略错误继续执行
在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...
React hook之useRef
React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...
LeetCode - 394. 字符串解码
题目 394. 字符串解码 - 力扣(LeetCode) 思路 使用两个栈:一个存储重复次数,一个存储字符串 遍历输入字符串: 数字处理:遇到数字时,累积计算重复次数左括号处理:保存当前状态&a…...
[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?
论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...
多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验
一、多模态商品数据接口的技术架构 (一)多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如,当用户上传一张“蓝色连衣裙”的图片时,接口可自动提取图像中的颜色(RGB值&…...
【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...
