2017-05-24 138 views
0

macOS Sierra,Xcode 8.2。在沙箱中運行iOS模擬器

我想在沙盒中運行Xcode iOS模擬器,這樣我就可以限制正在測試的應用程序的網絡連接。

Based on what I saw here,我創建了一個沙箱文件是這樣的:

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

然後我跑這樣的模擬器:sandbox-exec -f ~/Desktop/block_network.sb /Applications/Xcode.app/Contents/Developer/Applications/Simulator.app/Contents/MacOS/Simulator

看來,這並不正確模擬器連接到任何其他進程管理它。該模擬啓動,但說該設備無法找到,並在Xcode運行只是打開了一個不同的模擬器。我在終端上也看到這個錯誤:CoreSimulatorService connection became invalid. Simulator services will no longer be available.有什麼想法?

我也嘗試從sb文件中刪除(deny network*),所以一切都是允許的;同樣的問題。

回答

1

這是非常不受支持的,但問題很可能是所需的mach端口正在被沙箱阻止。

你可以試試:

(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