iOS 11 + Xcode 9.0 =无音频单元

Pad*_*van 2 xcode audiounit ios ios11 xcode9

在iOS 11中需要有关Audio Units的帮助.我有两个iOS应用程序:一个提供V3音频单元的应用程序和一个用于Audio Units的主机应用程序.问题是,当我使用iOS 11 SDK在Xcode 9.0中编译主机应用程序并在带有iOS 11的iPhone上运行它时,主机应用程序看不到音频单元.

我做了一些研究,这就是我得到的:问题影响任何音频单元应用程序,而不仅仅是这两个特定的应用程序.如果您使用Apple网站上的AudioUnitV3Example项目(https://developer.apple.com/library/content/samplecode/AudioUnitV3Example/Introduction/Intro.html),您可以轻松地看到同样的问题.此示例项目包含两个应用程序:iOSAUv3Host和提供音频单元应用程序扩展的iOSFilterDemoApp.您需要在iOS设备上安装这两个应用程序.

当您启动AUv3Host应用程序时,它将显示系统中所有可用音频单元的列表:

  • 在iOS 10上,有16个音频单元可用 - 苹果有15个默认音频单元,Demo有FiltedDemo音频单元.
  • 在iOS 11上,Apple只有15个Audio Units-15默认音频单元.AUv3Host应用程序没有看到FiltedDemo音频单元(见截图).

iOS 10和iOS 11截图 我还使用iOS 10 SDK(来自https://developer.apple.com/download/more/)下载了Xcode 8.3.3,并尝试了构建SDK和设备的iOS版本的所有可能配置.这是我得到的:

  • FiltedDemo通过iOS的11 SDK +内置AUv3Host通过iOS的11 SDK +的iOS 11设备= BAD(否FiltedDemo)建
  • FiltedDemo通过iOS的10 SDK +内置AUv3Host通过iOS的11 SDK +的iOS 11设备= BAD(否FiltedDemo)建
  • FiltedDemo通过iOS的11 SDK +内置AUv3Host通过iOS的10 SDK +的iOS设备11 = OK内置(FiltedDemo存在)
  • FiltedDemo通过iOS的10 SDK +内置AUv3Host通过iOS的10 SDK +的iOS设备11 = OK内置(FiltedDemo存在)
  • FiltedDemo通过iOS的11 SDK +内置AUv3Host通过iOS的11 SDK +的iOS 10设备= OK内置(FiltedDemo存在)
  • FiltedDemo通过iOS的10 SDK +内置AUv3Host通过iOS的11 SDK +的iOS 10设备= OK内置(FiltedDemo存在)
  • FiltedDemo通过iOS的11 SDK +内置AUv3Host通过iOS的10 SDK +的iOS 10设备= OK内置(FiltedDemo存在)
  • FiltedDemo通过iOS的10 SDK +内置AUv3Host通过iOS的10 SDK +的iOS 10设备= OK内置(FiltedDemo存在)

因此,看起来问题仅在BOTH条件有效时出现:设备安装了iOS 11,主机应用程序使用iOS 11 SDK进行编译.音频单元编译不会影响问题.

你有任何想法如何解决这个问题?有没有办法解决这个问题,或者它是iOS 11 SDK的错误,这只能由Apple修复?

Pad*_*van 6

问题解决了.我还将这个问题作为bug发布在bugreport.apple.com上,我刚从Apple团队那里得到答案:

Engineering已请求有关您的错误报告的以下信息:请将应用程序间音频功能添加到您的应用程序中.这是一项隐私要求,并在WWDC演讲期间提到过.由于AUv3Host需要自签名,因此权利将丢失.所有AUv3主机都需要Inter-App Audio授权才能看到v3音频单元.我们将研究如何使其更加明确,并将更新样本以避免这些问题.

这就像一个魅力.iOS 11设备现在可以看到所有16个音频单元,包括FiltedDemo. 问题已解决

如果这个要求更明显,那就太好了.我希望Apple能够更新他们的文档和示例项目.