Closed queequac closed 3 years ago
This isn't complete yet, but this is being worked on here: https://github.com/xamarin/xamarin-android/pull/5539
Is that one related to dotnet's upcoming Native-AoT? (Formerly known as CoreRT, committed for dotnet 6 and developed in https://github.com/dotnet/runtimelab/tree/feature/NativeAOT) Not sure about this after reading through the referenced item, since it mentions MonoAOT and comparable several times.🤔
I think this will be based on Mono's AOT -- specific for iOS and Android.
I see, thanks for the clarification. Is there some documenttion or additional material? Would be interesting to have a comparison of both AOT approaches... and why iOS and Android won't make use of the same native AOT compiler that will ship with .NET6+.
iOS and Android will use the Mono runtime instead of CoreCLR, and so that is why they would also use the Mono AOT compiler.
I don't know when CoreCLR would be able to run on iOS or Android -- or if that will even happen at all.
If there are docs, you might check the dotnet/runtime repo, one I found:
I see, thanks for pointing this out.
To be honest, I was hoping for "CoreRT" (now called NativeAOT for dotnet6 and not relying on CoreCLR), which is really rocking fast, especially wrt to cold start. But of course it would lack all native bindings for Android, which could be one of the most costly parts when trying to bring this to Android.
Mono aot is slow at both startup speed and runtime performance, really hope that MAUI can make use of NativeAOT (previously named CoreRT) instead of mono aot in the future.
Native-AoT? (Formerly known as CoreRT, committed for dotnet 6
I don't think it's committed for anything; the project lists it as an an "experimental fork".
.NET 6 mobile (née Xamarin) still uses Mono's runtime (albeit now with .NET 6's BCL instead of Mono's).
iOS has had AOT in .NET 6 for a while, because it is required for devices.
We just landed Android AOT, which should ship in .NET 6 Preview 7: https://github.com/xamarin/xamarin-android/pull/5539
You use the <RunAOTCompilation>true</RunAOTCompilation>
for a Release
build to try it out. This enables the <MonoAOTCompiler/>
MSBuild task.
I think that solves the original question? Closing, thanks.
The original question was about NativeAOT (was CoreRT), which is vastly better than Android AOT. NativeAOT is full AOT solution that massively reduces the deployment size. Andorid AOT makes your deployment bigger.
I think the answer however is no because in NativeAOT is an experiment and is not support on arm yet let alone Android. And Maui still uses the mono runtime even in .Net 6
Could not find any reference or statement, but will Xamarin for .NET 6 support Native-AOT?