有没有办法从命令行关闭 iOS 模拟器?

Posted

技术标签:

【中文标题】有没有办法从命令行关闭 iOS 模拟器?【英文标题】:Is there a way to close the iOS Simulator from the command line? 【发布时间】:2011-12-25 05:37:00 【问题描述】:

有什么方法可以通过命令行脚本退出 ios 模拟器?

背景:

我正在设置一个持续集成环境,以使 iOS 构建能够自动编译和测试。作为其中的一部分,我在 Instruments 中使用 Apple 的 UI 自动化工具运行脚本。

我已经设法通过从命令行运行 Instruments 来自动执行 iOS 模拟器上的脚本,但现在我想自动退出模拟器。

我尝试了一些类似于这篇文章的 Apple 脚本:How can I reset the iOS Simulator from the command line?,但收到错误“辅助设备的访问被禁用”。希望有更简单的方法吗?

【问题讨论】:

【参考方案1】:

对于 Xcode 7+,命令是 killall Simulator

【讨论】:

【参考方案2】:

试试这个:

osascript -e 'tell app "iOS Simulator" to quit'

【讨论】:

【参考方案3】:

终端中的killall "iOS Simulator" 将关闭它。

此外,您可以使用 iphonesim 启动它,以便对其进行更多控制,包括根据您的需要修改源代码。

【讨论】:

非常感谢这个简单的解决方案。你能看到在没有更优雅的关闭的情况下杀死所有进程的任何问题吗?如果没有,我会选择这个:-) 这取决于你想做什么,但我看不出有什么大问题。杀死进程,休眠几秒钟或监视它们已经消失,然后做任何你想做的事情。 在 xcode 6.1 的小牛队上,我不得不做killall "iOS Simulator"。感谢您的起点:D【参考方案4】:

为 XCode 6 整合一些命令:

killall "iOS Simulator" 

xcrun simctl list | grep Booted | awk -F "[()]" ' for (i=2; i<NF; i+=2) print $i ' | grep '^[-A-Z0-9]*$' | xargs -I uuid xcrun simctl shutdown uuid

xcrun simctl list | awk -F "[()]" ' for (i=2; i<NF; i+=2) print $i ' | grep '^[-A-Z0-9]*$' | xargs -I uuid xcrun simctl erase uuid

open /Applications/Xcode.app/Contents/Developer/Applications/iOS\ Simulator.app

【讨论】:

这节省了我的一天(也是晚上)...是否需要在最后一个命令中打开模拟器?在我的情况下,即使没有它也一切正常(xcodebuild 测试自动启动模拟器)。【参考方案5】:

基于该脚本,您可以像这样创建它:

tell application "iPhone Simulator"
    activate
end tell

tell application "System Events"
    tell process "iPhone Simulator"
        tell menu bar 1
            tell menu bar item "iOS Simulator"
                tell menu "iOS Simulator"
                    click menu item "Quit iOS Simulator"
                end tell
            end tell
        end tell
    end tell
end tell

辅助设备错误也会发生在此。要解决此问题,您需要转到系统设置、通用访问并选中“启用辅助设备访问”

【讨论】:

非常感谢这个脚本,只是想知道打开“启用辅助设备访问”是否会损害计算机的安全性? 嗯,它似乎启用了各种 GUI 脚本方法以及应用程序捕获输入的可能性(例如键盘记录)。我想这取决于对机器上运行的应用程序的信任。禁用它可能会提供一些针对键盘记录器等的基本保护,但我想更复杂的恶意软件无论如何都有它的方法。

以上是关于有没有办法从命令行关闭 iOS 模拟器?的主要内容,如果未能解决你的问题,请参考以下文章

命令行支持 KIF 以在真实设备上运行测试

Xcode 6 - iOS 模拟器 - 从命令行截取屏幕截图

如何从 Linux 命令行彻底关闭 Eclipse?

您可以从 msbuild.exe 命令行关闭条件编译符号吗?

如何从命令行/tty 启动 GNOME Wayland 会话? [关闭]

如何从命令行获取设备的 iOS 版本?