Skip to content

.NET 10 Preview Release Notes #9571

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

Closed
jpobst opened this issue Dec 2, 2024 · 0 comments
Closed

.NET 10 Preview Release Notes #9571

jpobst opened this issue Dec 2, 2024 · 0 comments

Comments

@jpobst
Copy link
Contributor

jpobst commented Dec 2, 2024

Welcome to .NET for Android 10!

These release notes are intended to call out interesting user-facing enhancements and changes as we build the next version of .NET for Android.

Note

The intention of previews is to try out changes and get feedback, so these changes could be altered or removed before the final .NET 10 release in November 2025.

Please file any feedback about these features as issues in this repository.

.NET 10 Preview 3 - Unreleased

Android 16 (Baklava) Beta 3 Bindings (#9914)

(PR #9814, Commit d5152b6a)

Google has released Beta 3 of the Android 16 (API-36) SDK. Although technically still a "preview", the ABIs have been declared "stable" and thus we have completed our bindings and updated net10.0-android to target net10.0-android36.0. Google's "final" release of Android 16 is expected this summer.

API-36 is now the default, which means that when $(TargetFramework) is net10.0-android, API-36 will be used.

This will cause issues when using Visual Studio and Visual Studio Code with .NET 10, as Visual Studio and Visual Studio Code do not yet know about API-36, which will trigger an error XA5207.

To fix this, you will need to manually install the API-36 platform.jar into your Android SDK directory, or wait for a forthcoming update to Visual Studio.

Improve the performance of the RtxtParser (#9839)

The following table shows the improvements for 10000 items. We have to use a large number to
see the improvements. Note that the default Maui template has about 7000 entries in the R.txt file.
So this is not an unreasonable test size.

Method Mean Error StdDev Gen0 Gen1 Gen2 Allocated
RtxtParserBaseLine 53.40 ms 0.315 ms 0.246 ms 7500.0000 3000.0000 300.0000 67.32 MB
RtxtParser 48.58 ms 0.192 ms 0.179 ms 7454.5455 2454.5455 272.7273 60.44 MB

Bump com.android.tools.build:manifest-merger from 31.8.1 to 31.9.0 (#9866)

Bump NDK to r28 (#9467)

Build system performance improvements and cleanup: [XABT] Scan for JLO needed wrappers in LinkAssembliesNoShrink. (#9893)

External contributor! Update jit-times to use a single long instead of (long, int, int) (#9484)

Mono.Android.dll

Lots of implementation changes to Mono.Android.dll which we hope won't impact apps.

Please let us know if we're wrong.

Fix Debugger timeout on 32 bit devices. (#9869)

fix .resx files in apps (#9905)

Refactor manifest merging and ACW map generation out of GenerateJavaStubs. (#9827)

Don't run _LinkAssembliesNoShrink when $(PublishTrimmed) = true (#9887)

New error APT2265 for invalid Asset Path (#9809)

Improved .NET Aspire support

$(HttpActivityPropagationSupport)=false in "Release"
(PR #9933, Commit ba631530)

$(MetricsSupport)=false in "Release"
(PR #9928, Commit 8a1acdd4)

These should help improve .NET Aspire use in "Debug" configuration builds.

.NET 10 Preview 2 - Released Mar 18, 2025

Full GitHub release notes

Android 16 (Baklava) Beta 2 Bindings (#9814)

Google has released Beta 2 of the Android 16 (API-36) SDK. Support has been adding for using these preview APIs.

To target the Android 16 preview API:

  • Use the Android SDK Manager to download the Android 16 (Baklava) Platform
  • Update your project's TargetFramework to net10.0-android36

.NET 10 Preview 1 - Released Feb 25, 2025

Full GitHub release notes

Android 16 (Baklava) Beta 1 Bindings (#9707)

Google has released Beta 1 of the Android 16 (API-36) SDK. Support has been adding for using these preview APIs.

To target the Android 16 preview API:

  • Use the Android SDK Manager to download the Android 16 (Baklava) Platform
  • Update your project's TargetFramework to net10.0-android36

Update Recommended Minimum Supported Android API (#9656)

The .NET for Android project templates have been updated to specify 24 ("Nougat") as the default $(SupportedOSPlatformVersion) instead of 21 ("Lollipop"). This prevents users from hitting "desugaring" runtime crashes when using Java default interface methods.

While API-21 is still supported in .NET 10, it is recommended to update existing projects to API-24 to avoid unexpected runtime errors.

Support for dotnet run (#9470)

Previously we could not support dotnet run for .NET for Android projects because it did not accept parameters needed to specify which Android device or emulator to use.

Now that the .NET SDK team has added this support, .NET for Android projects can be run using dotnet run:

// Run on the only attached Android physical device
dotnet run -p:AdbTarget=-d

// Run on the only running Android emulator
dotnet run -p:AdbTarget=-e

// Run on the specified Android physical device or emulator
dotnet run -p:AdbTarget="-s emulator-5554"

The AdbTarget property is passed to adb. Its specification is documented here.

Enable Marshal Methods by Default (#9551)

A new way of creating the marshal methods needed for Java calling into C# code promises to provide startup performance improvements. Unfortunately, we weren't able to get them stabilized in time for .NET 9 and thus .NET 9 shipped with them off by default.

For .NET 10 previews we have re-enabled them by default to continue testing and getting feedback. Problems with these marshal methods often manifest as a hang at startup. If you are getting a hang on startup on .NET 10 previews that you didn't see on .NET 9, try disabling marshal methods. If this fixes the hang, please file an issue letting us know there are still issues with marshal methods.

<AndroidEnableMarshalMethods>false</AndroidEnableMarshalMethods>

Add ArtifactFilename metadata for @(AndroidMavenLibrary) item (#9479)

@(AndroidMavenLibrary) was added in .NET 9 and allows a Java library to be automatically downloaded from Maven to be bound. Generally this library is named {artifact.Id}-{artifact.Version}.[jar|aar], however we later found out it does not follow a standard and could be arbitrarily different.

Add the ArtifactFilename metadata to @(AndroidMavenLibrary) to allow an alternative file name:

<AndroidMavenLibrary Include="com.facebook.react:react-android" Version="0.76.0" ArtifactFilename="react-android-0.76.0-release.aar" />

Visual Studio Design-Time Builds no longer invoke aapt2 (#9700)

In order to speed up Design-Time Builds, aapt2 is no longer invoked; instead, the .aar files and underlying Android resources are parsed directly . This reduces the time of a Design-Time Build for some of our unit tests from over 2s to under 600ms.

Building with JDK-21 is now supported (#9672)

.NET for Android projects can now be built with JDK-21.

generator output now avoids potential System.Reflection.Emit usage (dotnet/java-interop#1275)

Help optimize app startup and overall performance by removing codepaths that may hit System.Reflection.Emit from "Java calling into C#" codepaths.

Fix InvalidCastException when using ApplicationAttribute.ManageSpaceActivity (#9708)

Trying to set the ApplicationAttribute.ManageSpaceActivity property would result in an XAGJS7007 error. This has been fixed.

Use System.IO.Compression for .apk creation (#9623)

Historically, dotnet/android-libzipsharp was used to process ZIP archives and create .aab and .apk files.

For command-line dotnet build invocations, we now use System.IO.Compression.ZipArchive to create .aab and .apk files. This should result in faster build times.

Builds from within Visual Studio continue to use dotnet/android-libzipsharp, as the .NET Framework version of System.IO.Compression cannot be used.

@jpobst jpobst pinned this issue Dec 2, 2024
@dotnet-policy-service dotnet-policy-service bot added the needs-triage Issues that need to be assigned. label Dec 2, 2024
@jpobst jpobst removed the needs-triage Issues that need to be assigned. label Dec 2, 2024
@dotnet dotnet locked and limited conversation to collaborators Dec 2, 2024
@jpobst jpobst closed this as completed Dec 2, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant