Can I run Swift REPL with iOS SDK?
I want to import and use UIKit
in REPL, but no success.
$ xcrun --sdk iphonesimulator8.1 --show-sdk-p
The Swift REPL currently does not support iOS device or iOS simulator.
You may achieve it by running repl
from lldb
, which attached to iOS application process (of your Xcode project).
Build project in Xcode, or:
$ xcrun xcodebuild -configuration Debug -destination 'platform=iOS Simulator,name=iPhone 7,OS=10.3' clean build
Start standalone lldb
for your iOS project:
$ xcrun lldb -- $DerivedData/$AppName/Build/Products/Debug-iphonesimulator/$AppName.app
(lldb) process attach --name '$AppName' --waitfor
You may find useful platform select ios-simulator
and platform connect $UDID
commands here.
Run your iOS application in iOS simulator from Xcode
Or from command line:
Boot simulator
From instruments
:
$ xcrun instruments -w "`xcrun instruments -s | grep 'iPhone 7 (10.3)' | head -1`"
Or as an application:
$ open -a "Simulator" --args -CurrentDeviceUDID "`xcrun instruments -s | grep 'iPhone 7 (10.3)' | head -1 | sed -E -e 's/[^][]*\[([^][]*)\][^][]*/\1/g'`"
Install the application on simulator, and launch it:
$ xcrun simctl install booted $DerivedData/$AppName/Build/Products/Debug-iphonesimulator/$AppName.app
$ xcrun simctl launch booted $AppBundleID
Also, you can even use xcrun simctl launch --wait-for-debugger
and start lldb
later.
Or with ios-sim:
Optionally boot simulator & install the application:
$ ios-sim start --devicetypeid 'iPhone-7, 10.3'
$ ios-sim install --devicetypeid 'iPhone-7, 10.3' $DerivedData/$AppName/Build/Products/Debug-iphonesimulator/$AppName.app
Launch it:
$ ios-sim launch --devicetypeid 'iPhone-7, 10.3' $DerivedData/$AppName/Build/Products/Debug-iphonesimulator/$AppName.app
Attach to process in iOS simulator in lldb
:
(lldb) continue
(lldb) process interrupt
Run swift
repl.
(lldb) repl
1> import UIKit
2>
Furthermore, as opposed to swift
repl
in Xcode debug terminal emulator, here we have working source autocompletion and command history navigation.