Skip to content

.NET 11 Preview 5, Android 36.99.0-preview.5.308

Pre-release
Pre-release

Choose a tag to compare

@jonathanpeppers jonathanpeppers released this 09 Jun 20:42
· 73 commits to main since this release
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 ExtractJarsFromAar by @jonathanpeppers in #11212
  • Remove $(AndroidGenerateJniMarshalMethods) support by @jonathanpeppers in #11135
  • [XABT] Remove RunCheckedBuild / _AndroidJLOCheckedBuild infrastructure 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 .lscache to .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 .config files 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 restore hang 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-android37 only 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_InstallGNUBinutils with 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 JValue struct 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 AndroidBitmapInfo struct by @Copilot in #11362
  • Add XML documentation to Android.Security.KeyChain public methods by @Copilot in #11364
  • Bump 7-Zip.CommandLine from 18.1.0 to 25.1.0 by @jonathanpeppers in #11347
  • [Tests] Add NativeCrashProducesManagedStackTrace device test by @jonathanpeppers in #11338
  • [NativeAOT] Make workload linker the default for NativeAOT builds by @sbomer in #11340
  • Add unit tests for EnvironmentFilesParser utility by @Copilot in #11373
  • [Build] Block insecure HTTP Maven repository URLs for defense in depth by @jonathanpeppers in #11351
  • Move hardcoded error strings in GenerateJniRemappingNativeCode to Properties.Resources with XA error codes by @Copilot in #11366
  • [build] Remove 15 unused internal build tasks by @jonathanpeppers in #11369
  • Remove obsolete SetAndroidSupportedAbis usage from test code by @Copilot in #11390
  • Remove dead code in TypeMappingReleaseNativeAssemblyGeneratorCLR.cs by @Copilot in #11392
  • [native] Track archive DSO stub output by @simonrozsival in #11407
  • Remove unused using directives in CheckForInvalidResourceFileNames.cs and CreateDynamicFeatureManifest.cs by @Copilot in #11397
  • Remove stale TODO and dead code in AuthDigestSession.HA2 by @Copilot in #11401
  • Use Java identity in constructor activation tests by @simonrozsival in #11343
  • Use static Regex and StringBuilder in ManifestDocument.CalculateVersionCode by @Copilot in #11413
  • Enable nullable reference types in AidlCompiler.cs by @Copilot in #11403
  • Log resolution failures in FixLegacyResourceDesignerStep.GetFixupKey instead of silently swallowing by @Copilot in #11411
  • [tests] Fix ApplicationRunsWithDebuggerAndBreaks flakiness by @jonathanpeppers in #11398
  • Fix NativeLinker.LogFailure: add XA3008 coded warning with format arguments by @Copilot in #11377
  • [TrimmableTypeMap] Remove ForceUnconditionalEntries workaround by @simonrozsival in #11345
  • Use AcesShared macOS pool for public dnceng pipelines by @jonathanpeppers in #11409
  • Move hardcoded error string in CompressAssemblies to Properties.Resources with XA5303 error code by @Copilot in #11417
  • Unify Android minimum API level to 24 for all runtimes by @sbomer in #11331
  • Fail InstallAndroidDependencies cleanly when ResolveAndroidTooling has no resolved SDK by @Copilot in #11321
  • Add TRX report support to Microsoft.Android.Run by @jonathanpeppers in #11415
  • Move OpenJDK installation from xaprepare to MSBuild NoTargets project by @jonathanpeppers in #11348
  • [TrimmableTypeMap] Add trimmable [Export] and [ExportField] callback support by @simonrozsival in #11123
  • Move hardcoded error strings in JCWGenerator.cs to Properties.Resources with XA error codes by @Copilot in #11427
  • [Build] Move aapt2 download from xaprepare to MSBuild target by @jonathanpeppers in #11399
  • [Trimming] Use DiagnosticMethodInfo for AOT-safe stack frame information by @simonrozsival in #11434
  • [xaprepare] Standardize on dotnet/arcade's use of dotnet-install scripts by @jonathanpeppers in #11441
  • Improve android-reviewer skill accuracy and update gh-aw by @jonathanpeppers in #11425
  • Remove the obsolete AndroidClientHandler class by @simonrozsival in #11393
  • [build] provision OpenJDK before Java.Interop Prepare by @jonathanpeppers in #11442
  • [Trimming] Update value managers for annotated peer activation by @simonrozsival in #11436
  • [Export] Fix dynamic export array callbacks by @simonrozsival in #11428
  • [Build] Fix JNI remapping counts lost on incremental builds by @simonrozsival in #11378
  • [tests] Add AssertCommercialBuild() to incremental build tests by @jonathanpeppers in #11421
  • [TrimmableTypeMap][NativeAOT] Initialize trimmable typemap runtime by @simonrozsival in #11292
  • Bump to DevDiv/android-platform-support/main@9c8f9978 by @jonathanpeppers in #11443
  • Fix broken string interpolation in LlvmIrInstructions error messages by @Copilot in #11431
  • Enable nullable reference types in MamJsonToXml.cs by @Copilot in #11453
  • Enable #nullable enable in SolutionBuilder.cs by @Copilot in #11458
  • Move hardcoded warning strings in MergeRemapXml to Properties.Resources with XA codes by @Copilot in #11446
  • Docs: fix broken Wear OS link in XA4312 page by @jonathanpeppers in #11459
  • [TrimmableTypeMap] Skip UCO constructor generation for abstract types by @sbomer in #11461
  • Remove unused using directives in JCWGenerator.cs by @Copilot in #11497
  • [TrimmableTypeMap] Assert build test outputs by @simonrozsival in #11485
  • [TrimmableTypeMap] Refactor NativeTypeMap tests for trimmable typemap by @simonrozsival in #11484
  • [tests] Remove custom widget trimmable exclusion by @simonrozsival in #11483
  • Enable nullable reference types in XAJavaTypeScanner.cs by @Copilot in #11455
  • [Trimming] Use trimmable type map for non-generic collection CopyTo by @simonrozsival in #11429
  • Use x64 shared Macs for macOS build jobs by @simonrozsival in #11500
  • [Trimming] Use assembly-qualified name in ResourceDesignerAttribute by @simonrozsival in #11439
  • Fix ConnectTimeout XML doc comment: default is 24 hours, not 120 seconds by @Copilot in #11463
  • Move hardcoded error strings in RemoveRegisterAttribute and GenerateCompressedAssembliesNativeSourceFiles to Properties.Resources by @Copilot in #11470
  • Add unit tests for Xamarin.Android.Tools.Aidl.CSharpCodeGenerator by @Copilot in #11460
  • [ci] Stop using preview .NET SDK channel in two lanes by @jonathanpeppers in #11510
  • Move hardcoded warning strings in ELFHelper.cs to Properties.Resources with XA warning codes by @Copilot in #11475
  • [TrimmableTypeMap] Package ReadyToRun trimmable typemap assemblies by @simonrozsival in #11473
  • [TrimmableTypeMap] Reuse base UCO wrappers for inherited overrides by @simonrozsival in #11466
  • Remove unused using directives in ELFHelper.cs and TypeMappingStep.cs by @Copilot in #11512
  • [TrimmableTypeMap] Preserve trimmable typemap outputs on no-op builds by @simonrozsival in #11472

Full Changelog: 36.99.0-preview.4.137...36.99.0-preview.5.308