Repository navigation
Deploy to iOS devices with devicectl - #198
Merged
Merged
Conversation
`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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Objective
crossbundle run ios --deviceshells out toios-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
xcrun devicectl(Xcode 15+): install the bundle withdevicectl device install app, then launch it withdevicectl device process launch --terminate-existingusing the bundle identifier read from the generatedInfo.plist.--debugkeeps the process attached to the console.--device-id, pick the first paired physical device fromdevicectl list devices --json-output; a clear error explains what to do when none is connected.ios-deployas the fallback whendevicectlis not available, so older toolchains behave as before.Changelog
Changed
devicectlwhen available;ios-deployis only needed for Xcode 14 and older.--debugon a device run attaches to the application console withdevicectl(it still starts the debugger on theios-deploypath).