Автоматически закрывать iOS Simulator при остановке приложения в Xcode - PullRequest
4 голосов
/ 29 февраля 2012

Можно ли закрыть / закрыть iOS Simulator при остановке приложения в XCode?Я не смог найти настройки в Xcode или Simulator, чтобы сделать это.Это помогло бы ускорить процесс разработки, если он существует.

Ответы [ 5 ]

3 голосов
/ 29 февраля 2012

Чтобы убить симулятор, когда ваша сборка остановлена, вам нужно будет скомпилировать исполняемый файл, включающий в себя следующий

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

Сохраните этот файл, затем откройте раздел поведений настроек XCode, в разделе выполнения завершендобавьте файл скрипта в секцию запуска.надеюсь, это сработает для вас, однако этот метод выглядит немного неаккуратным и, к сожалению, лучший способ, который мне удалось придумать!Удачи!enter image description here

Жаль, что вы не создаете приложение для 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");


}
0 голосов
/ 27 июля 2014

Вы можете добавить фазу сборки 'run script' в новый проект (через шаблоны проектов 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>

В качестве альтернативы, вы можете добавить этот «Run Script» в ваши фазы сборки;

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 были эти простые помощники в качестве настроек по умолчанию, но, по крайней мере, мы можем добавить их вручную.

0 голосов
/ 16 мая 2014

У меня была такая же проблема в xCode 5.1. Перезапуск моего Mac решил это.

Что касается «Почему это ускоряет разработку», в моем случае Xcode не позволил бы мне снова работать, пока я не выйду и не выйду из эмулятора, что было утомительно.

0 голосов
/ 29 февраля 2012

Вы можете остановить сеанс отладки из Xcode и перезапустить его, или даже просто нажать cmd-r из XCode, и новая версия будет нормально работать в симуляторе.Нет необходимости выходить и перезапускать симулятор.

0 голосов
/ 29 февраля 2012

Я не вижу, как это ускорит ваше время разработки, однако, когда вы используете симулятор и хотите закончить, просто нажмите cmd + q, и он выйдет из симулятора и автоматически остановит его в Xcode.

...