2017-05-24 56 views
0

macOS Sierra、Xcode 8.2iOSシミュレータをサンドボックスで実行する

Xcode iOSシミュレータをサンドボックスで実行したいので、テストしているアプリケーションのネットワーク接続を制限できます。

(version 1) 
(allow default) 
(deny network*) 

その後、私はこのようなシミュレータを実行しました::

Based on what I saw hereは、私はこのようなサンドボックスファイルを作成しsandbox-exec -f ~/Desktop/block_network.sb /Applications/Xcode.app/Contents/Developer/Applications/Simulator.app/Contents/MacOS/Simulator

これが適切に管理されている他のどんなプロセスにシミュレータを接続していないようですそれ。 simは起動しますが、デバイスが見つからないとし、Xcodeで実行するだけで別のシミュレータが起動します。私も私の端末でこのエラーが表示されます:CoreSimulatorService connection became invalid. Simulator services will no longer be available.アイデア?

また、すべてが許可されるように、(deny network*)をsbファイルから削除してみました。同じ問題。

答えて

1

これは非常にサポートされていませんが、問題はほとんどの場合、必要なマザーポートがサンドボックスによってブロックされている可能性があります。

あなたは試すことができます:サンドボックス違反のログで

(allow mach-lookup) 
(allow mach-register) 
(allow distributed-notification-post) 
(allow file-read* (regex #";^/[^/]+/CoreSimulator/[^/]+$")) 

ルックを必要に応じて、その後の例外を追加します。

+0

ありがとうございますが、これをサンドボックスファイルに追加すると同じエラーが表示されます。ログにサンドボックス違反はありません。私はサンドボックスに「拒否」ルールがなくても機能しないので、サンドボックス内で実行するだけで、それを破るようです。 – sudo

+1

パスはサンドボックスディレクトリにルートされるので、必要なファイルが見つからない可能性があります。 'fs_usage'をチェックして、どのパスがサンドボックスの下でアクセスしようとしているのかを調べることができます。 – russbishop

+0

これは理にかなっていますが、 'fs_usage'を見ると、" Simulator "、" Xcode "、" sandbox "を含むすべての行は、'〜/ Library/Containers/[...] 'と呼びます(サンドボックスのルートディレクトリはiWorkアプリがアクセスしているのがわかります)。 – sudo

関連する問題