Missing iOS 17 device support files

Add a Comment

Apple Recommended

  • But the fact is that we do NEED to debug iOS17 with Xcode 14.x. Our app was built with Xcode14.2 and there's an issue on a device with iOS17 beta. We will continue use Xcode14.2 to build our app until Xcode15 released, so we have to solve the problems with Xcode 14.2 + iOS17 beta, or we just wait you guys to fix issue on iOS17 beta?

  • Starred like around 7.9k times https://github.com/iGhibli/iOS-DeviceSupport

    Regardless of it being unsupported, it's clear there is a need. Every dev in medium to large shop has used this between tool migrations. Any dev which takes the chance on taking the new shiny (possible brittle) OS, has probably used this trick.

    C'mon little empathy for users when you know you broke their established community workaround :)

Add a Comment

Replies

Hello @michelf19. Can you explain what you're trying to accomplish? What do you mean by

(coping iOS 17 Device Support files from Xcode 15)

? Are you expecting to copy files from a later version of Xcode to an earlier version of Xcode? To what end?

—Jason.

  • We want to run the app on ios17 devices with lower versions of xcode, but it is strange that the iOS DeviceSupport in xcode15 is only up to 16.4, not 17. I don't understand how xcode15 can run the app on iOS17 devices.

  • @Jason There is quite a popular gist that people have updated for about 7 years on how to do this. It's not unusual to do.

  • @Jason I've never been on a team where this trick wasn't needed at some point - especially on larger commercials projects with lots of external packages.

    Right now we cannot run XCode 15 because we have a commercial vendor pod which is crashing the app in XCode 15 - so until they get their act together, we are stuck on 14.

    Thats the common case.

Add a Comment

@Jason Yes. You are right. We ware doing this previously :)

  • But the fact is that we do NEED to debug iOS17 with Xcode 14.x. Our app was built with Xcode14.2 and there's an issue on a device with iOS17 beta. We will continue use Xcode14.2 to build our app until Xcode15 released, so we have to solve the problems with Xcode 14.2 + iOS17 beta, or we just wait you guys to fix issue on iOS17 beta?

  • Starred like around 7.9k times https://github.com/iGhibli/iOS-DeviceSupport

    Regardless of it being unsupported, it's clear there is a need. Every dev in medium to large shop has used this between tool migrations. Any dev which takes the chance on taking the new shiny (possible brittle) OS, has probably used this trick.

    C'mon little empathy for users when you know you broke their established community workaround :)

Add a Comment

@Jason This seems completely artificial that it's not supported to run an app from an older version of Xcode on a later iOS version. As you can build the app for device. Then go to Window > Devices and Simulators > Select your iPhone > Installed Apps > + > Navigate to DerivedData and find the app just built. And the old version of Xcode will happily install the app. I can somewhat understand not being able to debug and get logs though

@Jason worked perfectly for me thanks 🤌🏼

Was anyone able to locate the support files, I don't intend to copy them over, but Flutter is complaining about not being able to find support for iOS 17.

Hi folks,

I want to be clear: this issue is specifically about copying files from DeviceSupport.

Discussion about what should or does work is a separate issue, and I encourage you to file feedback if you find any limitations that don't meet your expectation.

We want to run the app on ios17 devices with lower versions of xcode, but it is strange that the iOS DeviceSupport in xcode15 is only up to 16.4, not 17. I don't understand how xcode15 can run the app on iOS17 devices

Because the way Xcode 15 beta talks to devices isn't represented in the DeviceSupport folder, because:

As the system evolves, any expectations for "how things work" could be made invalid, and this appears to be the case here.

There is quite a popular gist that people have updated for about 7 years on how to do this. It's not unusual to do.

I understand. An undocumented process happened to work (yes, for a long time), and now it doesn't. That is the nature of undocumented processes: they are subject to change, and can break things that rely on them.

Flutter is complaining about not being able to find support for iOS 17.

Sounds like Flutter may need to update their assumptions about how the system works. (I don't know why Flutter relies on that folder; that's a question for Flutter.)

—Jason.

  • The problem now is that Xcode15 beta is too difficult to use, so we want to use Xcode14 to debug applications on iOS 17. If we wait for the official release of Xcode15, and by that time iOS17 has already been installed on users' phones, it will be too late. We must discover the problems with the application on iOS 17 before the users do.

Add a Comment

Seems this does not only happen on Xcode15 beta. I've checked Xcode14.2 and the latest version if device support file is 16.1 😂

Is there any way to get the old Xcode working with the new ios17.

We got some reports from customers that there is some issue with ios17. To debug the issue we need the debugger running. But some of our 3rd party libs are not yet compatible with XCode 15 so the project does not compile and there fore we cannot debug the project with latest xcode.

Usually in this situation we have just copied the device support from old XCode and resolved the issue with debugger of older version of XCode.

Of cource we can add tons of prints to code and try to get the error out the good old traditional way. But having the debugger working is always much nicer way to debug code.

It's a bit convoluted, but the only way I've found to test apps built using Xcode 14, on an iOS17 device - whilst still being able to debug is as follows:

  1. Archive the app using Xcode 14 - choose the "Any iOS Device" run destination.
  2. In organizer, select the archive, and "Show in finder".
  3. Expand the archive using "Show Package Contents", then open "Products -> Applications" to see the app - you'll need this later.
  4. Close Xcode 14, and open Xcode 15.
  5. In Xcode 15, in "Devices and Simulators", select your iOS17 device.
  6. Hit the "+" button at the bottom of "Installed Apps", and drop the application file from step #3. You should see the build number of the app update in the "Installed Apps" list.
  7. You can now run the app built from Xcode 14 manually on the iOS17 device - not using "Cmd+R" from Xcode 15 or you'll replace the app you've just installed.
  8. Still in Xcode 15, attach to the app's process using "Debug -> Attach to Process" - breakpoints don't seem to work, but you can print to the log.

You can also of course deliver the app via TestFlight instead of steps 1-6, and then just attach to the app's process using Xcode 15, and your iOS17 device.

With iOS 17+, we are using a new device stack (CoreDevice) to communicate with devices. With this new device stack, there is one DDI per platform (as opposed to per OS release). This same device stack will be shared across all versions of Xcode on your system, and installing a newer version of Xcode will update CoreDevice and its DDIs (just like how CoreSimulator is updated, if you are familiar with that).

This effectively means that you now have a supported way of updating the device stack on your system to support newer target OS devices. With CoreDevice, you should be able to debug devices running future versions of iOS using Xcode 15. This may require first installing a newer Xcode in order to install newer CoreDevice and DDIs, so keep that in mind.

Of course, this also means there is a temporary hiccup in which the old unsupported path doesn't work, but the good news is that future-you will have a supported way of doing this which works out-of-the-box, no need to modify your Xcode.app.

  • This answer should be put on top of this thread along with the required step on the command line. defaults write com.apple.dt.Xcode DVTEnableCoreDevice enabled

  • I'm wondering DDI's full spell

  • You are angels! This may be the biggest feature of iOS 17 yet.

In the terminal run:

defaults write com.apple.dt.Xcode DVTEnableCoreDevice enabled

Then restart Xcode 14 the iOS 17 device will show up in Xcode like below and you can run and debug the app as usual. (You may need to go to Devices and Simulators to pair/trust the device)

I have Xcode 15 beta installed alongside Xcode 14, I'm not sure if that's required or not.

  • Thank you very much for this post. I was able to successfully compile my project. However, when I install the app on my device, I receive a prompt saying 'Unable to launch XXXX because it has an invalid code signature, inadequate entitlements or its profile has not been explicitly trusted by the user'. Has anyone encountered this situation and is there any effective way to solve it?

  • This solution works only locally, when the app is deployed on the store (either by testflight or AppStore), they may be a huge chances that it crashes.

  • does this work on Xcode 13 also?

In the terminal run: defaults write com.apple.dt.Xcode DVTEnableCoreDevice enabled Then restart Xcode 14 the iOS 17 device will show up in Xcode like below and you can run and debug the app as usual. (You may need to go to Devices and Simulators to pair/trust > the device) I have Xcode 15 beta installed alongside Xcode 14, I'm not sure if that's required or not.

wow you just saved me an insane amount of time, thanks so much

Add a Comment

In the terminal run: defaults write com.apple.dt.Xcode DVTEnableCoreDevice enabled

I was unable to debug iOS 17 using Xcode 14.2, but with Xcode 14.3.1, I was able to do so using this method. Thank you very much for this very helpful information.

I have Xcode 15 beta installed alongside Xcode 14, I'm not sure if that's required or not.

  • Have XCode 14.3.1 and XCode Beta also downloaded but still cannot run on device with iOS 17 Beta with XCode 14.3.1. Anything else that you needed to do?

  • The iOS 17 device should be added for development via Xcode 15. It will create a Core Device image. When Xcode 15 is finished then open Xcode 14.3.1 and you will see a new available device with suffix "... (Core Device)".

Add a Comment