Quick start
Go from an installed xcross binary to a running, hot-reloadable Flutter app on a physical iPhone.
This walkthrough assumes xcross is already installed and on your PATH. See Installation if it isn’t yet.
# 1. One-time machine setup
xcross setup
xcross sdk install ~/Downloads/Xcode.xip
xcross auth --apple-id you@example.com
# 2. Check build and run requirements without changing anything
cd my_flutter_app
xcross doctor
# 3. Once per device reconnect: mount DDI + start the RSD tunnel
# (Administrator PowerShell on Windows; root on Linux)
xcross tunnel
# 4. Run on the device with hot reload
xcross flutter run
# 5. Optional: wire up your IDE
xcross ide vscode # or: xcross ide idea
1. One-time machine setup
Run these once per machine, in order:
xcross setupinstalls host dependencies (aptpackages on Linux, or checks Flutter/Swift/LLVM on Windows) pluspymobiledevice3.xcross sdk install ~/Downloads/Xcode.xipextracts the Darwin Swift SDK from a downloaded Xcode archive. See Darwin SDK.xcross auth --apple-id you@example.comsigns in and saves a Developer Services session. See Authentication.
2. Check requirements
From your Flutter or Compose project, run:
xcross doctor
Doctor checks the Linux or Windows host tools, Darwin SDK, current project, authentication, device tooling, and connected iOS versions without building, installing, or launching anything. Missing project or device context is a warning; failed requirements return a nonzero exit code.
3. Connect the device
xcross tunnel
Run this once per device reconnect, before xcross flutter run. It mounts the Developer Disk Image and starts the iOS 17+ RSD tunnel. Creating the tunnel interface needs elevated privileges: an Administrator PowerShell on Windows, or root on Linux.
To run without a cable, use xcross tunnel --wifi instead. With USB attached it bootstraps wireless pairing through the cable; without USB it reconnects a saved device or, on iOS 27+, guides you through pairing under Settings > Privacy and Security > Developer Mode > Paired Devices. See Run over Wi-Fi.
4. Run on the device
cd my_flutter_app
xcross flutter run
This prepares your app, launches it on the connected iPhone and keeps the process attached for hot reload. While it’s running:
| Key | Action |
|---|---|
r | Hot reload |
R | Hot restart |
q / Ctrl-C / Ctrl-D | Quit |
With multiple iPhones connected, an interactive terminal shows a numbered device picker. For CI or piped runs where there is no interactive terminal, select the device explicitly:
xcross flutter run -u <UDID>
5. Optional: wire up your IDE
xcross ide vscode
Sets up VS Code’s Run & Debug panel, Hot Reload/Restart buttons, and DevTools for this project. Use xcross ide idea instead for JetBrains IDEs via DAP. See IDE integration.
Next steps
- CLI reference - device selection, flavors, dart-defines and every other flag
- Run over Wi-Fi - wireless pairing, RSD tunnels and iOS 27+ setup
- IDE integration - full VS Code and JetBrains setup
- Troubleshooting - what to do if a step above fails