Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: dotnet/android
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: fca76a3963
Choose a base ref
...
head repository: dotnet/android
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 8746ec5f46
Choose a head ref
  • 4 commits
  • 16 files changed
  • 3 contributors

Commits on Sep 12, 2025

  1. Bump to dotnet/dotnet@7b10f5c838 10.0.100-rc.2.25461.112 (#10468)

    Changes: dotnet/dotnet@7ac1ca6...7b10f5c
    
    - **Updates**:
      - From [10.0.0-beta.25427.104 to 10.0.0-beta.25461.112][5]
         - Microsoft.DotNet.Build.Tasks.Feed
      - From [0.11.5-alpha.25427.104 to 0.11.5-alpha.25461.112][5]
         - Microsoft.DotNet.Cecil
      - From [10.0.0-rc.2.25427.104 to 10.0.0-rc.2.25461.112][5]
         - Microsoft.NET.ILLink.Tasks
         - Microsoft.NETCore.App.Ref
      - From [10.0.100-rc.1.25427.104 to 10.0.100-rc.2.25461.112][5]
         - Microsoft.NET.Sdk
      - From [10.0.100-rc.2.25427.104 to 10.0.100-rc.2.25461.112][5]
         - Microsoft.TemplateEngine.Authoring.Tasks
    
    Other changes:
    
    * Update `BuildReleaseArm64XFormsDotNet.apkdesc` as .apk size improved
    slightly.
    
    * Set `$(DisableImplicitFrameworkReferences)` due to new restore behavior:
    
        Microsoft.NET.Sdk.FrameworkReferenceResolution.targets(526,5): error NETSDK1185: The Runtime Pack for FrameworkReference 'Microsoft.NETCore.App.Runtime.linux-bionic-arm' was not available. This may be because DisableTransitiveFrameworkReferenceDownloads was set to true.
    
    [5]: dotnet/dotnet@7ac1ca6...7b10f5c
    
    Co-authored-by: Jonathan Peppers <jonathan.peppers@microsoft.com>
    dotnet-maestro[bot] and jonathanpeppers authored Sep 12, 2025
    Configuration menu
    Copy the full SHA
    17c1a6b View commit details
    Browse the repository at this point in the history

Commits on Sep 15, 2025

  1. [Mono.Android] introduce $(_AndroidIsAssignableFromCheck) escape ha…

    …tch (#10475)
    
    Forward port of: #10473
    Context: https://github.com/jonathanpeppers/IntuneReproNet9
    Context: 35f41dc
    Context: 9a27140
    
    .NET 9 introduced a Java "instanceof" check for multiple reasons:
    
        if (!JniEnvironment.Types.IsAssignableFrom (handleClass, typeClass)) {
            return null;
        }
    
    The problem with this check, is that it fails in combination with the package:
    
        <PackageReference Include="Microsoft.Intune.Maui.Essentials.android" Version="11.0.0-develop" />
    
    `LayoutInflater.From (Context)` returns `null` due to:
    
        Handle 0x7f346ad02d is of type 'com/android/internal/policy/PhoneLayoutInflater' which is not assignable to 'com/microsoft/intune/mam/client/view/MAMLayoutInflater'
    
    To solve this:
    
    * Introduce `-p:_AndroidIsAssignableFromCheck=false` to disable the check, defaulting to `true` for .NET 9+.
    
    * Add a test that calls `LayoutInflater.From (Context)` and verify it returns non-null.
    
    * Add a test entry in `IsAssignableFromRemaps.xml` to remap `com.microsoft.intune.mam.client.view.MAMLayoutInflater` to a test Java class `net.dot.android.test.MyLayoutInflater` that extends `android.view.LayoutInflater`.
    
    I introduced a new test run configuration "IsAssignableFrom" to leverage the new property `-p:_AndroidIsAssignableFromCheck=false`, and only run the `Intune` category.
    jonathanpeppers authored Sep 15, 2025
    Configuration menu
    Copy the full SHA
    e72bf36 View commit details
    Browse the repository at this point in the history
  2. [Mono.Android] Fix ABI break (#10487)

    Context: 869b0e0
    
    869b0e0 had an ABI break which exposed an internal JNI reference
    manager (`AndroidObjectReferenceManager`) class as public in order
    to use it from the NativeAOT runtime host.
    
    Initially I thought the fix would be harder, but... it's not :) -
    all we need to do is to make the class `internal`, which is what this
    commit does.
    
    Additionally, sort-of revert one more change in 869b0e0, which
    downgraded a GC diagnostic message from the `Info` log level to
    `Debug`. The message is actually useful and warns about a potential
    issue with the GC machinery, so let's emit it is as a warning.
    grendello authored Sep 15, 2025
    Configuration menu
    Copy the full SHA
    cfe0c61 View commit details
    Browse the repository at this point in the history
  3. [NativeAOT] Initialize GC threshold much earlier (#10488)

    The threshold value is used by the global reference creation
    routine to determine whether to [start GC collection][0]:
    
    ```csharp
    if (gc >= JNIEnvInit.gref_gc_threshold) {
      Logger.Log (LogLevel.Debug, "monodroid-gc", gc + " outstanding GREFs. Performing a full GC!");
      System.GC.Collect ();
    }
    ```
    
    However, the threshold value was being initialized after we've already invoked some non-trivial
    managed code in the managed [NativeAOT runtime][1], too late to avoid at least a handful of
    `System.GC.Collect ()` calls:
    
        09-15 14:37:25.923 10761 10761 D monodroid-gc: 1 outstanding GREFs. Performing a full GC!
        09-15 14:37:25.923 10761 10761 D monodroid-gc: 2 outstanding GREFs. Performing a full GC!
        09-15 14:37:25.923 10761 10761 D monodroid-gc: 3 outstanding GREFs. Performing a full GC!
        09-15 14:37:25.924 10761 10761 D monodroid-gc: 3 outstanding GREFs. Performing a full GC!
    
    Fix this by splitting the GC threshold value initialization into a separate method which is
    invoked as soon as possible from the `JNI_OnLoad` function exported by the NativeAOT application.
    
    [0]: https://github.com/dotnet/android/blob/e72bf3626024fd1e27dd9cd26d7f8439bc088e19/src/Mono.Android/Android.Runtime/AndroidRuntime.cs#L178-L195
    [1]: https://github.com/dotnet/android/blob/e72bf3626024fd1e27dd9cd26d7f8439bc088e19/src/Microsoft.Android.Runtime.NativeAOT/Android.Runtime.NativeAOT/JavaInteropRuntime.cs#L60
    grendello authored Sep 15, 2025
    Configuration menu
    Copy the full SHA
    8746ec5 View commit details
    Browse the repository at this point in the history
Loading