$ xcrun simctl list --json
$ xcrun simctl delete unavailable
$ open /Applications/Xcode.app/Contents/Developer/Applications/Simulator.app/
You can find the id/name by listing all simulators $ xcrun simctl list
.
$ xcrun simctl boot AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEE // UUID Hex string
$ xcrun simctl boot "iPhone XS Max" // Name of simulator
You can name simulators and use them for specific purposes.
$ xcrun simctl create iPhone7-my-app com.apple.CoreSimulator.SimDeviceType.iPhone-8 com.apple.CoreSimulator.SimRuntime.iOS-10–3
$ xcrun simctl shutdown booted
$ xcrun simctl shutdown AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEE
$ xcrun simctl shutdown "iPhone7-my-app"
$ xcrun simctl shutdown "iPhone XS"
$ xcrun simctl shutdown all
Similar to running a factory restore on your device
$ xcrun simctl erase AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEE
$ xcrun simctl erase "iPhone7-my-app"
$ xcrun simctl erase "iPhone XS"
$ xcrun simctl erase all
$ xcrun simctl addmedia booted ./video_01.mp4
$ xcrun simctl addmedia "iPhone XS" ./video_01.mp4
$ xcrun simctl install booted "./path/to/ios-app.app"
$ xcrun simctl install "iPhone XS Max" "./path/to/ios-app.app"
$ xcrun simctl uninstall booted com.mycompany.myapp
$ xcrun simctl uninstall "iPhone XS Max" com.mycompany.myapp
$ xcrun simctl launch booted com.mycompany.myapp
$ xcrun simctl launch "iPhone XS Max" com.mycompany.myapp
$ xcrun simctl terminate booted com.mycompany.myapp
$ xcrun simctl terminate "iPhone XS Max" com.mycompany.myapp
Can also be used to open an app, if you open the app using a url the first time it will give you an alert asking if you want to navigate to that app.
$ xcrun simctl openurl booted https://google.com
$ xcrun simctl openurl "iPhone XS Max" https://google.com
$ xcrun simctl openurl booted myapp://
$ xcrun simctl openurl "iPhone XS Max" myapp://
$ xcrun simctl io booted recordVideo — type=mp4 ./simulator-record_001.mp4
$ xcrun simctl io "iPhone XS Max" recordVideo — type=mp4 ./simulator-record_001.mp4
$ xcrun simctl io booted screenshot ./simulator-screenshot_001.png
$ xcrun simctl io "iPhone XS Max" screenshot ./simulator-screenshot_001.png
$ xcrun simctl help
I created and use this script for running the app I am developing in all possible screen sizes at once to verify that everything looks and works as intended.
#!/bin/bash
# List of simulators: `$ xcrun simctl list`
SIMULATORS=("iPhone SE" "iPhone 8" "iPhone 8 Plus" "iPhone XS" "iPhone XS Max" "iPhone XR")
# Comment or remove variables to skip a step
APP_PATH="/path/to/my/build/directory/when/running/a/build/in/xcode/app.app"
APP_IDENTIFIER="com.mycompany.myapp" # Identifier from info.plist
OPEN_URL="myapp://some/page/in/app" # Deep linking
echo "Running on ${#SIMULATORS[*]} simulators."
for index in ${!SIMULATORS[*]}
do
SIMULATOR=${SIMULATORS[$index]}
echo "Booting ${SIMULATOR}..."
xcrun simctl boot "${SIMULATOR}"
if [ ! -z "$APP_PATH" ]
then
echo "${SIMULATOR} installing: ${APP_PATH##*/}"
xcrun simctl install "${SIMULATOR}" "${APP_PATH}"
fi
if [ ! -z "$APP_IDENTIFIER" ]
then
echo "${SIMULATOR} opening app: ${APP_IDENTIFIER}"
xcrun simctl launch "${SIMULATOR}" "${APP_IDENTIFIER}"
fi
if [ ! -z "$OPEN_URL" ]
then
echo "${SIMULATOR} opening url: ${OPEN_URL}"
xcrun simctl openurl "${SIMULATOR}" "${OPEN_URL}"
fi
done
Thanks! Nice work!