Skip to content

Deploy to iOS devices with devicectl - #198

Merged
enfipy merged 1 commit into
mainfrom
feat/devicectl-device-deploy
Sep 19, 2026
Merged

enfipy merged 1 commit into
mainfrom
feat/devicectl-device-deploy

Conversation

@enfipy

@enfipy enfipy commented Sep 19, 2026

Copy link
Copy Markdown
Collaborator

Objective

  • crossbundle run ios --device shells out to ios-deploy, which is unmaintained and cannot talk to iOS 17+ devices, so device runs fail on current iPhones even when the bundle is correctly signed.

Solution

  • Prefer xcrun devicectl (Xcode 15+): install the bundle with devicectl device install app, then launch it with devicectl device process launch --terminate-existing using the bundle identifier read from the generated Info.plist. --debug keeps the process attached to the console.
  • Without --device-id, pick the first paired physical device from devicectl list devices --json-output; a clear error explains what to do when none is connected.
  • Keep ios-deploy as the fallback when devicectl is not available, so older toolchains behave as before.
  • Unit tests cover the device selection from a devicectl listing. Verified end to end by installing and launching a Bevy game on an iPhone 16 Pro (iOS 26.7) from Xcode 27.

Changelog

Changed

  • iOS device runs use devicectl when available; ios-deploy is only needed for Xcode 14 and older.
  • --debug on a device run attaches to the application console with devicectl (it still starts the debugger on the ios-deploy path).

`ios-deploy` is unmaintained and does not reach iOS 17+ devices, so device runs
failed on current phones even with a valid signature.

Use `xcrun devicectl` when the selected Xcode provides it (Xcode 15+): install
the bundle, then launch it by bundle identifier read from the generated
Info.plist, staying attached to the console with `--debug`. Without a
`--device-id`, pick the first paired physical device from the devicectl
listing. Older toolchains keep the `ios-deploy` path.
@enfipy
enfipy merged commit c21e876 into main Sep 19, 2026
8 checks passed
@enfipy
enfipy deleted the feat/devicectl-device-deploy branch September 19, 2026 20:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant