繁体   English   中英

当应用程序在 Xcode 中停止时自动关闭 iOS 模拟器

[英]Automatically close iOS Simulator when application is stopped in Xcode

是否可以在 Xcode 中停止应用程序时关闭/退出 iOS 模拟器? 我无法在 Xcode 或模拟器中找到设置。 如果存在,它将有助于加快开发过程。

要在构建停止时终止模拟器,您需要编译一个包含以下内容的可执行文件

#!/bin/sh
osascript -e 'tell app "iPhone Simulator" to quit'

保存此文件,然后打开 Xcode 首选项的行为部分,在运行完成部分将您的脚本文件添加到运行部分。 希望这对你有用,但是这种方法似乎有点参差不齐,不幸的是我能想出的最好方法! 祝你好运!在此处输入图片说明

您没有制作 OS X 应用程序太糟糕了,因为这样做非常容易。 这部分无关紧要,但谁知道呢,您将来可能会使用它!

- (IBAction)KillSim:(id)sender {

    NSLog (@"Sim Kill Begin");


    NSDictionary* errorDict;
    NSAppleEventDescriptor* returnDescriptor = NULL;

    NSAppleScript* scriptObject = [[NSAppleScript alloc] initWithSource:
                                   @"tell application \"iPhone Simulator\" to quit"];

    returnDescriptor = [scriptObject executeAndReturnError: &errorDict];
    [scriptObject release];

    if (returnDescriptor != NULL)
        {
            // successful execution
        if (kAENullEvent != [returnDescriptor descriptorType])
            {
                // script returned an AppleScript result
            if (cAEList == [returnDescriptor descriptorType])
                {
                    // result is a list of other descriptors
                }
            else
                {
                    // coerce the result to the appropriate ObjC type
                }
            } 
        }
    else
        {
            // no script result, handle error here
        }

    NSLog (@"Sim Killed End");


}

我在 xCode 5.1 中遇到了同样的问题。 重新启动我的 Mac 解决了它。

至于“为什么这会加快开发速度”,在我的情况下,Xcode 不会让我再次运行,直到我退出模拟器,这很乏味。

您可以将“运行脚本”构建阶段添加到新项目(通过 Xcode 项目模板),方法是将其添加到您的 TemplateInfo.plist;

<key>Targets</key>
<array>
<dict>
    <key>BuildPhases</key>
    <array>
        <dict>
            <key>Class</key>
            <string>ShellScript</string>
            <key>ShellPath</key>
            <string>/bin/sh</string>
            <key>ShellScript</key>
            <string>osascript -e 'tell app "iPhone Simulator" to quit'</string>
        </dict>
    </array>
</dict>

或者,您可以将此“运行脚本”添加到您的构建阶段;

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

如果您有兴趣,您可以添加另一个脚本来自动增加您的内部版本号,例如;

<key>Targets</key>
<array>
<dict>
    <key>BuildPhases</key>
    <array>
        <dict>
            <key>Class</key>
            <string>ShellScript</string>
            <key>ShellPath</key>
            <string>/bin/sh</string>
            <key>ShellScript</key>
            <string>
                buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")
                buildNumber=`echo $buildNumber +1|bc`
                /usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE"
            </string>
        </dict>
        <dict>
            <key>Class</key>
            <string>ShellScript</string>
            <key>ShellPath</key>
            <string>/bin/sh</string>
            <key>ShellScript</key>
            <string>osascript -e 'tell app "iPhone Simulator" to quit'</string>
        </dict>
    </array>
</dict>

如果 Xcode 将这些简单的帮助程序作为默认设置,那就太好了,但至少我们可以自己手动添加它们。

在Xcode 12.3中,只需创建simulator.sh(Shell Script),然后填写此代码

  1. #!/bin/sh
  2. osascript -e 'tell app "Simulator" to quit'

之后,打开 XCode > Preferences > Behaviors 并设置为您的目标文件

XCode 首选项图像

我不知道它会如何加快您的开发时间,但是当使用模拟器并且您想完成时,只需按 cmd+q 即可退出模拟器并在 Xcode 中自动停止它。

您可以从 Xcode 停止调试会话并重新启动它,或者甚至只需从 Xcode 再次点击 cmd-r,新版本将在模拟器中正常运行。 无需退出并重新启动模拟器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM