Messing about with iOS! Why do we need in intermediary device? #31263
-
Hi all, Well done with MAUI - it's come on massively. I've come to develop an app for iOS. I've been trying to do the free development approach, but it was too much hassle. In the end, I just bought an Apple developer licence for £79. Anyway, so, it's a lot of hassle. You apparently, you need an intemediary device. I've got a Macbook Air from 2015. First, I couldn't get Xcode to install, it was a lot of messing around. There's some type of incompatibility. Eventually, I reliased that I could only deploy with Xcode 14.2. I solved all that. However, now I come to deploy, it says; "This version of .NET for iOS (18.5.9214) requires Xcode 16.4. The current version of Xcode is 14.2. Either install Xcode 16.4, or use a different version of .NET for iOS." So, after all that, it turns out that I need to revert my entire project back to .NET 7.0. If I do this, then ofcourse, the Nuget packages start moaning, the csproj file gets corrupted, and so on... HOWEVER, to my surprise, if I click "deploy to local device", it works flawlessly without any problems. What on earth is this about? So, we don't need Xcode to deploy at all. |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 3 replies
-
While I understand this must be very frustrating, almost none of this has to do with .NET MAUI/.NET for iOS directly. If you want to build an iOS app and release that to the App Store, whether thats with MAUI, React Native, Flutter, native tooling or anything else, you will need to do your final build on Mac hardware. This is decided by Apple in their end-user agreement. The way we implemented this to make it as easy as possible is a) you either build directly on a Mac using VS Code or you use Visual Studio on Windows but you will need the intermediary device that you mention. Because Apple controls the whole ecosystem, they also decide whenever hardware stops supporting a certain macOS version, and therefore also which Xcode version. That means that your MacBook Air from 2015 is not supported anymore. Since we build on top of what Apple puts out there, we have to move forward with what they support. That means, our current stable versions are on the (almost) latest versions of Xcode. Simply because the majority of our customers will be building for that and want to release their apps to the App Store. This is also why we have a different support policy than .NET. In short, .NET 7 is out of support, Xcode 14.2 is out of support, so even if you got it to work with all of that, there is no way you will ever be able to release that to the App Store. As for needing an Apple Developer license, again, an Apple restriction. You can make it work without it, but its more of a hassle as you said. What you mention about just being able to deploy without any device attached is what we call Hot Restart. While this is a great way to be able to develop for iOS directly from a Windows machine, because of the technical setup of this solution, you will again never be able to distribute this version to the App Store and it has some other limitations as well. So while this is helpful, and I'm glad to see its working seamlessly for you, it's not a solution when you want to release your app. I hope this clears it up! All of this in more detail is also described on Microsoft Learn. |
Beta Was this translation helpful? Give feedback.
While I understand this must be very frustrating, almost none of this has to do with .NET MAUI/.NET for iOS directly.
If you want to build an iOS app and release that to the App Store, whether thats with MAUI, React Native, Flutter, native tooling or anything else, you will need to do your final build on Mac hardware. This is decided by Apple in their end-user agreement. The way we implemented this to make it as easy as possible is a) you either build directly on a Mac using VS Code or you use Visual Studio on Windows but you will need the intermediary device that you mention.
Because Apple controls the whole ecosystem, they also decide whenever hardware stops supporting a certain macOS v…