.NET 11 Preview 3, Android 36.99.0-preview.3.10
Pre-releaseThis release is not yet available from the Visual Studio installer. Download the .NET 11 Preview 3 SDK, followed by:
> dotnet workload install android
...
Successfully installed workload(s) android.
To verify installation:
> dotnet workload list
Installed Workload Id Manifest Version Installation Source
--------------------------------------------------------------------------------------------
android 36.99.0-preview.3.10/11.0.100-preview.3 SDK 11.0.100-preview.3
Android 17 / API 37 Preview Support
We’re grateful to the Uno Platform team for their deep collaboration with the .NET MAUI team in preparation for .NET 11 Preview 3. Their contributions helped ensure .NET for Android is aligned with Google’s latest platform updates, enabling developers to take advantage of Android 17 previews and API 37 right away. This kind of partnership strengthens the .NET ecosystem and reflects our shared commitment to delivering high-quality, cross-platform developer experiences.
To opt into API-37, you can change your .csproj to:
<PropertyGroup>
<TargetFramework>net11.0-android37</TargetFramework>
<EnablePreviewFeatures>true</EnablePreviewFeatures>
</PropertyGroup>To install API-37 in Visual Studio's SDK manager, you can use Tools > Android > Android SDK Manager > Repository > Full List:
Note
By default the SDK manager will install to C:\Program Files (x86)\Android\android-sdk\platforms\android-37.0, which will not be automatically located by .NET for Android. Temporarily renamed the folder to C:\Program Files (x86)\Android\android-sdk\platforms\android-37, while we address this in a future release.
See our API-37 HPKE Encryption Sample for a full example on calling new APIs available in Android 17.
What's Changed
- $(AndroidPackVersionSuffix)=preview.3; main is .NET 11 preview 3 by @jonathanpeppers in #10840
- Remove UseLatestAndroidPlatformSdk by @Copilot in #10839
- [TrimmableTypeMap] Scanner unit tests by @simonrozsival in #10813
- Replace [DllImport] with [LibraryImport] for runtime P/Invokes by @Copilot in #10763
- Fix XA3006: Sanitize whitespace-only parameter names in marshal methods LLVM IR generation by @Copilot in #10835
- Fix net.android.init.gradle.kts for Gradle 9.x compatibility by @Copilot in #10738
- Fix _TouchAndroidLinkFlag skipping on NativeAOT incremental builds by @sbomer in #10849
- Fix emulator readiness check for package manager service by @Copilot in #10846
- Support for exempting native libraries from JNI preload by @grendello in #10787
- Default .NET 11 to target net11.0-android36.1 only by @jonathanpeppers in #10829
- [Mono.Android] Bind API-CinnamonBun Beta 1 by @jonpryor in #10824
- [dotnet run]
ComputeAvailableDeviceslists available emulators and auto-boot on deploy by @jonathanpeppers in #10826 - [skills] create
read-assembly-storeskill by @jonathanpeppers in #10867 - [Mono.Android] Bind API-CinnamonBun Beta 2 by @jonpryor in #10866
- Fix AndroidDeviceUserId not passed to
am starton debug/run by @Copilot in #10861 - [build] Ignore MAUI public API analyzer errors (RS0016) in MAUI integration lane by @jonathanpeppers in #10884
- [skills] Add AZDO build investigator skill by @jonathanpeppers in #10885
- Fix typos and documentation wording from PR #10879 review by @Copilot in #10881
- [build-tools] Fix CI download failures, upgrade xa-prep-tasks and BootstrapTasks to net10.0 by @jonathanpeppers in #10886
- uses-feature.version should be settable according to android documentation by @Happypig375 in #10890
- Add TaskFactory="TaskHostFactory" Runtime="NET" to xa-prep-tasks and BootstrapTasks UsingTask elements by @Copilot in #10893
- Use JDK 21 instead of 11 by @Happypig375 in #10897
- Bump to google/bundletool/1.18.3 by @jonathanpeppers in #10892
- [tests] Clear ResolvedCodeAnalysisRuleSet to fix CoreCompile incrementality on CI by @jonathanpeppers in #10900
- [docs] Sync Documentation/docs-mobile with dotnet/docs-mobile by @jonathanpeppers in #10907
- [TrimmableTypeMap] Integration parity tests by @simonrozsival in #10827
- [TrimmableTypeMap] Add TypeMap proxy groundwork with CreateInstance by @simonrozsival in #10808
- Use shared AdbRunner from android-tools for device listing by @rmarinho in #10916
- [skills] Add android-reviewer skill for PR code reviews by @jonathanpeppers in #10918
- Add *.gdn.sarif to .gitignore by @Copilot in #10926
- [TrimmableTypeMap] Add UCO wrappers, JCW generator, and JNI signature helpers by @simonrozsival in #10917
- android-reviewer: @copilot prefix for Copilot-authored PRs by @simonrozsival in #10930
- Ignore submodules in fail-on-dirty-tree CI check by @Copilot in #10927
- Fix GC live lock issue in rapid UI switching by @Copilot in #10856
- Remove checked-in test.keystore and generate it dynamically during tests by @Copilot in #10923
- [xabt] Validate CustomJniInitFunctions names are valid C identifiers by @jonathanpeppers in #10935
- Fix flaky HttpListener tests by using dynamic port allocation by @Copilot in #10939
- Skip incremental build timing assertions for NativeAOT by @Copilot in #10937
- [xabt] Filter non-Android .so files from _ResolvedNativeLibraries by @jonathanpeppers in #10936
- Add HasMetadata checks to all PEReader code paths to handle native Windows DLLs by @Copilot in #10938
- Move StripEmbeddedLibraries to MSBuild task by @sbomer in #10894
- [build] Scope BinSkim scanning to build output only by @jonathanpeppers in #10940
- [tests] Treat IOException as transient network error in DownloadedCache by @jonathanpeppers in #10951
- [TrimmableTypeMap] Normalize dots to slashes in [Register] attribute JNI names by @simonrozsival in #10947
- [tests] run
Java.Interop-Testson NativeAOT by @jonathanpeppers in #10496 - Bump com.android.tools.build:manifest-merger from 31.12.2 to 31.13.0 in /src/manifestmerger by @dependabot[bot] in #10466
- [TrimmableTypeMap] Detect overrides and constructors in JavaPeerScanner by @simonrozsival in #10932
- [build] Fix BinSkim
analyzeTargetGlobpattern by @jonathanpeppers in #10953 - Bump com.android.tools.build:manifest-merger from 31.13.0 to 32.1.0 in /src/manifestmerger by @dependabot[bot] in #10955
- [TrimmableTypeMap] Skip registerNatives for Application/Instrumentation types by @simonrozsival in #10957
- Update documentation to reflect .aab fast deployment support by @Copilot in #10963
- Ignore transient IO errors in on-device HTTP client handler tests by @Copilot in #10962
- [build] Fix BinSkim failure in 'Convert NuGet to MSI' job by @jonathanpeppers in #10961
- [build] Revert BinSkim analyzeTargetGlob customization by @jonathanpeppers in #10964
- [TrimmableTypeMap] Add GenerateTrimmableTypeMap MSBuild task and targets by @simonrozsival in #10924
- Backport
dotnet-watchchanges to main/.NET 11 by @jonathanpeppers in #10960 - [Mono.Android] Fix UnhandledExceptionRaiser not firing in .NET 10 by @jonathanpeppers in #10966
- [xaprepare] Retry runtime pack restore up to 3 times by @jonathanpeppers in #10970
- Bump Android emulator from 32.1.9 to 36.4.10 by @rmarinho in #10971
- Bump
$(AndroidPackVersion)to 36.99.0 by @jonathanpeppers in #10976 - Update copilot-instructions.md with learnings from recent PRs by @rmarinho in #10974
- [TrimmableTypeMap] Generate per-assembly acw-map.txt from scanner results by @simonrozsival in #10959
New Contributors
- @Happypig375 made their first contribution in #10890
Full Changelog: 36.1.99-preview.2.154...36.99.0-preview.3.10