有没有一种方法可以通过命令行关闭iOS模拟器?

14

有没有一种通过命令行脚本退出iOS模拟器的方法?

背景:

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

我已经成功地通过命令行运行Instruments来自动化执行脚本在iOS模拟器上的操作,但现在我想自动退出模拟器。

我尝试了一些苹果脚本类似于这篇帖子:如何从命令行重置iOS模拟器?但是遇到了“辅助设备访问被禁用”的错误。希望这里有更简单的方法吗?

5个回答

32
对于Xcode 7+,命令是killall Simulator

22
在终端中输入 killall "iOS Simulator" 将会关闭它。
另外,你可以使用 iphonesim 来启动 iOS 模拟器并对其进行更多控制,包括根据你的需求修改源代码。

非常感谢这个简单的解决方案。你能看到直接杀死所有进程而不进行更优雅的关闭会有什么问题吗?如果没有,我就采用这个方案 :-) - MandyW
这取决于你想要做什么,但我并没有看到任何主要问题。终止进程,睡眠几秒钟或监视它们是否已关闭,然后做任何你想做的事情。 - djromero
2
在带有Xcode 6.1的Mavericks上,我不得不执行killall“iOS模拟器”。谢谢提供起点:D - gempesaw

14

试试这个:

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

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

1
这个救了我的一天(晚上也是)...最后一个命令需要打开模拟器吗?在我的情况下,即使没有它,一切都很顺利(xcodebuild test会自动启动模拟器)。 - JakubKnejzlik

-1

基于那个脚本,你可以像这样创建它:

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

这个问题也会在辅助设备上出现。要解决这个问题,您需要进入系统设置,通用访问,并勾选“启用辅助设备访问”。


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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接