1

OS Xアプリケーションでサンドボックスを有効にしたところ、CoreAudioコードが機能しなくなりました。特に、を呼び出すと、 「操作を完了できませんでした」というAUGraphAddNodeエラーが返されます。invalidComponentIDただし、それ以前は、他の多くのCoreAudio呼び出しが正しく機能しているようです。

Consoleにsandboxdからのメッセージがないため、直接のサンドボックス違反ではないようですが、サンドボックスをオフにすると確実に機能します。なぜこれが起こる可能性があるのか​​誰もが知っていますか?私が想像できる唯一のことは、アクセスできないファイルを読み取ろうとしていることですが、サンドボックスエラーが発生すると思います。

アップデート:

明確にするために、すべてのサンドボックスエンタイトルメントを有効にしようとしましたが、問題は引き続き発生します。

また、問題をいくらか絞り込みました。kAudioUnitType_MusicDeviceこの呼び出しは、コンポーネントタイプとサブタイプのノードを追加しようとした場合にのみ失敗しますkAudioUnitSubType_DLSSynth

アップデート2:

私はハッキーな回避策を見つけました。ユーザーのホームディレクトリ全体への読み取り/書き込みアクセスを有効にするために一時的な例外資格を追加すると、エラーは発生しなくなります。これは明らかに理想的ではないので、私はより良いオプションを探し続けています。より具体的なサブディレクトリの資格を追加して、必要なアクセスを絞り込もうとしましたが、うまくいきませんでした。

4

3 に答える 3

1

最近、この問題が発生しているアプリをアプリストアに送信しましたが、質問の前回の更新で言及した一時的な例外の資格を使用したために拒否されました。この正確な問題について議論しているこの記事を指摘されました。

残念ながら、標準のサンドボックスのドキュメントに記載されていない別の資格があることが判明しましたcom.apple.security.temporary-exception.audio-unit-host。これにより、DLSSynthのように、ホスト環境のサンドボックスで許可されている以上のアクセス許可を必要とするオーディオユニットを、ユーザーが実行時にアクセス許可を付与した場合に、ホスト環境で実行できるようになります。

この資格も一時的な例外として分類されていることを考えると、このソリューションがどれほど長期的かはわかりませんが、Appleによれば、これが今のところ進むべき道です。

于 2013-03-01T01:10:05.423 に答える
0

マイク入力にCoreAudioを使用している場合は、これをTargetSummaryファイルとアプリエンタイトルメントファイルの両方のサンドボックスエンタイトルメントに追加することを忘れないでください。

于 2012-11-10T21:11:34.953 に答える
0

このエラーは、サンドボックス化されたAudioUnitホストアプリで発生する可能性があります。

Xcode 11では、[署名と機能]タブからサンドボックスを削除することで、サンドボックスをオフにできます。

ここに画像の説明を入力してください

于 2020-01-15T13:35:35.240 に答える