Skip to content

.NET 11 Preview 4, Android 36.99.0-preview.4.137

Pre-release
Pre-release

Choose a tag to compare

@jonathanpeppers jonathanpeppers released this 05 Jun 16:05
· 269 commits to main since this release

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 AddKeepAlives trimmer step to post-trimming task by @sbomer in #10952
  • Fix dotnet run failing 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-summary stage to Xamarin.Android-PR pipeline by @jonathanpeppers in #10982
  • Move CheckForObsoletePreserveAttribute into PostTrimmingPipeline by @Copilot in #11009
  • Fix emulator boot and deploy flow for dotnet run by @rmarinho in #10969
  • Add ci-status Copilot skill for PR build investigation by @simonrozsival in #11024
  • Move RemoveResourceDesigner trimmer 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 RemoveAttributesBase from Microsoft.Android.Sdk.ILLink by @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 androidtest project template and dotnet run instrumentation 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 AndroidGenerateJniMarshalMethods feature 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: none on /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 #11159
  • [tests] Improve NUnit runner reporting and dry-run auditing by @simonrozsival in #11162
  • [TrimmableTypeMap] Fix UCO boolean return type mismatch causing n_* callback trimming by @simonrozsival in #11168
  • [TrimmableTypeMap] Implement alias support in codegen and runtime by @simonrozsival in #11122
  • Add roles restriction to /review slash command by @jonathanpeppers in #11173
  • Make CoreCLR the default runtime for Debug builds by @simonrozsival in #11169
  • [Mono.Android] reduce GC bridge and reference logging overhead by @simonrozsival in #11119
  • [TrimmableTypeMap] Add exception handling to UCO constructor callbacks (nctor_*_uco) by @Copilot in #11178
  • [TrimmableTypeMap] Per-assembly typemap universes with startup hook initialization by @simonrozsival in #11181
  • [Xamarin.Android.Build.Tasks] Retry RemoveDirFixed on ERROR_DIR_NOT_EMPTY by @SuperJMN in #11195
  • [tests] Skip InflateCustomView_ShouldNotLeakGlobalRefs until global ref leak is fully resolved by @simonrozsival in #11202
  • [TrimmableTypeMap] Replace startup hook with direct TypeMapLoader.Initialize() call by @simonrozsival in #11197
  • [Build] Add Inputs/Outputs to _AddTypeManagerResources to skip on incremental builds by @jonathanpeppers in #11185
  • Refactor network test helpers and fix async Assert.Ignore in NUnitLite by @Copilot in #11166
  • [dotnet test] Add MTP test adapter for Android device testing by @jonathanpeppers in #11130
  • [xabt] Fix redundant ternary in GenerateResourceDesignerAssembly by @jonathanpeppers in #11214
  • Add XA0119 warning for Debug builds with PublishReadyToRun by @Copilot in #11213
  • Fix broken and stale links in Documentation/README.md by @jonathanpeppers in #11211
  • [tests] Use MSTestPackageVersion in DotNetNewAndroidTest by @jonathanpeppers in #11209
  • [Build] Fix apidocs pipeline (template repo, DocsApiLevel, JAVA_HOME) by @jonathanpeppers in #11199
  • Fix wrong-TFM assembly loading producing empty JCW .jlo.xml files by @jonathanpeppers in #11208

New Contributors

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