Releases: dotnet/android
.NET 10 Servicing, Android 36.1.69
The latest .NET MAUI component is available in Visual Studio 2026 or higher:
You can also download the .NET 10 SDK directly, followed by:
> dotnet workload install android --version 10.0.301.1
...
Successfully installed workload(s) android.
To verify installation:
> dotnet workload list
Installed Workload Id Manifest Version Installation Source
--------------------------------------------------------------------------------------------
android 36.1.69/10.0.100 SDK 10.0.100
What's Changed
- [release/10.0.1xx] [tests] Add regression test for global ref leak in LayoutInflater.Inflate by @jonathanpeppers in #11134
- [release/10.0.1xx] [xabt] Fix wrong-TFM assembly loading -> empty
.jlo.xmlfiles by @jonathanpeppers in #11248 - [release/10.0.1xx] Emit NETSDK1202 EOL warning for net9.0-android projects by @jonathanpeppers in #11349
Full Changelog: 36.1.53...36.1.69
.NET 11 Preview 5, Android 36.99.0-preview.5.308
This release is not yet available from the Visual Studio installer. Download the .NET 11 Preview 5 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.5.308/11.0.100-preview.5 SDK 11.0.100-preview.5
TLDR
.NET for Android stabilizes API 37
.NET for Android graduates API 37 / Android 17 from preview to Stable and defaults .NET 11 projects to target net11.0-android37 only (dotnet/android #11151, dotnet/android #11254). You no longer need EnablePreviewFeatures to consume Android 17 APIs.
🚨 Minimum API level unified to 24
.NET for Android now uses a single minimum supported API level — API 24 (Android 7.0) — across all runtimes (Mono, CoreCLR, and NativeAOT) (dotnet/android #11331). Previously the floor differed by runtime; consolidating on API 24 simplifies the support matrix and lets the workload drop conditional code paths for older versions. Existing projects with SupportedOSPlatformVersion lower than 24.0 should bump it before upgrading to .NET 11.
What's Changed
- $(AndroidPackVersionSuffix)=preview.5; main is .NET 11 preview 5 by @jonathanpeppers in #11222
- Bump com.android.tools.build:manifest-merger from 32.1.1 to 32.2.0 in /src/manifestmerger by @dependabot[bot] in #11217
- [TrimmableTypeMap] Add CoreCLRTrimmable Mono.Android.NET-Tests lane by @simonrozsival in #11091
- [xabt] Validate extracted zip entry paths in
ExtractJarsFromAarby @jonathanpeppers in #11212 - Remove
$(AndroidGenerateJniMarshalMethods)support by @jonathanpeppers in #11135 - [XABT] Remove
RunCheckedBuild/_AndroidJLOCheckedBuildinfrastructure by @jonathanpeppers in #11228 - Delete obsolete Documentation/workflow/HowToBumpMono.md by @jonathanpeppers in #11236
- [Hot Reload] Parameterize DotNetWatchHotReload test and remove Mono STARTUP_HOOKS workaround by @jonathanpeppers in #11240
- Fix JavaList.Remove() always-false guard condition (
&&->||) by @jonathanpeppers in #11237 - Error when Mono-specific AOT settings are enabled with CoreCLR by @Copilot in #11246
- [Mono.Android] Enumify API-37.0, API-37.0 is "Stable" by @jonpryor in #11151
- [CoreCLR] Exclude diagnostic libraries from release APKs by @simonrozsival in #11245
- [TrimmableTypeMap] JavaCast/JavaAs + container support by @simonrozsival in #11225
- [NativeAOT] Take over native linker invocation from ILC targets by @sbomer in #11148
- [tests] Skip PerformanceTest on slow CI machines using evaluation time by @jonathanpeppers in #11249
- [build] Remove WearOS emulator CI lane by @jonathanpeppers in #11257
- Add
.lscacheto .gitignore by @jonathanpeppers in #11253 - [NativeAOT] Decouple ILC from ILLink for trimmable type map path by @sbomer in #11183
- [NativeAOT] Add GenerateNativeAotBootstrapSources task by @sbomer in #11255
- Split android-reviewer review-rules.md into conditional rule files by @jonathanpeppers in #11266
- [xabt] Use Load() in RunPipeline instead of pre-loading all assemblies by @jonathanpeppers in #11250
- Bump external/xamarin-android-tools and fix NRT warnings by @jonathanpeppers in #11247
- [TrimmableTypeMap] Fix app initialization and startup by @simonrozsival in #11252
- [tests] Root StartupHook test assembly directly by @simonrozsival in #11280
- [build] Audit xaprepare third-party notices by @jonathanpeppers in #11267
- Remove XA1024 warning for
.configfiles by @Copilot in #11263 - [NativeAOT] Fix incremental build test with trimmable type map by @sbomer in #11283
- [TrimmableTypeMap] Reject open generic JNI construction by @simonrozsival in #11273
- Fix NonShipping casing for Xamarin.Android.Tools.AndroidSdk package by @jonathanpeppers in #11281
- Attempt to fix
dotnet restorehang during prepare step by @jonathanpeppers in #11282 - [build] Replace TPN generation with checked-in file + skill by @jonathanpeppers in #11284
- [tests] Mark ProxyTest as Inconclusive on network failure by @jonathanpeppers in #11288
- [TrimmableTypeMap] Improve array handling by @simonrozsival in #11238
- [build] Default .NET 11 to target
net11.0-android37only by @jonathanpeppers in #11254 - [TrimmableTypeMap] Keep array rank anchors private by @simonrozsival in #11297
- [NativeAOT] Use NativeLinker and invoke lld directly for linking by @sbomer in #11256
- [ci] Apply MAUI Android 37 patch by @simonrozsival in #11302
- [xaprepare] Remove NuGet scanning from Step_GenerateCGManifest by @jonathanpeppers in #11299
- Revert "[ci] Apply dotnet/maui Android 37 patch (#11302)" by @jonathanpeppers in #11309
- Fix dotnet restore hang in Step_InstallDotNetPreview by @jonathanpeppers in #11310
- [TrimmableTypeMap] Use trimmable Java proxy runtime sources by @simonrozsival in #11271
- [xaprepare] Remove dead Step_DetermineAzurePipelinesTestJobs by @jonathanpeppers in #11308
- [tests] Add DotNetRunCtrlC integration test by @jonathanpeppers in #11293
- Add EnableOnBackInvokedCallback property to ApplicationAttribute by @Copilot in #11307
- [TrimmableTypeMap] Enable JNI replacement APIs by @simonrozsival in #11270
- Bump com.android.tools.build:manifest-merger from 32.2.0 to 32.2.1 in /src/manifestmerger by @dependabot[bot] in #11315
- [TrimmableTypeMap] Compute generated IL maxstack by @simonrozsival in #11260
- [xaprepare] Remove desktop Mono provisioning and dead Mono-related code by @jonathanpeppers in #11324
- Bump to DevDiv/android-platform-support/main@120fcc4a by @jonathanpeppers in #11325
- [build] Replace custom
<DownloadUri/>task with built-in<DownloadFile/>by @jonathanpeppers in #11330 - [TrimmableTypeMap] Fix UCO constructor activation by @simonrozsival in #11275
- Skip ILC LinkNative target for NativeAOT, remove llvm-ar dependency by @sbomer in #11329
- [TrimmableTypeMap] Use separate trimmable Java.Interop test jar by @simonrozsival in #11336
- [Diagnostics] Enable .NET Runtime crash reporting before signal chaining by @Copilot in #11291
- [TrimmableTypeMap] Use Crc64 package naming by default with LowercaseCrc64 compatibility by @Copilot in #11193
- [TrimmableTypeMap] Add trimmable typemap runtime coverage tests by @simonrozsival in #11337
- [NativeAOT] Enable workload-provided linker for NDK-free builds by @sbomer in #11303
- [build] Replace
Step_InstallGNUBinutilswith MSBuild targets by @jonathanpeppers in #11332 - Remove unnecessary Task.Run from androidtest template by @jonathanpeppers in #11339
- [TrimmableTypeMap] Refuse [JniAddNativeMethodRegistrationAttribute] with XA4251 by @simonrozsival in #11274
- Add XML documentation to
JValuestruct by @Copilot in #11354 - Add missing XML documentation to AndroidMessageHandler public properties by @Copilot in #11360
- [tests] Set xamarin_manifest_needs_updating to false for API 37 by @sbomer in #11367
- Add XML documentation to
AndroidBitmapInfostruct by @Copilot in #11362 - Add XML documentation to
Android.Security.KeyChainpublic methods by @Copilot in #11364 - Bump
7-Zip.CommandLinefrom 18.1.0 ...
.NET 11 Preview 4, Android 36.99.0-preview.4.137
This release is not yet available from the Visual Studio installer. Download the .NET 11 Preview 4 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.4.137/11.0.100-preview.4 SDK 11.0.100-preview.4
What's Changed
- $(AndroidPackVersionSuffix)=preview.4; main is .NET 11 preview 4 by @jonathanpeppers in #10984
- Use shared EmulatorRunner from android-tools for BootAndroidEmulator by @rmarinho in #10949
- Bump com.android.tools:r8 from 9.0.32 to 9.1.31 in /src/r8 by @dependabot[bot] in #10992
- Move
AddKeepAlivestrimmer step to post-trimming task by @sbomer in #10952 - Fix
dotnet runfailing with multiple AVDs present by @rmarinho in #11001 - Root [Export] callback delegates to prevent GC on CoreCLR by @Copilot in #10997
- Track AndroidManifestOverlay changes in _ManifestMerger by @Redth in #11007
- [TrimmableTypeMap] Implement runtime TypeManager, ValueManager, and JavaConvert by @simonrozsival in #10967
- [TrimmableTypeMap] Emit direct RegisterNatives with UTF-8 RVA data by @simonrozsival in #10988
- [TrimmableTypeMap] Add ManifestGenerator by @simonrozsival in #10991
- [TrimmableTypeMap] Use JniNativeMethod for RegisterNatives bootstrap by @simonrozsival in #11002
- [TrimmableTypeMap] Fix JniNameToJavaName by @simonrozsival in #11032
- [TrimmableTypeMap] Fix NativeCallbackName and DeclaringType derivation from Connector by @simonrozsival in #11033
- Add "tests" Copilot skill with test discovery and source-to-test mapping by @simonrozsival in #11014
- [build] Add
build-summarystage toXamarin.Android-PRpipeline by @jonathanpeppers in #10982 - Move CheckForObsoletePreserveAttribute into PostTrimmingPipeline by @Copilot in #11009
- Fix emulator boot and deploy flow for
dotnet runby @rmarinho in #10969 - Add ci-status Copilot skill for PR build investigation by @simonrozsival in #11024
- Move
RemoveResourceDesignertrimmer step to post-trim pipeline by @sbomer in #10977 - Enable more tests to run on all 3 runtimes, part 13 by @grendello in #10635
- [Mono.Android] Bind API-37 Beta 3 by @jonpryor in #11038
- [build] Cache Gradle downloads between CI runs by @jonathanpeppers in #10986
- Handle transient ConnectException globally in on-device HTTP tests by @Copilot in #11057
- [TrimmableTypeMap] Assembly-level manifest attribute scanning by @simonrozsival in #11035
- [TrimmableTypeMap] Fix thread safety in TrimmableTypeMap.Initialize by @Copilot in #11049
- Move FixAbstractMethodsStep out of ILLink process by @sbomer in #11029
- [TrimmableTypeMap] Extract TrimmableTypeMapGenerator from MSBuild task by @simonrozsival in #11034
- Remove obsolete
RemoveAttributesBasefromMicrosoft.Android.Sdk.ILLinkby @Copilot in #11061 - [TrimmableTypeMap] Fix [Export] JNI signature mapping for non-primitive parameter types by @Copilot in #11051
- [TrimmableTypeMap] Fix manifest builder gaps: SupportsGLTexture, UsesPermissionFlags, RoundIcon, dedup by @simonrozsival in #11044
- [Tests] Bump default AGP to 9.1.0 for compileSdk 36 compatibility by @simonrozsival in #11043
- Update nullable review rule to check project-level setting by @jonathanpeppers in #11073
- Move RemoveResourceDesignerStep out of ILLink process by @sbomer in #11039
- [skills] Improve android-reviewer skill based on eval findings by @jonathanpeppers in #11075
- [TrimmableTypeMap] Build pipeline: targets, stubs, manifest integration, feature switches by @simonrozsival in #11036
- [TrimmableTypeMap] Add typed logger interface by @simonrozsival in #11095
- [TrimmableTypeMap] Pass TargetType and InvokerType through JavaPeerProxy constructor by @simonrozsival in #11092
- [TrimmableTypeMap] Fix UCO constructor activations by @simonrozsival in #11094
- [TrimmableTypeMap] Use proxy associations for managed -> JNI lookups by @simonrozsival in #11100
- Exclude satellite assemblies from _PostTrimmingPipeline by @sbomer in #11086
- [TrimmableTypeMap] Scanner and JCW edge-case fixes by @simonrozsival in #11096
- [TrimmableTypeMap] Runtime-only trimmable typemap support by @simonrozsival in #11090
- [TrimmableTypeMap] Root AndroidManifest-referenced types by @simonrozsival in #11037
- Remove duplicate @ prefix from issueAuthor in GitOps by @akoeplinger in #11082
- Fix API 37 platform directory name: android-37 to android-37.0 by @jonathanpeppers in #11072
- [TrimmableTypeMap] Add GetStaticMethodFallbackTypesCore override for desugared default interface methods by @Copilot in #11050
- Move FixLegacyResourceDesignerStep to post-trim pipeline by @sbomer in #11059
- [TrimmableTypeMap] Propagate deferred registerNatives to base classes by @simonrozsival in #11105
- Remove broken 'Windows > Tests > Debugging' CI lane by @jonathanpeppers in #11109
- Use Assert.Inconclusive for emulator acquisition failures by @jonathanpeppers in #11110
- [dotnet test] Add
androidtestproject template anddotnet runinstrumentation support by @jonathanpeppers in #10862 - Remove unused HashSet allocations in HashJavaNames by @jonathanpeppers in #11124
- Document AndroidInstrumentation and EnableMSTestRunner build properties by @Copilot in #11129
- Remove experimental
AndroidGenerateJniMarshalMethodsfeature by @jonathanpeppers in #11128 - [Mono.Android] fix global ref leak in TypeManager.Activate by @jonathanpeppers in #11112
- Avoid O(n²) array growth in GenerateTypeMappings by @jonathanpeppers in #11127
- [TrimmableTypeMap] Fix IL1034 by excluding app assembly from trimmer roots by @simonrozsival in #11144
- Port TypeMapObjectsXmlFile.Import to XmlReader streaming by @jonathanpeppers in #11126
- Compute Java name hashes on demand instead of pre-computing both by @jonathanpeppers in #11132
- Add investigation & debugging practices to copilot-instructions by @simonrozsival in #11141
- [copilot] Add /review agentic workflow and update android-reviewer skill by @jonathanpeppers in #11149
- [copilot] Use Claude Opus 4.6 for android-reviewer workflow by @jonathanpeppers in #11150
- Set
min-integrity: noneon /review workflow by @jonathanpeppers in #11152 - Use stackalloc in TypeMapHelper to reduce allocations by @jonathanpeppers in #11133
- [ci] Only run dnceng-public pipeline for fork PRs by @jonathanpeppers in #11153
- Guard Mono-specific AOT targets for CoreCLR runtime, add XA1042 warning by @Copilot in #11070
- Run FixLegacyResourceDesigner before trimming by @sbomer in #11084
- [TrimmableTypeMap] Manifest generator fixes by @simonrozsival in #11143
- [TrimmableTypeMap] Package CoreCLR preserve list in SDK pack by @simonrozsival in #11142
- [TrimmableTypeMap] Runtime and typemap generator fixes by @simonrozsival in #11145
- Add network allowlist to android-reviewer workflow by @jonathanpeppers in #11164
- Bump com.android.tools.build:manifest-merger from 32.1.0 to 32.1.1 in /src/manifestmerger by @dependabot[bot] in https://github.com/dotnet/a...
.NET 11 Preview 3, Android 36.99.0-preview.3.10
This 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 https://github.com/dotnet/andr...
.NET 10 Servicing, Android 36.1.53
The latest .NET MAUI component is available in Visual Studio 2026 or higher:
You can also download the .NET 10 SDK directly, followed by:
> dotnet workload install android --version 10.0.202
...
Successfully installed workload(s) android.
To verify installation:
> dotnet workload list
Installed Workload Id Manifest Version Installation Source
--------------------------------------------------------------------------------------------
android 36.1.53/10.0.100 SDK 10.0.100
What's Changed
- [xabt] support
@(RuntimeEnvironmentVariable)items by @jonathanpeppers in #10770 - [release/10.0.1xx] Support for exempting native libraries from JNI preload by @grendello in #10879
- [Mono.Android] Fix UnhandledExceptionRaiser not firing in .NET 10 by @jonathanpeppers in #10966
- [xabt]
dotnet watchsupport, based on env vars by @jonathanpeppers in #10778
Full Changelog: 36.1.43...36.1.53
.NET 11 Preview 2, Android 36.1.99-preview.2.154
This release is not yet available from the Visual Studio installer. Download the .NET 11 Preview 2 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.1.99-preview.2.154/11.0.100-preview.2 SDK 11.0.100-preview.2
What's Changed
- $(AndroidPackVersionSuffix)=preview.2; main is .NET 11 preview 2 by @jonathanpeppers in #10725
- [tests] restore testing
net10.0-androidprojects in .NET 11 by @jonathanpeppers in #10729 - [tests] verify
36.1doesn't fallback to36by @jonathanpeppers in #10731 - [xabt] fix
$(AdbTarget)passed in by @jonathanpeppers in #10740 - [xabt] use a response file when calling
java r8.jarby @Copilot in #10716 - Add UseMonoRuntime condition to API levels 21, 22, 23 in SupportedPlatforms generator by @Copilot in #10753
- [Mono.Android] fix
$DOTNET_STARTUP_HOOKSon CoreCLR by @jonathanpeppers in #10755 - [tests] remove "flaky" MSBuild perf tests by @jonathanpeppers in #10756
- Fix MSB4096 error with user-defined TrimmerRootAssembly items lacking RootMode metadata by @Copilot in #10759
- [xaprepare] add
--dotnet-sdk-archiveswitch by @jonathanpeppers in #10769 - Unify LangVersion to "latest" across projects by @Copilot in #10766
- [marshal methods] Make AndroidEnvironmentInternal.UnhandledException public by @Copilot in #10775
- Bump com.android.tools:r8 from 8.13.19 to 9.0.32 in /src/r8 by @dependabot[bot] in #10780
- [native build] Use a single source of truth for NDK API levels by @grendello in #10754
- [TrimmableTypeMap] Extract typemap targets into dedicated files by @simonrozsival in #10797
- Fix NativeAOT to use AndroidLinkMode=Full instead of SdkOnly by @Copilot in #10809
- Migrate GenerateProguardConfiguration from ILLink step to MSBuild task by @sbomer in #10694
- [NativeAOT] Fix application linking with API level > 21 by @grendello in #10812
- [TrimmableTypeMap] Java peer scanner core by @simonrozsival in #10823
- [build] Use all available CPU cores for NUnit test parallelism by @jonathanpeppers in #10834
- [build] Add MSBuild + Emulator test stage to
dnceng-publicpipeline by @jonathanpeppers in #10828
Full Changelog: 36.1.99-preview.1.120...36.1.99-preview.2.154
.NET 10 Servicing, Android 36.1.43
The latest .NET MAUI component is available in Visual Studio 2026 or higher:
You can also download the .NET 10 SDK directly, followed by:
> dotnet workload install android --version 10.0.104
...
Successfully installed workload(s) android.
To verify installation:
> dotnet workload list
Installed Workload Id Manifest Version Installation Source
--------------------------------------------------------------------------------------------
android 36.1.43/10.0.100 SDK 10.0.100
What's Changed
- [Mono.Android] fix $DOTNET_STARTUP_HOOKS on CoreCLR by @jonathanpeppers in #10755
- [xabt] fix $(AdbTarget) passed in by @jonathanpeppers in #10740
- [NativeAOT] set environment variables before the app .so is loaded by @grendello in #10709
- [NativeAOT] set environment variables before the app .so is loaded by @jonathanpeppers in #10768
- [NativeAOT] fix Java string escaping and logging in environment variables support code by @copilot-swe-agent in #10771
- [Mono.Android] Ensure HttpContent stream rewinds on exceptions by @copilot-swe-agent in #10571
- [release/10.0.1xx] update to 10.0.4 runtime workloads by @jonathanpeppers in #10845
Full Changelog: 36.1.30...36.1.43
.NET 11 Preview 1, Android 36.1.99-preview.1.120
This release is not yet available from the Visual Studio installer. Download the .NET 11 Preview 1 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.1.99-preview.1.120/11.0.100-preview.1 SDK 11.0.100-preview.1
What's Changed
- $(AndroidPackVersionSuffix)=preview.1; main is 36.1.99 by @jonathanpeppers in #10512
- Remove ApplyPreserveAttribute, warn when PreserveAttribute is referenced in assembly by @jtschuster in #10449
- Remove obsolete System.AndroidPlatform methods and native implementations by @Copilot in #10385
- [Mono.Android] Enumify API-36.1 by @jonpryor in #10515
- Correctly handle file path that contains spaces by @hez2010 in #10537
- [xabt] pass in
$(SupportedOSPlatformVersion)to<Aapt2Link/>by @jonathanpeppers in #10538 - Fix JNI preload cache generation by @grendello in #10547
- [xabt] additional fixes for non-integer API levels by @jonathanpeppers in #10536
- [xabt] fix incremental design-time builds by @jonathanpeppers in #10564
- Add quickstart guide for Android memory dump by @fekberg in #10559
- [docs] improve "building" docs by @jonathanpeppers in #10478
- [nativeaot] Fix+improve gref logging by @grendello in #10572
- [Xamarin.Android.Build.Tasks] don't set
$(UseMonoRuntime)by default by @jonathanpeppers in #10527 - [build] fix broken incrementality of
Mono.Android.csprojby @jonathanpeppers in #10578 - Fix: Ensure HttpContent stream rewinds on exception to support retry scenarios by @Copilot in #10571
- [BootstrapTasks] add retry logic to
<StartAndroidEmulator/>by @jonathanpeppers in #10577 - [xabt] implement
$(Device)andComputeAvailableDevicesMSBuild target by @jonathanpeppers in #10576 - Enable more tests to run on all 3 runtimes, part 1 by @grendello in #10573
- Enable more tests to run on all 3 runtimes, part 2 by @grendello in #10580
- Enable more tests to run on all 3 runtimes, part 3 by @grendello in #10585
- Enable more tests to run on all 3 runtimes, part 4 by @grendello in #10591
- Enable more tests to run on all 3 runtimes, part 5 by @grendello in #10592
- Bump com.android.tools:r8 from 8.11.18 to 8.13.17 in /src/r8 by @dependabot[bot] in #10603
- [build] Relax 16k native library alignment checks by @grendello in #10608
- [tests] Add test for System.IO.Hashing 10.0.0 by @jonathanpeppers in #10614
- [build] use dotnet/maui/main for
MAUI Integrationlane by @jonathanpeppers in #10618 - Enable more tests to run on all 3 runtimes, part 7 by @grendello in #10598
- Enable more tests to run on all 3 runtimes, part 8 by @grendello in #10616
- Enable more tests to run on all 3 runtimes, part 9 by @grendello in #10619
- Enable more tests to run on all 3 runtimes, part 10 by @grendello in #10621
- [xabt] title case
ComputeAvailableDevicesby @jonathanpeppers in #10623 - [build] cache
FindNugetGlobalPackageFolder()to fix test timeouts by @jonathanpeppers in #10626 - [copilot] free up disk space by removing pre-installed Android SDK by @jonathanpeppers in #10629
- [xabt] Implement
DeployToDevicetarget by @jonathanpeppers in #10631 - Fix outdated contents in WorkloadDependencies.json by @Copilot in #10627
- Rename assembly stores in the APK/AAB archive to
libassembly-store.soby @grendello in #10638 - Enable more tests to run on all 3 runtimes, part 11 by @grendello in #10625
- Enable more tests to run on all 3 runtimes, part 12 by @grendello in #10632
- [xabt] fix
DeployToDevicetarget w/ Fast Deployment by @jonathanpeppers in #10641 - [xaprepare] increase
ProcessRunnertimeout by @jonathanpeppers in #10651 - [build] setup public pipeline on
dnceng-publicby @jonathanpeppers in #10636 - [Testing] Change the dotnet/maui repository branch to net11.0 by @simonrozsival in #10661
- [CoreCLR] Propagate unhandled exceptions by @simonrozsival in #10658
- [tests]
Assert.Inconclusive()tests with http errors by @jonathanpeppers in #10650 - [Xamarin.Android.Build.Tasks] Set UseMonoRuntime for Debug configuration by @simonrozsival in #10662
- [tests] skip
Windows > Tests > Debuggingif emulator fails to start by @jonathanpeppers in #10663 - [tests] ignore
nodename nor servname provided, or not knownby @jonathanpeppers in #10665 - [xabt]
ComputeRunArgumentstarget no longer needs to deploy by @jonathanpeppers in #10640 - [Microsoft.Android.Run] Add simple console app for
dotnet runby @jonathanpeppers in #10646 - Enable more tests to run on all 3 runtimes, part 14 by @grendello in #10644
- [tests] restore
SSLcategory by @jonathanpeppers in #10495 - [coreclr] fix string
runtimeconfig.jsonvalues by @jonathanpeppers in #10669 - [tests] ignore 404 on
AndroidMavenLibrary_AllDependenciesAreVerifiedby @jonathanpeppers in #10666 - [tests] improve assertions in
CancelRequestViaProxy()by @jonathanpeppers in #10671 - [illink] set
$(StartupHookSupport)=falseonly for Release mode by @jonathanpeppers in #10670 - Bump com.android.tools:r8 from 8.13.17 to 8.13.19 in /src/r8 by @dependabot[bot] in #10677
- [tests] remove
WebContentFileNameFromAzureby @jonathanpeppers in #10680 - [build]
net11.0target framework by @jonathanpeppers in #10664 - [build] Disable debug spew from the localizer by @grendello in #10673
- [Microsoft.Android.Run] target
$(DotNetStableTargetFramework)by @jonathanpeppers in #10692 - Add [Flags] to Android.Print.DuplexMode by @aberus in #10690
- Add PrinterCapabilitiesInfo color modes to methodmap by @aberus in #10689
- Migrate WarnOnPreserveAttribute from ILLink step to MSBuild task by @sbomer in #10693
- Add [Flags] to Android.Print.PrintColorMode by @aberus in #10688
- Remove referenceassemblies-pcl dependency from Arch and Fedora Linux by @Copilot in #10696
- [tests] ignore transient "Broken pipe" network errors by @jonathanpeppers in #10681
- [build] remove
$(TargetsCurrent)by @jonathanpeppers in #10698 - Enable more tests to run on all 3 runtimes, part 6 by @grendello in #10595
- [xabt]
GeneratePackageManagerJavaonly writes main assembly by @jonathanpeppers in #10710 - [NativeAOT] set environment variables before the app .so is loaded by @grendello in #10709
- [build] fix
MAUI integrationlane by @jonathanpeppers in #10712 - [tests] add test for package-less
[Register("CustomView"]by @Copilot in #10717
New Contributors
- @jtschuster made their first contribution in #10449
- @hez2010 made their first contribution in #10537
- @fekberg made their first contribution in #10559
- @aberus made their first contribution in #10690
Full Changelog: 36.1.2...36.1.99-preview.1.120
.NET 10 Servicing, Android 36.1.30
The latest .NET MAUI component is available in Visual Studio 2026 or higher:
You can also download the .NET 10 SDK directly, followed by:
> dotnet workload install android --version 10.0.103
...
Successfully installed workload(s) android.
To verify installation:
> dotnet workload list
Installed Workload Id Manifest Version Installation Source
--------------------------------------------------------------------------------------------
android 36.1.30/10.0.100 SDK 10.0.100
What's Changed
- [CoreCLR] Propagate unhandled exceptions by @simonrozsival in #10658
- [CoreCLR] fix string
runtimeconfig.jsonvalues by @jonathanpeppers in #10669 - [illink] set $(StartupHookSupport)=false only for Release mode by @jonathanpeppers in #10670
- [release/10.0.1xx] backport improved
dotnet-runsupport by @jonathanpeppers in #10706 - [release/10.0.1xx] set
$(UseDefaultPublishRuntimeIdentifier)=falseby @jonathanpeppers in #10730
Full Changelog: 36.1.12...36.1.30
.NET 10 Servicing, Android 36.1.12
The latest .NET MAUI component is available in Visual Studio 2026 or higher:
You can also download the .NET 10 SDK directly, followed by:
> dotnet workload install android --version 10.0.102
...
Successfully installed workload(s) android.
To verify installation:
> dotnet workload list
Installed Workload Id Manifest Version Installation Source
--------------------------------------------------------------------------------------------
android 36.1.12/10.0.100 SDK 10.0.100
What's Changed
- [release/10.0.1xx] bump to dotnet/java-interop@66312f7a by @jonathanpeppers in #10566
- [build] Relax 16k native library alignment checks by @grendello in #10608
- Fix outdated contents in WorkloadDependencies.json by @jonathanpeppers in #10627
- [nativeaot] Fix+improve gref logging by @grendello in #10572
- [release/10.0.1xx] Rename assembly stores in the APK/AAB archive to
libassembly-store.soby @grendello in #10642
Full Changelog: 36.1.2...36.1.12

