Скрипт для установки приложения в iOS Simulator
Я пытаюсь автоматизировать процесс создания приложения, запуска модульных тестов и, наконец, запуска тестов пользовательского интерфейса.
Я создаю приложение через командную строку (xcodebuild-sdk iphonesimulator6.0) в некотором каталоге.
Как установить это приложение на симулятор iOS через командную строку (в ~ / Библиотека / поддержка приложений / iPhone Simulator / / приложения)?
пробовал:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Applications/iPhone Simulator.app/Contents/MacOS/iPhone Simulator -SimulateApplication MyApp.app/MyApp
но это открывает новое окно finder с именем " iOS Simulator не удалось найдите приложение для имитации".
2 ответов
я сделал сценарий оболочки, который устанавливает приложение в симулятор.
#!/bin/sh
# Pick a uuid for the app (or reuse existing one).
if ! [ -f installApp.uuid ]; then
uuidgen > installApp.uuid
fi
UUID=$(cat installApp.uuid)
#create supporting folders
TOPDIR="$HOME/Library/Application Support/\
iPhone Simulator/6.0/Applications/$UUID/"
mkdir -p "$TOPDIR"
mkdir -p "$TOPDIR/Documents"
mkdir -p "$TOPDIR/Library"
mkdir -p "$TOPDIR/tmp"
mkdir -p "$TOPDIR/.app"
#copy all the app file to the simulators directory
cp -r * "$TOPDIR/.app"
как использовать этот скрипт для установки приложения:
-
измените эту строку:
TOPDIR="$HOME/Library/Application Support/iPhone Simulator/6.0/Applications/$UUID/"
чтобы отразить версию iPhone Simulator, которую вы используете, т. е.
6.0
/7.1
. сохранить скрипт как
installApp.sh
в своем .-
откройте окно терминала и выполните команду
installApp
из проекта справочник.- если у меня
project_name.app/
С проектом внутри. Введите терминал:CD path/to / имя_проекта.app/
- затем
./installApp
для установки приложения в симуляторе.
- если у меня
я получил идею от Джеффри Скофилд: запустите iOS Simulator из командной строки
на iOS8 и новый XCode Apple изменила несколько вещи и затрудняли установку приложений через командную строку. Еще можно сделать:
сначала вам нужно найти каталог приложений (при условии, что вы установили приложения):
find ~/Library/Developer/CoreSimulator/Devices -name '*.app'
здесь будут перечислены все пути, в которых установлено пользовательское приложение. Е. Г.
/34792D41-55A9-40F5-AAC5-16F742F1F3E4/data/Containers/Bundle/Application/4BA2A285-6902-45A8-9445-FC3E46601F51/YourApp.app
- будет несколько родительских каталогов UUID со структурой выше. Каждый UUID соответствует симулятор для другого устройства. Откройте верхний каталог, и вы найдете . Этот файл будет содержать устройство, которое он имитирует:
<dict> ... <string>34792D41-55A9-40F5-AAC5-16F742F1F3E4</string> <string>com.apple.CoreSimulator.SimDeviceType.iPhone-6-Plus</string> ... </dict>
- если вы хотите установить приложение для iPhone-6-Plus, это каталог, в котором вы это сделаете. Запустите скрипт выше, чтобы установить приложение. Изменить
TOPDIR
путь$HOME/Library/Developer/CoreSimulator/Devices/{UUID for device}/data/Containers/Bundle/Applications/$UUID/
начиная с Xcode 6, вы должны иметь возможность использовать simctl
для этого.
1) получить список доступных устройств:
xcrun simctl list devices
1a) предполагая, что у вас есть jq
установлен, вы можете использовать его, чтобы получить только те устройства, которые реально доступны:
xcrun simctl list devices -j \
| jq -rc '.[] | .[] | .[] | select( .availability | contains( "(available)" ) ) '
1b) или даже фильтровать дальше iPhone или iPad:
xcrun simctl list devices -j \
| jq -rc '.[] | .[] | .[] | select( .name | contains( "iPhone" ), contains( "iPad" ) ) | select( .availability | contains( "(available)" ) ) '
2) После того, как у вас есть UDID устройства, которое вы хотите установить на:
xcrun simctl install $DEVICE_UDID /path/to/your/app
2a) или, если вы хотите чтобы просто установить на загрузочное устройство:
xcrun simctl install booted /path/to/your/app
где это становится очень удобно, если вы хотите запустить одно и то же приложение на всех устройствах:
1) сброс / стирание всех симуляторов:
xcrun simctl erase all
2) Откройте один экземпляр симулятора для каждого теста:
open -n /Applications/Xcode.app/Contents/Developer/Applications/Simulator.app
(Ignore the 'Booted' error and switch hardware.)
3) получить UDIDs доступных устройств, которые мы хотим установить в:
DEVICES=$( xcrun simctl list devices -j | jq -rc '.[] | .[] | .[] | select( .name | contains( "iPhone" ), contains( "iPad" ) ) | select( .availability | contains( "(available)" ) ) | select( .state == "Booted" ) | .udid ' )
4) Установите приложение (которое должно быть построено для соответствующего симулятора SDK):
for device in DEVICES ; do xcrun simctl install $device /path/to/app ; done
5) для удобства запустите приложение на каждом устройстве:
for device in $DEVICES ; do xcrun simctl launch $device your.product.app.id ; done