如何使 iOS 应用程序被识别为 AudioUnit?

问题描述

我正在尝试从头开始制作一个最小的 iOS 插件。从一个空的 iOS 应用程序(Swift 5,XCode 12.5)开始,我认为将以下 dict 添加到项目的 Info.plist 以使其被识别为 AudioPlugin 就足够了,但是,安装它后,AUM(或任何其他 AUv3 host) 未列出应用。

需要什么才能将广告应用识别为插件

<dict>
    <key>NSExtensionAttributes</key>
    <dict>
        <key>AudioComponents</key>
        <array>
            <dict>
                <key>description</key>
                <string>MIDIAudioUnit</string>
                <key>factoryFunction</key>
                <string>$(PRODUCT_MODULE_NAME).AudioUnitViewController</string>
                <key>manufacturer</key>
                <string>INQS</string>
                <key>name</key>
                <string>MIDIAudioUnit</string>
                <key>sandBoxSafe</key>
                <true/>
                <key>subtype</key>
                <string>aumi</string>
                <key>tags</key>
                <array>
                    <string>Synthesizer</string>
                </array>
                <key>type</key>
                <string>aumi</string>
                <key>version</key>
                <real>67072</real>
            </dict>
        </array>
    </dict>
    <key>NSExtensionMainStoryboard</key>
    <string>MainInterface</string>
    <key>NSExtensionPointIdentifier</key>
    <string>com.apple.AudioUnit-UI</string>
</dict>

解决方法

从头开始:

  1. 创建新的/空白的 iOS 应用
  2. 添加新目标(类型:音频单元扩展)
  3. 在“框架、库和嵌入内容”部分向原始父应用的目标添加新的音频单元扩展目标。

您在第 2 步中创建的目标将是具有您列出的键的 Info.plist 的目标——而不是父应用。

此外,请确保您的音频单元扩展程序的包 ID 以您的父应用 ID 开头:

com.jnpdx.StackOverflowPlayground.AudioUnitParentApp //parent
com.jnpdx.StackOverflowPlayground.AudioUnitParentApp.AudioUnit // child

假设您的音频单元是“生成器”类型,它会出现在“MIDI”下的 AUM 中

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...