{{ message }}
Tags: dotnet/android
Tags
[Mono.Android] Bind API-37 Beta 3 (#11038) Context: https://developer.android.com/about/versions/17 Context: https://android-developers.googleblog.com/2026/03/the-third-beta-of-android-17.html Android 17 Beta 3 has been released. * [API-37 Beta 3 vs. API-CinnamonBun Beta 2][0] * [API-37 Beta 3 vs. API-36.1][1] The Android 17 Beta 3 announcement states that Beta 3 is API stable. > Android 17 has officially reached platform stability today with > Beta 3. That means that the API surface is locked; you can perform > final compatibility testing and push your Android 17-targeted apps > to the Play Store. We're not yet ready to do the enumification work, though. Bind API-37 Beta 3 as an *unstable*, *un-enumified* binding. [0]: https://developer.android.com/sdk/api_diff/37-incr/changes [1]: https://developer.android.com/sdk/api_diff/37/changes
[xabt] `dotnet watch` support, based on env vars (#10960) Context: dotnet/sdk#52492 Context: dotnet/sdk#52581 `dotnet-watch` now runs Android applications via: dotnet watch 🚀 [helloandroid (net10.0-android)] Launched 'D:\src\xamarin-android\bin\Debug\dotnet\dotnet.exe' with arguments 'run --no-build -e DOTNET_WATCH=1 -e DOTNET_WATCH_ITERATION=1 -e DOTNET_MODIFIABLE_ASSEMBLIES=debug -e DOTNET_WATCH_HOTRELOAD_WEBSOCKET_ENDPOINT=ws://localhost:9000 -e DOTNET_STARTUP_HOOKS=D:\src\xamarin-android\bin\Debug\dotnet\sdk\10.0.300-dev\DotnetTools\dotnet-watch\10.0.300-dev\tools\net10.0\any\hotreload\net10.0\Microsoft.Extensions.DotNetDeltaApplier.dll -bl': process id 3356 And so the pieces on Android for this to work are: ~~ Startup Hook Assembly ~~ Parse out the value: <_AndroidHotReloadAgentAssemblyPath>@(RuntimeEnvironmentVariable->WithMetadataValue('Identity', 'DOTNET_STARTUP_HOOKS')->'%(Value)'->Exists())</_AndroidHotReloadAgentAssemblyPath> And verify this assembly is included in the app: <ResolvedFileToPublish Include="$(_AndroidHotReloadAgentAssemblyPath)" /> Then, for Android, we need to patch up `$DOTNET_STARTUP_HOOKS` to be just the assembly name, not the full path: <_AndroidHotReloadAgentAssemblyName>$([System.IO.Path]::GetFileNameWithoutExtension('$(_AndroidHotReloadAgentAssemblyPath)'))</_AndroidHotReloadAgentAssemblyName> ... <RuntimeEnvironmentVariable Include="DOTNET_STARTUP_HOOKS" Value="$(_AndroidHotReloadAgentAssemblyName)" /> ~~ Port Forwarding ~~ A new `_AndroidConfigureAdbReverse` target runs after deploying apps, that does: adb reverse tcp:9000 tcp:9000 I parsed the value out of: <_AndroidWebSocketEndpoint>@(RuntimeEnvironmentVariable->WithMetadataValue('Identity', 'DOTNET_WATCH_HOTRELOAD_WEBSOCKET_ENDPOINT')->'%(Value)')</_AndroidWebSocketEndpoint> <_AndroidWebSocketPort>$([System.Text.RegularExpressions.Regex]::Match('$(_AndroidWebSocketEndpoint)', ':(\d+)').Groups[1].Value)</_AndroidWebSocketPort> ~~ Prevent Startup Hooks in Microsoft.Android.Run ~~ When I was implementing this, I keep seeing *two* clients connect to `dotnet-watch` and I was pulling my hair to figure out why! Then I realized that `Microsoft.Android.Run` was also getting `$DOTNET_STARTUP_HOOKS`, and so we had a desktop process + mobile process both trying to connect! Easiest fix, is to disable startup hook support in `Microsoft.Android.Run`. I reviewed the code in `dotnet run`, and it doesn't seem correct to try to clear the env vars. ~~ Conclusion ~~ With these changes, everything is working! dotnet watch 🔥 C# and Razor changes applied in 23ms. * Include $(AdbTarget) in adb reverse command When multiple devices/emulators are connected, the adb reverse command needs (e.g. -s emulator-5554) to target the correct device. Without it, the command fails with 'more than one device' or forwards on the wrong device. NOTE: we run the test on MonoVM-only for now, until we get: * dotnet/sdk#53501 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Support for exempting native libraries from JNI preload (#10787) Fixes: #10617 Context: cba39dc cba39dc introduced support for preloading of JNI native libraries at application startup. However, it appears that in some scenarios this behavior isn't desired. This PR introduces a mechanism which allows exempting some or all (with exception of the BCL libraries) libraries from the preload mechanism. In order to not preload any JNI libraries it's now possible to set the `$(AndroidIgnoreAllJniPreload)` MSBuild property to `true`. It is also possible to exempt individual libraries from preload by adding their name to the `AndroidNativeLibraryNoJniPreload` MSBuild item group, for instance: <ItemGroup> <AndroidNativeLibraryNoJniPreload Include="libMyLibrary.so" /> </ItemGroup>
Bump to dotnet/dotnet@ee15891825 10.0.200-servicing.26120.103 (#10853) Changes: dotnet/dotnet@e911301...ee15891 * Update dependencies from https://github.com/dotnet/dotnet build 20260220.3 On relative base path root Microsoft.DotNet.Build.Tasks.Feed From Version 10.0.0-beta.26118.103 -> To Version 10.0.0-beta.26120.103 Microsoft.NET.Sdk From Version 10.0.200-preview.0.26118.103 -> To Version 10.0.200-servicing.26120.103 Microsoft.TemplateEngine.Authoring.Tasks From Version 10.0.200-preview.26118.103 -> To Version 10.0.200-preview.26120.103 * Update to use dotnet/runtime 9.0.14 feeds Co-authored-by: Jonathan Peppers <jonathan.peppers@microsoft.com>
Bump to dotnet/dotnet@5a1f1d222b 11.0.100-preview.1.26081.107 (#10750) Changes: dotnet/dotnet@5a1f1d2...5a1f1d2 - **Dependency Updates**: - From [11.0.0-beta.26079.122 to 11.0.0-beta.26081.107][1] - Microsoft.DotNet.Build.Tasks.Feed - From [0.11.5-preview.26079.122 to 0.11.5-preview.26081.107][1] - Microsoft.DotNet.Cecil - From [11.0.0-preview.1.26079.122 to 11.0.0-preview.1.26081.107][1] - Microsoft.NET.ILLink - Microsoft.NETCore.App.Ref - From [11.0.100-preview.1.26079.122 to 11.0.100-preview.1.26081.107][1] - Microsoft.NET.Sdk - Microsoft.NET.Workload.Emscripten.Current.Manifest-11.0.100-preview.1 - Microsoft.NET.Workload.Mono.Toolchain.Current.Manifest-11.0.100-preview.1 - Microsoft.TemplateEngine.Authoring.Tasks [1]: dotnet/dotnet@5a1f1d2...5a1f1d2
Bump to dotnet/android-tools@fb95edd (#10707) Bumps [external/xamarin-android-tools](https://github.com/dotnet/android-tools) from `ca74eba` to `fb95edd`. - [Commits](dotnet/android-tools@ca74eba...fb95edd) --- updated-dependencies: - dependency-name: external/xamarin-android-tools dependency-version: fb95edd359e6a6af9aecc4c82520f5a5f2ede824 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bump to dotnet/dotnet@a1b9d991e4 10.0.2-servicing.25612.103 (#10648) Changes: dotnet/dotnet@ed2ddf8...a1b9d99 - **Dependency Updates**: - From [10.0.0-beta.25605.116 to 10.0.0-beta.25612.103][1] - Microsoft.DotNet.Build.Tasks.Feed - From [0.11.5-alpha.25605.116 to 0.11.5-alpha.25612.103][1] - Microsoft.DotNet.Cecil - From [10.0.2-servicing.25605.116 to 10.0.2-servicing.25612.103][1] - Microsoft.NET.ILLink - From [10.0.102-servicing.25605.116 to 10.0.102-servicing.25612.103][1] - Microsoft.NET.Sdk - From [10.0.102 to 10.0.102][1] - Microsoft.NET.Workload.Emscripten.Current.Manifest-10.0.100 - Microsoft.NET.Workload.Mono.Toolchain.Current.Manifest-10.0.100 - Microsoft.TemplateEngine.Authoring.Tasks - From [10.0.2 to 10.0.2][1] - Microsoft.NETCore.App.Ref [1]: dotnet/dotnet@ed2ddf8...a1b9d99
PreviousNext
