Jump to content
Rollo62

iOS Upgrade from Xcode 14.3.1 to XCode 15.2: Yes or No ?

Recommended Posts

Hi there,

I'm currently considering how far I should update my tools and devices, to find random errors.

The upgrade process from D11.3 to D12 stuck a bit, and I'm now in between D11.3 and D12 somehow.
Since the latest D12.0 supports iOS17.x, but unfortunately doesn't seem to support Device debugging any longer.

http://docwiki.embarcadero.com/PlatformStatus/en/Main_Page#cite_ref-iOS17_3-0

http://docwiki.embarcadero.com/PlatformStatus/en/Main_Page#cite_note-iOS17-3

https://developer.apple.com/documentation/xcode-release-notes/xcode-15_3-release-notes

 

The question is, how far I should update my devices and tools, what is the best strategy to survive that breaking change.

I highly rely on iOS debugging under D11.3, as the last resort to make reasonable tests ( since Android debugging didn't work for a while either ).

Without that, the development will be even more hard than it is today.

 

Currently, I want to investigate crashing on an iOS 17.3.1 device, which my latest iOS 16.7.5 device doesn't show.

I'm afraid, this will be only possible by upgrading to XCode 15.2 then, as XCode 14.3.1 doesn't support iOS 17 at all.

 

This will kill my ability to debug on real hardware, since I only have x86 Intel Mac available and I'm also out of the ability to use a simulator ( which I really don't want either ).

 

So my hope it, that using XCode 14.3.1, with running and debugging on an iOS 17 device somehow, will be possible, to find issues.

Does the latest Patch 1 changes anything on the debugging situation?

 

My question is, to which XCode, IOS versions I shall safely update, when I still need to debug devices?

Are there any tricks or workarounds available?

 

The worst case will be to end up with mobile development, where neither iOS nor Android debugging works reliable.

 

 

 

Edited by Rollo62

Share this post


Link to post

OMG: It's worse.

It seems XCode 14.3.1 is not running on Sonoma anymore, why :classic_blink:.

https://forums.developer.apple.com/forums/thread/731005

 

Is this the case, or is there any hack how this can be done?

Updating Apple products is always a pain in the a**, but this time it really seems to break my workflow completely.
So do I have to upgrade to XCode 15.2, or is there any way out?

 

Edited by Rollo62

Share this post


Link to post

It stays strange, the tip in the link works partly:

Quote

You can still run it using Terminal open /Applications/Xcode.app/Contents/MacOS/Xcode

When unzipped and copied XCode to /Applications ( about 24 GB ), then

I used this command "open /Applications/Xcode.app/Contents/MacOS/Xcode" first time

This looks promising, starting a UI asking which components to install, I kept the checked Macos and iOS frameworks

Then it prepared something but seemed to crash.

 

When I started a second time, it give output like this in the terminal, but doesn't start really in normal mode.

 

The default interactive shell is now zsh.
To update your account to use zsh, please run `chsh -s /bin/zsh`.
For more details, please visit https://support.apple.com/kb/HT208050.
username$ /Applications/Xcode.app/Contents/MacOS/Xcode ; exit;
2024-02-20 13:16:59.811 Xcode[5677:87640] Regex scanner "(null)" shouldn't have a Tokenizer. Ignoring it.
2024-02-20 13:16:59.940 Xcode[5677:87640] WARNING: Secure coding is not enabled for restorable state! Enable secure coding by implementing NSApplicationDelegate.applicationSupportsSecureRestorableState: and returning YES.
2024-02-20 13:17:00.246 Xcode[5677:87640] DVTCoreDeviceEnabledState: DVTCoreDeviceEnabledState_Disabled set via user default (DVTEnableCoreDevice=disabled)
2024-02-20 13:17:00.256 Xcode[5677:87704] CoreSimulator detected version change.  Framework version (885.2) does not match existing job version (857.14).  Attempting to remove the stale service in order to add the expected version.
objc[5677]: Class _EntryGenericToGL is implemented in both /Applications/Xcode.app/Contents/SharedFrameworks/GPUToolsServices.framework/Versions/A/GPUToolsServices (0x14e59ce28) and /Applications/Xcode.app/Contents/PlugIns/GPUDebugger.ideplugin/Contents/Frameworks/GPUToolsAdvancedUI.framework/Versions/A/GPUToolsAdvancedUI (0x14d3a83c0). One of the two will be used. Which one is undefined.
objc[5677]: Class _EntryGLToGeneric is implemented in both /Applications/Xcode.app/Contents/SharedFrameworks/GPUToolsServices.framework/Versions/A/GPUToolsServices (0x14e59ce78) and /Applications/Xcode.app/Contents/PlugIns/GPUDebugger.ideplugin/Contents/Frameworks/GPUToolsAdvancedUI.framework/Versions/A/GPUToolsAdvancedUI (0x14d3a8410). One of the two will be used. Which one is undefined.
objc[5677]: Class DYPixelFormatConverter is implemented in both /Applications/Xcode.app/Contents/SharedFrameworks/GPUToolsServices.framework/Versions/A/GPUToolsServices (0x14e59cec8) and /Applications/Xcode.app/Contents/PlugIns/GPUDebugger.ideplugin/Contents/Frameworks/GPUToolsAdvancedUI.framework/Versions/A/GPUToolsAdvancedUI (0x14d3a8460). One of the two will be used. Which one is undefined.
objc[5677]: Class ASVError is implemented in both /Applications/Xcode.app/Contents/SharedFrameworks/GPUToolsCore.framework/Versions/A/GPUToolsCore (0x13c111268) and /Applications/Xcode.app/Contents/PlugIns/GPUDebugger.ideplugin/Contents/Frameworks/GPUToolsASVC.framework/Versions/A/GPUToolsASVC (0x13c0177c8). One of the two will be used. Which one is undefined.
objc[5677]: Class DYGPUDerivedEncoderCounterInfo is implemented in both /Applications/Xcode.app/Contents/SharedFrameworks/GPUToolsShaderProfiler.framework/Versions/A/GPUToolsShaderProfiler (0x13c184098) and /Applications/Xcode.app/Contents/PlugIns/GPUDebugger.ideplugin/Contents/Frameworks/GTShaderProfiler.framework/Versions/A/GTShaderProfiler (0x14f91c7c8). One of the two will be used. Which one is undefined.
objc[5677]: Class DYGPUTimelineInfo is implemented in both /Applications/Xcode.app/Contents/SharedFrameworks/GPUToolsShaderProfiler.framework/Versions/A/GPUToolsShaderProfiler (0x13c1840e8) and /Applications/Xcode.app/Contents/PlugIns/GPUDebugger.ideplugin/Contents/Frameworks/GTShaderProfiler.framework/Versions/A/GTShaderProfiler (0x14f91c818). One of the two will be used. Which one is undefined.
objc[5677]: Class DYTimelineCounterGroup is implemented in both /Applications/Xcode.app/Contents/SharedFrameworks/GPUToolsShaderProfiler.framework/Versions/A/GPUToolsShaderProfiler (0x13c184138) and /Applications/Xcode.app/Contents/PlugIns/GPUDebugger.ideplugin/Contents/Frameworks/GTShaderProfiler.framework/Versions/A/GTShaderProfiler (0x14f91c868). One of the two will be used. Which one is undefined.
objc[5677]: Class DYWorkloadGPUTimelineInfo is implemented in both /Applications/Xcode.app/Contents/SharedFrameworks/GPUToolsShaderProfiler.framework/Versions/A/GPUToolsShaderProfiler (0x13c184188) and /Applications/Xcode.app/Contents/PlugIns/GPUDebugger.ideplugin/Contents/Frameworks/GTShaderProfiler.framework/Versions/A/GTShaderProfiler (0x14f91c8b8). One of the two will be used. Which one is undefined.
objc[5677]: Class GRCPerFrameDataClass is implemented in both /Applications/Xcode.app/Contents/SharedFrameworks/MTLToolsShaderProfiler.framework/Versions/A/MTLToolsShaderProfiler (0x14e17b858) and /Applications/Xcode.app/Contents/PlugIns/GPUDebugger.ideplugin/Contents/Frameworks/GTShaderProfiler.framework/Versions/A/GTShaderProfiler (0x14f91ccc8). One of the two will be used. Which one is undefined.
objc[5677]: Class DYShaderAnalyzerNextGPU is implemented in both /Applications/Xcode.app/Contents/SharedFrameworks/MTLToolsShaderProfiler.framework/Versions/A/MTLToolsShaderProfiler (0x14e17b808) and /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/GPUTools/PlugIns/GLToolsShaderProfilerMobileSupport.gtplugin/Contents/MacOS/GLToolsShaderProfilerMobileSupport (0x150fd8610). One of the two will be used. Which one is undefined.

Looking through more of the comments, I see something like this:

Quote

I solved the problem uninstalling Xcode 15 and installing the 14.3, after that, I set the "/Application/Xcode.app" in the "Location:" field in the Visual Studio > preferences > SDK Locations > Apple. Then I clicked in Restart Visual Studio button and worked.

3 months ago
 

Where I don't really see how this might help the VisualStudio, probably this will only use the commandline tools, ad not the UI.

 

It seems to work maybe from a different location:

Quote

@hmlong not sure what technical reasons lays within, but actually Xcode 14.3.1 is able to work on Sonoma. Just launch it from package contents Contents/MacOS/Xcode.

image.thumb.png.8725a8d3222d8598b4e455fbd0ba9588.png

 

 

There seems another way, described later on, by changing the CFBundleVersion, but I can't get this running also

Quote

So we have no choice to keep using Xcode 14.3.1 and the way to do it is:

- Download and unpack Xcode 14.3.1
- Right click and select "Show Package Contents"
- Navigate to Contents
- Open the Info.plist file
- Alter CFBundleVersion from 21815 to 22265
- Save change
- Right click Xcode 14.3.1 bundle and select "Open"

 

Any ideas?

Maybe I should purchase a plist-editor, to get this done, with the existing tools.

Edited by Rollo62

Share this post


Link to post

It stays strange, the tip in the link works partly:

Quote

You can still run it using Terminal open /Applications/Xcode.app/Contents/MacOS/Xcode

When unzipped and copied XCode to /Applications ( about 24 GB ), then

I used this command "open /Applications/Xcode.app/Contents/MacOS/Xcode" first time

This looks promising, starting a UI asking which components to install, I kept the checked Macos and iOS frameworks

Then it prepared something but seemed to crash.

 

When I started a second time, it give output like this in the terminal, but doesn't start really in normal mode.

 

The default interactive shell is now zsh.
To update your account to use zsh, please run `chsh -s /bin/zsh`.
For more details, please visit https://support.apple.com/kb/HT208050.
username$ /Applications/Xcode.app/Contents/MacOS/Xcode ; exit;
2024-02-20 13:16:59.811 Xcode[5677:87640] Regex scanner "(null)" shouldn't have a Tokenizer. Ignoring it.
2024-02-20 13:16:59.940 Xcode[5677:87640] WARNING: Secure coding is not enabled for restorable state! Enable secure coding by implementing NSApplicationDelegate.applicationSupportsSecureRestorableState: and returning YES.
2024-02-20 13:17:00.246 Xcode[5677:87640] DVTCoreDeviceEnabledState: DVTCoreDeviceEnabledState_Disabled set via user default (DVTEnableCoreDevice=disabled)
2024-02-20 13:17:00.256 Xcode[5677:87704] CoreSimulator detected version change.  Framework version (885.2) does not match existing job version (857.14).  Attempting to remove the stale service in order to add the expected version.
objc[5677]: Class _EntryGenericToGL is implemented in both /Applications/Xcode.app/Contents/SharedFrameworks/GPUToolsServices.framework/Versions/A/GPUToolsServices (0x14e59ce28) and /Applications/Xcode.app/Contents/PlugIns/GPUDebugger.ideplugin/Contents/Frameworks/GPUToolsAdvancedUI.framework/Versions/A/GPUToolsAdvancedUI (0x14d3a83c0). One of the two will be used. Which one is undefined.
objc[5677]: Class _EntryGLToGeneric is implemented in both /Applications/Xcode.app/Contents/SharedFrameworks/GPUToolsServices.framework/Versions/A/GPUToolsServices (0x14e59ce78) and /Applications/Xcode.app/Contents/PlugIns/GPUDebugger.ideplugin/Contents/Frameworks/GPUToolsAdvancedUI.framework/Versions/A/GPUToolsAdvancedUI (0x14d3a8410). One of the two will be used. Which one is undefined.
objc[5677]: Class DYPixelFormatConverter is implemented in both /Applications/Xcode.app/Contents/SharedFrameworks/GPUToolsServices.framework/Versions/A/GPUToolsServices (0x14e59cec8) and /Applications/Xcode.app/Contents/PlugIns/GPUDebugger.ideplugin/Contents/Frameworks/GPUToolsAdvancedUI.framework/Versions/A/GPUToolsAdvancedUI (0x14d3a8460). One of the two will be used. Which one is undefined.
objc[5677]: Class ASVError is implemented in both /Applications/Xcode.app/Contents/SharedFrameworks/GPUToolsCore.framework/Versions/A/GPUToolsCore (0x13c111268) and /Applications/Xcode.app/Contents/PlugIns/GPUDebugger.ideplugin/Contents/Frameworks/GPUToolsASVC.framework/Versions/A/GPUToolsASVC (0x13c0177c8). One of the two will be used. Which one is undefined.
objc[5677]: Class DYGPUDerivedEncoderCounterInfo is implemented in both /Applications/Xcode.app/Contents/SharedFrameworks/GPUToolsShaderProfiler.framework/Versions/A/GPUToolsShaderProfiler (0x13c184098) and /Applications/Xcode.app/Contents/PlugIns/GPUDebugger.ideplugin/Contents/Frameworks/GTShaderProfiler.framework/Versions/A/GTShaderProfiler (0x14f91c7c8). One of the two will be used. Which one is undefined.
objc[5677]: Class DYGPUTimelineInfo is implemented in both /Applications/Xcode.app/Contents/SharedFrameworks/GPUToolsShaderProfiler.framework/Versions/A/GPUToolsShaderProfiler (0x13c1840e8) and /Applications/Xcode.app/Contents/PlugIns/GPUDebugger.ideplugin/Contents/Frameworks/GTShaderProfiler.framework/Versions/A/GTShaderProfiler (0x14f91c818). One of the two will be used. Which one is undefined.
objc[5677]: Class DYTimelineCounterGroup is implemented in both /Applications/Xcode.app/Contents/SharedFrameworks/GPUToolsShaderProfiler.framework/Versions/A/GPUToolsShaderProfiler (0x13c184138) and /Applications/Xcode.app/Contents/PlugIns/GPUDebugger.ideplugin/Contents/Frameworks/GTShaderProfiler.framework/Versions/A/GTShaderProfiler (0x14f91c868). One of the two will be used. Which one is undefined.
objc[5677]: Class DYWorkloadGPUTimelineInfo is implemented in both /Applications/Xcode.app/Contents/SharedFrameworks/GPUToolsShaderProfiler.framework/Versions/A/GPUToolsShaderProfiler (0x13c184188) and /Applications/Xcode.app/Contents/PlugIns/GPUDebugger.ideplugin/Contents/Frameworks/GTShaderProfiler.framework/Versions/A/GTShaderProfiler (0x14f91c8b8). One of the two will be used. Which one is undefined.
objc[5677]: Class GRCPerFrameDataClass is implemented in both /Applications/Xcode.app/Contents/SharedFrameworks/MTLToolsShaderProfiler.framework/Versions/A/MTLToolsShaderProfiler (0x14e17b858) and /Applications/Xcode.app/Contents/PlugIns/GPUDebugger.ideplugin/Contents/Frameworks/GTShaderProfiler.framework/Versions/A/GTShaderProfiler (0x14f91ccc8). One of the two will be used. Which one is undefined.
objc[5677]: Class DYShaderAnalyzerNextGPU is implemented in both /Applications/Xcode.app/Contents/SharedFrameworks/MTLToolsShaderProfiler.framework/Versions/A/MTLToolsShaderProfiler (0x14e17b808) and /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/GPUTools/PlugIns/GLToolsShaderProfilerMobileSupport.gtplugin/Contents/MacOS/GLToolsShaderProfilerMobileSupport (0x150fd8610). One of the two will be used. Which one is undefined.

Looking through more of the comments, I see something like this:

Quote

I solved the problem uninstalling Xcode 15 and installing the 14.3, after that, I set the "/Application/Xcode.app" in the "Location:" field in the Visual Studio > preferences > SDK Locations > Apple. Then I clicked in Restart Visual Studio button and worked.

3 months ago
 

Where I don't really see how this might help the VisualStudio, probably this will only use the commandline tools, ad not the UI.

 

It seems to work maybe from a different location:

Quote

@hmlong not sure what technical reasons lays within, but actually Xcode 14.3.1 is able to work on Sonoma. Just launch it from package contents Contents/MacOS/Xcode.

image.thumb.png.8725a8d3222d8598b4e455fbd0ba9588.png

 

 

The latst hint seems to work, after using a PList editor.
I used "JSON PList Buddy" for that, here is what I have done.
 

Quote

- Download and unpack Xcode 14.3.1
- Right click and select "Show Package Contents"
- Navigate to /Applications/XCode/Contents
- Copy the Info.plist file inside of the XCode.app package
- Paste info.plist    to an external folder, e.g.    001_ Src    
- Use the JSON PList Buddy tool
- Goto tab Plist -> JSON, to open the             001_ Src/info.plist    
- Save the info.plist to JSON,                          002_Json/converted.json    
- Goto tab JSON -> Plist
- Load the converted.json file                 from 002_Json/converted.json
- Scroll down to                    "CFBundleVersion" : "21815",
- Edit to                                 "CFBundleVersion" : "22265",
- Save file to converted.plist            002_Json/converted.plist    
- Copy and rename converted.plist          to    003_Final/info.plist    
- Copy and overwrite existing info.plist    to     /Applications/XCode/Contents    

- Save changes
- Right click Xcode 14.3.1 bundle and select "Open"

 

Hooray, XCode starts again and shows Version 1.4.3.1 :classic_cheerleader:

 

At least XCode is back for the moment, but I'm looking towards the next showstoppers soon.

If Apple really doesn't want us to use XCode, they will finally win.

 

Edited by Rollo62

Share this post


Link to post

It seems that unfortunately nobody else has some more insights regarding Sonoma and XCode 14.3.1 vs. XCode 15.2,

so I want at least post my current results here.


With the method described, see above, it seems that I could successfully (trick)-install XCode 14.3.1 under Sonoma (Intel), including normal debugging function under iOS and Macos.

At least this works for iOS 16.4 devices so far, which is the latest SDK offered, although the iPhone has installed iOS 16.75.

I have not yet made experiments with iOS 17, but I will try soon and see how this might behave.

 

At the moment I tested only the Rx12.0 version, without the latest IDE patch, so my next move will be to check the behavior of the Patch 1.

 

Share this post


Link to post
33 minutes ago, Rollo62 said:

It seems that unfortunately nobody else has some more insights regarding Sonoma and XCode 14.3.1 vs. XCode 15.2,

I might have, if I needed to use Xcode 14.3.1 - I have read back trying to work out why you need to. Delphi 11.3 and 12 works with Xcode 15.2 for me, aside from debugging with iOS 17 devices (as you discovered - known issue, yet to be resolved)

Share this post


Link to post
56 minutes ago, Dave Nottage said:

aside from debugging with iOS 17 devices (as you discovered - known issue, yet to be resolved)

Yes, I need debugging on devices, because I need to debug external devices too.
Without debugging, this turns out to be a real pain, although I have implemented massive logging meanwhile.

In the past debugging worked reliable sometimes on Android, sometimes on iOS / Macos, but always some way to go.

In D12 and XCode 15 it seems not to work any longer, no matter what.

Another way out would be to imp,ement the according Win32 functions, to at least debug there, but also this is not running out-of-the-box.

 

Before I put too much energy into XCode 15, I better try with the last version,     ...    time is NOT on my side :classic_biggrin:

Edited by Rollo62

Share this post


Link to post

You only need a iOS 16 device.

BTW I don't write today iOS app but but at that time I learned that upgrading iOS on the device should be done only when there is a confirmation that debugging from Delphi works on new iOS.

Edited by Cristian Peța

Share this post


Link to post
8 hours ago, Rollo62 said:

Yes, I need debugging on devices, because I need to debug external devices too.
Without debugging, this turns out to be a real pain, although I have implemented massive logging meanwhile.

You're not going to be able to debug on iOS 17 devices using Delphi until EMBT fix it, regardless of the Xcode version. If you need debugging on real devices, use one with iOS 16.x (if you can find one)

 

Share this post


Link to post
20 hours ago, Cristian Peța said:

You only need a iOS 16 device.

That would be great, but I do see certain different behaviors when I run the iOS 16 App release via TestFlight on an iOS 17 device.
Those issues will be hard to find without proper debugging.

 

12 hours ago, Dave Nottage said:

You're not going to be able to debug on iOS 17 devices using Delphi until EMBT fix it, regardless of the Xcode version. If you need debugging on real devices, use one with iOS 16.x (if you can find one)

I think so too, any ideas when a fix will be available?

The deadline is around April, I assume from then XCode 15 is hardly required, or allows Apple a grace time until our IDEs will be fixed?

Would be great if there would be any official statement about this issue and the status of fixing it.

 

I have iOS 16 and iOS 17 device available, but only a MacBook (Intel), so I cannot use the simulator ( which I also would not put in the ring, if not really needed ).

 

Regarding the XCode internal changes, I'm not clear about how deep they were, but I expect the worst from what I have read so far.
If you have more insights about the relevance of the changes, it would be great to get more info.
I would assume that linker, debugger, PAServer and a lot more functions were affected.

 

Edited by Rollo62

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×