Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Meta] Apple Silicon Support #10005

Closed
chamons opened this issue Oct 29, 2020 · 18 comments
Closed

[Meta] Apple Silicon Support #10005

chamons opened this issue Oct 29, 2020 · 18 comments
Labels
enhancement The issue or pull request is an enhancement iOS Issues affecting Xamarin.iOS macOS Issues affecting Xamarin.Mac
Milestone

Comments

@chamons
Copy link
Contributor

chamons commented Oct 29, 2020

The team is investigating Apple Silicon support on the current Developer Transition Kit (DTK).

As of December 1st the status is:

  • Xamarin.Mac - Works
    • x86_64 produced binaries work under Rosetta with no known issues
    • Need to produce a new version of Xamarin.Mac.dll for arm64 (with the same binding logic as for DEVICE for iOS)
  • Xamarin.iOS simulators - ** Works**
    • Note: While it works on M1-based Macs, it does produces a "This app needs to be updated by the developer to work on this version of iOS." error message on DTK Macs.
  • Xamarin.iOS device deployment - Works with XI 14.6 stable (or later)
  • tvOS - Identical to iOS
  • watchOS - Blocked due to unrelated issue
@chamons chamons added enhancement The issue or pull request is an enhancement iOS Issues affecting Xamarin.iOS macOS Issues affecting Xamarin.Mac labels Oct 29, 2020
@chamons chamons added this to the Future milestone Oct 29, 2020
@saamerm
Copy link

saamerm commented Nov 10, 2020

Is there an exception raised with that message with the iOS Simulator?

And I guess this is great news then! Because the apple docs state that:

compatible iPhone apps and iPad apps will be available to run on Apple Silicon Macs

and that

Your compatible apps will be published automatically on the Mac App Store, unless you edit their availability

so Xamarin developers shouldn't need to do anything!

@follesoe
Copy link

It would be great if Apple Silicon support could be expanded, by enabling running the app outside the simulator when building/developing on a M1 Mac. This might be an easier feature to allow than say full Catalyst support. Today I have to publish my Xamarin.iOS app to TestFlight/AppStore, and then install it on my M1 Mac to test how the UI looks when running on macOS. I am sure I can also sign/run the PKG file, but would be great if it was built into Visual Studio for Mac, with macOS a run/debug target.

@saamerm
Copy link

saamerm commented Jan 23, 2021

@follesoe have you seen this? https://youtube.com/watch?v=IqeRPm197C4

@follesoe
Copy link

@follesoe have you seen this? https://youtube.com/watch?v=IqeRPm197C4

Yes. Well aware of Mac Catalyst and different efforts (including this one) for supporting it from Xamarin. However, there are several limitations in the above prototype not making it a viable option for us now (awaiting official support from Microsoft).

But, on M1 Macs our app runs perfectly. But to test it (for instance to verify layout on super large screens) I have to create and package and ad hock build and launch it, versus just launching and running outside simulator.

I believe this would be a much easier scenario to support than full Catalyst support, as they don't need any different libs, underlying .NET runtime etc - it's the exact same pkg file and binary.

@ronaldobutrus
Copy link

ronaldobutrus commented Feb 3, 2021

But, on M1 Macs our app runs perfectly. But to test it (for instance to verify layout on super large screens) I have to create and package and ad hock build and launch it, versus just launching and running outside simulator.

Have you managed to get the Xamarin.iOS application to work on macOS directly? The Praeclarum Mac Catalyst isn't working for my project.

@follesoe
Copy link

follesoe commented Feb 3, 2021

But, on M1 Macs our app runs perfectly. But to test it (for instance to verify layout on super large screens) I have to create and package and ad hock build and launch it, versus just launching and running outside simulator.

Have you managed to get the Xamarin.iOS application to work on macOS directly? The Praeclarum Mac Catalyst isn't working for my project.

When running iOS apps on M1 you do not need Catalyst. You run run the exact same binary directly on the Mac. And yes, Xamarin.iOS apps runs just fine, but you need to create a signed AdHoc build and cannot launch it directly from Visual Studio, which is my feature request.

Against, this has nothing to do with Catalyst, and is only relevant for M1 Macs.

@ronaldobutrus
Copy link

ronaldobutrus commented Feb 3, 2021

When running iOS apps on M1 you do not need Catalyst. You run run the exact same binary directly on the Mac. And yes, Xamarin.iOS apps runs just fine, but you need to create a signed AdHoc build and cannot launch it directly from Visual Studio, which is my feature request.

Against, this has nothing to do with Catalyst, and is only relevant for M1 Macs.

Wow I didn't know you could do that; I thought there was an additional step. Thanks very much!

And yes, it is a great feature request.

@saamerm
Copy link

saamerm commented May 20, 2021

If anyone else is looking to deploy/install your app on an M1 Mac directly from a Xamarin iOS app, you guys should check this out

@xfortin-devolutions
Copy link

Any ETA on this for Xamarin.Mac? And will we be able to build universal applications (i.e. built with both the x86_64 and arm64 architectures)?

@ivanicin
Copy link

ivanicin commented Jun 14, 2021

Any ETA on this for Xamarin.Mac? And will we be able to build universal applications (i.e. built with both the x86_64 and arm64 architectures)?

@xfortin-devolutions according to Microsoft no: https://devblogs.microsoft.com/dotnet/announcing-net-6-preview-1/

To quote that page:

Universal binaries is another new requirement for apps that are published via the Mac app store. Publishing via the store isn’t a capability we currently support, nor is it something that we hear requested much from .NET developers. We will not be enabling a workflow to publish universal binaries for .NET apps this release. We will reconsider this need with .NET 7.

It is quite interesting that a random comment got two likes in one hour on Monday morning for the topic with so low developer interest. Most of the comments on 'popular topics' don't get a single like.

And to my best knowledge Mac App Store publishing is officially supported, there is an official page on this topic and it never ever says something like 'beta': https://docs.microsoft.com/en-us/xamarin/mac/deploy-test/publishing-to-the-app-store/

While it is a major disappointment that this won't be supported it is even worse that they have used multiple lies to explain their decision. I don't like to use that word, but unfortunately that is how the things are at the moment. Hopefully it will get better.

@rolfbjarne
Copy link
Member

@xfortin-devolutions

Any ETA on this for Xamarin.Mac? And will we be able to build universal applications (i.e. built with both the x86_64 and arm64 architectures)?

We've released support for this as a preview: https://docs.microsoft.com/en-us/xamarin/mac/release-notes/7/7.13#preview-of-apple-silicon-support

@ivanicin

@xfortin-devolutions according to Microsoft no: https://devblogs.microsoft.com/dotnet/announcing-net-6-preview-1/

To quote that page:

Universal binaries is another new requirement for apps that are published via the Mac app store. Publishing via the store isn’t a capability we currently support, nor is it something that we hear requested much from .NET developers. We will not be enabling a workflow to publish universal binaries for .NET apps this release. We will reconsider this need with .NET 7.

Unfortunately this is case of different people talking about different things. This paragraph is referring to .NET 5's existing macOS support (without Xamarin, just a plain .NET command line executable for instance): you can't create an .app with .NET 5 this way and publish it to the app store. And neither is it a goal for us to make this possible in .NET 6 (so the App Store's requirement to create universal binaries doesn't really apply, because you can't publish to the App Store this way anyway).

However, if you create a Xamarin-based project, we'll support publishing it to the App Store in .NET 6, and we'll also support universal binaries.

@rolfbjarne
Copy link
Member

In fact it looks like we've already implemented everything this issue talks about in the description, so I'm closing this.

@xfortin-devolutions
Copy link

Thanks @rolfbjarne ! I'll look into the preview version in the coming weeks. Do you know when those changes will be in a stable version?

@rolfbjarne
Copy link
Member

Thanks @rolfbjarne ! I'll look into the preview version in the coming weeks. Do you know when those changes will be in a stable version?

The changes should already be in the stable version of Xamarin.Mac, they're just considered a preview.

@xfortin-devolutions
Copy link

Ah, good to know, thanks again.

@ivanicin
Copy link

ivanicin commented Jun 14, 2021

Unfortunately this is case of different people talking about different things. This paragraph is referring to .NET 5's existing macOS support (without Xamarin, just a plain .NET command line executable for instance): you can't create an .app with .NET 5 this way and publish it to the app store. And neither is it a goal for us to make this possible in .NET 6 (so the App Store's requirement to create universal binaries doesn't really apply, because you can't publish to the App Store this way anyway).

@rolfbjarne first I appreciate your explanation and I am also very happy to hear that this support is coming.

However there are some things in this one cannot be happy about, though after your comment I must stress those are not major things:

  1. This article that I have quoted was the only article mentioning Universal binaries and Xamarin.Mac in existence. There should have been by now something on this topic somewhere. But there is nothing, not even on the github. I have no insider information so I can know only what is published.
  2. As the only article written on this topic it is confusing at the best. Reading it again I still come to the same conclusion, but I'll trust you that possibly there are some hints somewhere in it from which one can understand the different scope of that statement. However there is no doubt that such statement was put in a text that addresses topics like Xamarin.Mac and MAUI without some clear distinction that it doesn't have any connection with those parts of text.

@rolfbjarne
Copy link
Member

@ivanicin

However there are some things in this one cannot be happy about, though after your comment I must stress those are not major things:

I hear you, and I agree our outward communication can get much better.

I don't think I'll be able to change the existing blogpost, but I'll take this up internally for future blogposts (and any other documentation we write).

@xfortin-devolutions
Copy link

@rolfbjarne Well, if I can suggest something, in this case, it would have been nice for the github ticket(s) to be updated accordingly. I would have started working on it sooner had I known it was already (although as a preview) available. I'm following those tickets for this reason, but it is not as reliable a method as I would have hoped.

@xamarin xamarin locked as resolved and limited conversation to collaborators Apr 29, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
enhancement The issue or pull request is an enhancement iOS Issues affecting Xamarin.iOS macOS Issues affecting Xamarin.Mac
Projects
None yet
Development

No branches or pull requests

7 participants