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

.NET 10 Preview Release Notes #9571

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 user-facing enhancements and changes as we build the next version of .NET for Android.

Note that this document is being built as we commit changes, so it will contain information about previews that may not have been released yet. Also note that the intention of previews is to try out changes and get feedback, so these changes could be removed before the final .NET 10 release.

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

.NET 10 Preview 1 - Unreleased

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.

.NET 10 Preview 2 - Unreleased

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