1

我刚刚在我的 OS X 应用程序中启用了沙盒,现在我的核心音频代码不起作用。特别是,当我调用时AUGraphAddNode,它返回错误invalidComponentID,只是说“操作无法完成”。不过,在此之前,许多其他 Core Audio 调用似乎都可以正常工作。

这似乎不是直接的沙盒违规,因为控制台中没有来自沙盒的任何消息,但是当我关闭沙盒时它肯定会起作用。有谁知道为什么会发生这种情况?我唯一能想象的是,它可能正在尝试读取我无权访问的文件,尽管我认为这会给我一个沙盒错误。

更新:

为了澄清,我尝试启用每个沙盒权利,但问题仍然存在。

我也稍微缩小了这个问题的范围。仅当我尝试添加具有组件类型kAudioUnitType_MusicDevice和子类型的节点时,该调用才会失败kAudioUnitSubType_DLSSynth

更新 2:

我想出了一个hacky的解决方法。如果我添加一个临时异常权利以启用对用户整个主目录的读写访问,则该错误不再发生。这显然不理想,所以我继续寻找更好的选择。我试图通过为更具体的子目录添加权利来缩小所需的访问范围,但这没有用。

4

3 回答 3

1

我最近将遇到此问题的应用程序提交给了应用程序商店,但由于使用了我的问题的最后更新中提到的临时例外权利而被拒绝。我被指出这篇文章正在讨论这个确切的问题。

事实证明,不幸的是,标准沙盒文档中没有记录另一种权利:com.apple.security.temporary-exception.audio-unit-host. 如果用户在运行时授予权限,这将允许音频单元(如 DLSSynth)在主机环境中运行,它需要的权限大于主机环境的沙盒允许的权限。

鉴于此权利也被归类为临时例外,我不确定此解决方案的长期性,但根据 Apple 的说法,这是目前要走的路。

于 2013-03-01T01:10:05.423 回答
0

如果您使用 Core Audio 进行麦克风输入,请不要忘记将其添加到 Target Summary 和应用程序权利文件中的沙盒权利中。

于 2012-11-10T21:11:34.953 回答
0

此错误可能发生在已沙盒化的音频单元主机应用程序中。

在 Xcode 11 上,您可以通过从 Signing & Capabilities 选项卡中删除沙盒来关闭它:

在此处输入图像描述

于 2020-01-15T13:35:35.240 回答