Я только что посмотрел на IDE приложения JetBrains, и похоже, что он может запустить симулятор iOS и запускать в нем приложения.
Когда мне пришлось автоматизировать развертывание моих проектов, мне пришлось прибегнуть к автоматизации Applescript и GUI.
Кажется, они используют закрытый инструмент под названием «simlauncher». Интересно, в чем может быть магия?
Обновление:
- При просмотре Activity Monitor я вижу, что osascript запускается из simlauncher до запуска симулятора. Это может быть снова Applescript? Я думал, что iOS Simulator.app не поддерживает скрипты.
- iOS Simulator запускается с помощью launchd, поэтому simlauncher определенно не запускает его сам по себе. Кроме того, simlauncher остается только до тех пор, пока само приложение не будет запущено в симуляторе. Возможно, они голосуют за это?
- Для сборок устройств они используют AMDeviceService, которая, вероятно, является версией Apple Mobile Device Service. Это техника из сломанного тюрьмы SDK?
Немного больше информации о симуляторе из вывода 'ps':
plumenator 26404 12.9 1.3 290172 52772 ?? SX 8:56PM 0:03.62 /Users/plumenator/Library/Application Support/iPhone Simulator/4.3.2/Applications/817A280D-1F74-4755-B848-B04EC8A24ADA/xxx.app/xxx
plumenator 26395 2.3 0.3 444208 13560 ?? S 8:56PM 0:00.72 /Developer/Platforms/iPhoneSimulator.platform/Developer/Applications/iPhone Simulator.app/Contents/MacOS/iPhone Simulator -SessionOnLaunch NO
plumenator 26402 1.4 0.8 318320 33052 ?? Us 8:56PM 0:00.86 /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.3.sdk/System/Library/CoreServices/SpringBoard.app/SpringBoard -SBDisableAutoDim YES -SBAutoLockTime -1 -SBAutoDimTime -1 -SBDontLockAfterCrash YES -SBDidShowReorderText YES -SBFakeBars YES -SBDontAnimateAppleDown YES -SBEnableDoubleHeightToggling YES
plumenator 26406 0.0 0.4 2466496 15792 ?? Ss 8:56PM 0:00.16 /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/libexec/gdb/gdb-i386-apple-darwin --arch i386 --interp=mi1 -q
plumenator 26401 0.0 0.1 106584 5688 ?? S 8:56PM 0:00.30 /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.3.sdk/usr/libexec/lsd
plumenator 26400 0.0 0.1 105228 4204 ?? S 8:56PM 0:00.13 /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.3.sdk/usr/libexec/installd -t 30
plumenator 26399 0.0 0.3 223488 11464 ?? Ss 8:56PM 0:00.15 /Developer/Platforms/iPhoneSimulator.platform/Developer/Applications/iPhone Simulator.app/Contents/MacOS/SimulatorBridge 26395
Теперь я полагаю, что это просто вопрос сортировки команд по pid и их выполнения. : -)
Хотя есть проблема. Все эти двоичные файлы относятся к dylibs, присутствующим в корне платформы симулятора. Когда я запускаю их напрямую, они ищут их в «/».
Есть ли способ установить путь для dylibs перед запуском команды? Это выглядит многообещающе: http://sacredsoftware.net/svn/misc/StemLibProjects/eaglshell/tags/2.1.0/Makefile
https://github.com/BlueFrogGaming/icuke тоже имеет хорошую информацию.