首页 > 解决方案 > 音频单元 v3 扩展未出现在主机应用程序中

问题描述

我正在尝试向我的 iOS 应用程序添加音频单元扩展。我在 Xcode 中使用 File > New > Target > Audio Unit Extension 来使用内置模板,填写信息以填充 Info.plist 文件,然后构建并运行我的应用程序。即使音频单元还没有做任何事情,我希望此时音频单元对主机应用程序是可见的,但事实并非如此。

我下载并运行了 Apple 的 FilterDemo 应用程序,它创建了一个类似于我从 Xcode 模板中获得的音频单元扩展,并出现在主机应用程序中(我使用 Auria 作为主机来测试音频单元)。

我已经尝试运行我的应用程序的主要目标,或者运行扩展目标并选择 Auria 作为主机应用程序,但都不起作用。运行 FilterDemo 应用程序时,我只运行了主要目标,并且运行良好。

我浏览了 Info.plist 并构建了将 FilterDemo 与我的应用程序进行比较的设置,但我没有发现任何显着差异。我还打开了 Xcode 构建文件夹并查看了我在调试模式下运行的应用程序包,并确认我的音频单元扩展(.appex 包)在插件文件夹中。

在 Info.plist 文件中,我的扩展类型是 augn (generator),制造商是测试,描述是共享音频。我尝试对这些设置进行一些更改,但这并没有帮助。

我认为现有的应用间音频功能可能会产生干扰,因此我从容器应用的 Info.plist 文件中删除了 AudioComponents 部分。这使得 IAA 组件从主机应用程序中消失,但没有使 AUv3 组件出现。

我已经阅读了App Extension Programming GuideAUAudioUnit 类参考本教程这个,以及WWDC 介绍此功能的记录,但没有一个提到使扩展对宿主应用程序可见所需的任何额外步骤.

我错过了什么?

标签: iosaudioaudiounit

解决方案


您应该首先运行应用程序安装,然后运行扩展程序:

  1. 创建一个空的iOS项目,可以命名为HostAU
  2. 为 iOS 创建一个名为 EffectAU 的音频单元扩展目标
  3. 将 Audio Unit Type 设置为 Effect,Subtype Code 设置为 oiuy,Ma​​nufacturer Code 设置为 Oiuy
  4. 然后在您的 iOS 设备中运行 HostAU
  5. 运行 EffectAU 后,选择 Garage Band 作为目标(确保已将其安装在 iOS 设备中)
  6. 在 Garage Band 中选择任何乐器,按下按钮设置将其显示在左侧并找到“PLUG-INS & EQ”部分。
  7. 按此栏进行编辑并按顶部的编辑,然后按任意加绿色按钮添加一个新的。
  8. 在顶部找到音频单元扩展分段控制选项,然后您将能够看到音频单元扩展图标、名称和制造商代码

相同的过程在 MacOS 中有效,但您应该创建并清空 MacOs 项目和 MacOS 音频单元扩展目标。如果您使用的是 MacOS Catalyst,请为两个平台创建两个音频单元扩展,并在 Project > Build Phases > "Embed App Extensions" 中配置哪个平台将用于哪个平台。

当您运行扩展目标 MacOS Garage Band 时,请确保在 Preferences > Audio/Midi > Enable Audio Units 中启用了 AudioUnit 菜单。然后在 Track > Plug-ins > Audio Units > {Manufacturer Code} > {Audio Unit Extension Name} 中配置它。

在 MacOS 中,shell 命令pluginkit -mauval -a帮助您检查插件是否安装在 MacOS 中以及音频单元是否被识别。

我使用 MacOS 11.6、iOS 15.0.1、MacOS GarageBand 10.4.3、iOS GarageBand later 2021-10 和 Xcode 13.0 完成了该实验。


推荐阅读