【问题标题】:Running iOS Simulator in a sandbox在沙盒中运行 iOS 模拟器
【发布时间】:2017-05-24 23:47:08
【问题描述】:

macOS Sierra,Xcode 8.2。

我想在沙盒中运行 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

这似乎无法将 Simulator 正确连接到正在管理它的任何其他进程。 sim 启动但说找不到设备,在 Xcode 中运行只会打开一个不同的模拟器。我在终端中也看到了这个错误:CoreSimulatorService connection became invalid. Simulator services will no longer be available. 有什么想法吗?

我还尝试从 sb 文件中删除 (deny network*),以便允许所有内容;同样的问题。

【问题讨论】:

    标签: macos ios-simulator sandbox


    【解决方案1】:

    这是非常不支持的,但问题很可能是所需的马赫端口被沙箱阻止了。

    你可以试试:

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

    查看沙盒违规日志,然后根据需要添加异常。

    【讨论】:

    • 谢谢,但是当我将它附加到我的沙箱文件时,它给了我同样的错误。日志中没有任何沙盒违规行为。由于即使我在沙箱中没有“拒绝”规则它也不起作用,似乎只是在沙箱中运行它会破坏它。
    • 它可能无法找到它需要的一些文件,因为路径被重新植根到沙盒目录中。您可以查看fs_usage 以查看它在沙箱下尝试访问的路径。
    • 这是有道理的,但是看看fs_usage,每行包含“模拟器”、“Xcode”或“沙盒”的内容都是从/ 访问的,而不是~/Library/Containers/[...] 中的任何内容,其中沙盒根目录是(我看到 iWork 应用程序正在访问它)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-19
    • 2015-08-28
    • 1970-01-01
    • 2019-07-19
    • 2012-11-29
    • 1970-01-01
    相关资源
    最近更新 更多