Skip to content

Bump external/Java.Interop from e382113 to b881d21#11609

Merged
jonathanpeppers merged 5 commits into
mainfrom
dependabot/submodules/external/Java.Interop-b881d21
Jun 10, 2026
Merged

Bump external/Java.Interop from e382113 to b881d21#11609
jonathanpeppers merged 5 commits into
mainfrom
dependabot/submodules/external/Java.Interop-b881d21

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Jun 9, 2026

Copy link
Copy Markdown
Contributor

Bumps external/Java.Interop from e382113 to b881d21.

Commits

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

Bumps [external/Java.Interop](https://github.com/dotnet/java-interop) from `e382113` to `b881d21`.
- [Commits](dotnet/java-interop@e382113...b881d21)

---
updated-dependencies:
- dependency-name: external/Java.Interop
  dependency-version: b881d21f51cbac6e175de1b2f6c254fe3846aa1d
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file. submodules Pull requests that update Submodules code labels Jun 9, 2026
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file. submodules Pull requests that update Submodules code labels Jun 9, 2026
jonathanpeppers and others added 2 commits June 9, 2026 14:28
* Localized file check-in by OneLocBuild Task (#11610)

Build definition ID 17928: Build ID 14320800

* [xaprepare] Check in `Mono.Android.Apis.projitems`, remove generator (#11608)

`Mono.Android.Apis.projitems` was previously generated at prepare time by
`GeneratedMonoAndroidProjitemsFile` (in xaprepare) from the
`BuildAndroidPlatforms.AllPlatforms` list. Both had exactly one consumer
(each other), so check in the projitems as a source file and drop the
generator plumbing.

Changes:

  * Add `src/Mono.Android/Mono.Android.Apis.projitems` — content matches
    the generator's output byte-for-byte; only the header comment now
    points at `Documentation/workflow/HowToAddNewApiLevel.md` instead of
    declaring "GENERATED FILE".
  * Repoint the 4 importers (`Mono.Android.targets` x2,
    `create-installers.targets`, `create-android-api.csproj`,
    `Xamarin.Android.Build.Tasks.targets`) at the new path and drop the
    `Condition="Exists(...)"` guards — the file is always present now.
  * Delete `GeneratedMonoAndroidProjitemsFile.cs` and `AndroidPlatform.cs`
    (whole files — `AndroidPlatform` class and `AndroidPlatformExtensions`
    both become unused).
  * Drop the `new GeneratedMonoAndroidProjitemsFile()` registration in
    `Step_GenerateFiles.cs`.
  * Remove `BuildAndroidPlatforms.AllPlatforms` and the now-unused
    `using System.Collections.Generic;`. Keep the NDK constants
    (`AndroidNdkVersion`, `AndroidNdkPkgRevision`, `NdkMinimumAPI`,
    `NdkMinimumAPILegacy32`) — they still have consumers.
  * Update `Documentation/workflow/HowToAddNewApiLevel.md` with the
    XML-based instructions for adding a new API level.
  * Narrow the `build-tools/xaprepare/README.md` blurb for
    `BuildAndroidPlatforms.cs` to NDK metadata.
  * Fix stale doc comment in `GenerateSupportedPlatforms.cs` pointing
    at the old generated path.

Continues the xaprepare cleanup started in PRs #11568 and #11580.

### [docs] Fix Stable=True/False contradiction in HowToAddNewApiLevel

The added prose said Stable should be False for preview API levels, but the
example (CANARY) sets <Stable>True</Stable>, and every entry in
Mono.Android.Apis.projitems is True. Rewrite the prose to match the data and
briefly explain what setting Stable=False would actually do (excludes entry
from default stable framework selection).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* [Xamarin.AndroidTools] Remove dead VS Mac / legacy code (#11607)

Context: after the `android-platform-support` repo was inlined here
(see c22cdcf), `src/Xamarin.AndroidTools/` carries a large amount of
code that was only used by old VS Mac / installer / debugger-host
workflows that are no longer part of the .NET for Android product. None
of these types have callers anywhere in this repo, in
`external/xamarin-android-tools/`, or in `external/Java.Interop/`.

Removed (13 files):

  * `PublicationUtilities/PublishAndroidApplication.cs`
  * `PublicationUtilities/PackageSigningTasks.cs`
  * `PublicationUtilities/KeyManagement.cs`
  * `PublicationUtilities/KeystoreEntry.cs`
  * `Sessions/AndroidDeploySession.cs`
  * `Sessions/AndroidConnectCommandSession.cs`
  * `Sessions/AndroidCommandSession.cs`
  * `Sessions/AndroidDeploymentException.cs`
  * `Devices/AndroidPackageList.cs`
  * `Devices/AndroidPackageListExtensions.cs`
  * `Debugging/MonoDroidProcessMonitor.cs`
  * `PlatformPackage.cs`
  * `IProgressNotifier.cs`
  * `AndroidSigningOptions.cs`

Moved (still needed by `ProcessUtils.cs`):

  * `PublicationUtilities/AndroidSdkToolException.cs` ->
    `AndroidSdkToolException.cs` (namespace unchanged)

Pruned from `Devices/AndroidDeviceExtensions.cs` (the methods only
referenced the just-deleted types and had no in-tree callers):

  * `StartActivityWithCommandSession` (used `AndroidCommandSession`)
  * `GetDeploySession`, `GetPackagesAsync`, `GetPackages` (used
    `AndroidDeploySession` / `IProgressNotifier`)
  * `InstallSharedRuntime*` and `InstallSharedPlatform*` overloads
    that took `IProgressNotifier`
  * `GetPackageRemotePath`/`GetPackageRemotePathAsync` (used
    `AndroidDeploymentException`)
  * `GetFastDevRemotePath`/`GetFastDevRemotePathAsync` and the inner
    `FastDevRemotePathInfo` class (only consumer was
    `GetPackageRemotePathAsync`)

Kept methods in `AndroidDeviceExtensions.cs` are the ones still used
by `Xamarin.Android.Build.Debugging.Tasks` (`EnsureProperties`,
`KillProcessAndWaitForExit`, `PushAndInstallPackageAsync`) and by
`DebuggingExtensions` (`SetFastDevPropertyFile`, `GetProcessIDAsync`,
`SetDebugPropertiesAsync`).

Also cleaned up:

  * `Properties/Resources.resx` (English source): removed seven
    `CreateKeyError_*` strings that only `KeyManagement.cs` used.
  * `Properties/Resources.Designer.cs`: removed the seven matching
    properties.
  * `MonoDroidSdk.cs`: two `[Obsolete]` messages referenced the
    now-deleted `PlatformPackage`; changed to `"Do not use."`.

Non-English `Resources.*.resx` and `Localize/loc/**/*.lcl` are left
alone per repo policy (auto-regenerated by OneLocBuild).

Build verified locally:

  * `src/Xamarin.AndroidTools/Xamarin.AndroidTools.csproj`
  * `src/Mono.AndroidTools/Mono.AndroidTools.csproj`
  * `src/Xamarin.Android.Build.Debugging.Tasks/Xamarin.Android.Build.Debugging.Tasks.csproj`
  * `src/Xamarin.Installer.AndroidSDK/Xamarin.Installer.AndroidSDK.csproj`

Net change: -4225 / +2 lines across 19 files.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* [NUnitLite] Add OneTimeSetUp/OneTimeTearDown attribute shims

NUnit 3.x renamed [TestFixtureSetUp]/[TestFixtureTearDown] to [OneTimeSetUp]/[OneTimeTearDown]. dotnet/java-interop#1437 migrated the Java.Interop test suite to the new names.

The bundled Xamarin.Android.NUnitLite (src-ThirdParty/NUnitLite/) only defines the legacy names. Add no-op subclasses for the new names so test source using [OneTimeSetUp]/[OneTimeTearDown] still compiles against bundled NUnitLite once the Java.Interop submodule is bumped past dotnet/java-interop#1437.

These shims become unnecessary once dotnet/android moves off bundled NUnitLite to stock NUnit (tracked in PR #11224).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: VS MobileTools Engineering Service 2 <vsmobiletoolsengsvc2@microsoft.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@jonathanpeppers

Copy link
Copy Markdown
Member

/azp run

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

dependabot Bot and others added 2 commits June 9, 2026 15:59
---
updated-dependencies:
- dependency-name: Irony
  dependency-version: 1.5.3
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Jonathan Peppers <jonathan.peppers@microsoft.com>
@jonathanpeppers jonathanpeppers merged commit 7a43488 into main Jun 10, 2026
38 of 41 checks passed
@jonathanpeppers jonathanpeppers deleted the dependabot/submodules/external/Java.Interop-b881d21 branch June 10, 2026 00:03
jonathanpeppers added a commit that referenced this pull request Jun 10, 2026
## Summary

Migrate Mono.Android device test infrastructure from the legacy NUnitLite stack to `dotnet test` with the Microsoft Testing Platform (MTP), following the pattern established for the `androidtest` template in 031246d.

Callers now run device tests with stock `dotnet test`, no custom MSBuild targets required. **NUnitLite is removed entirely** from the workload — both as a framework assembly and as a vendored copy.

## Changes

### New: MTP-based `TestInstrumentation` base class

- `tests/TestRunner.Core/TestInstrumentation.cs` is now an MTP-based on-device runner using stock NUnit (`NUnitTestAssemblyRunner`) plus `Microsoft.Testing.Platform`.
- Mirrors the `androidtest` template: tests run synchronously on the instrumentation thread (`NumberOfTestWorkers = 0`, see comment in code), TRX is written to the app data dir, and the path is sent back through the instrumentation bundle so the host adapter can pick it up.

### Updated test projects

- **Mono.Android.NET-Tests**, **Java.Interop-Tests**, **JcwGen-Tests**: now reference stock NUnit `3.13.3` from NuGet (no NUnitLite / TestRunner.NUnit), set `IsTestingPlatformApplication=true`, and use the new `TestInstrumentation` base.

### Deleted (~41K lines)

- `src/Xamarin.Android.NUnitLite/` — the `Xamarin.Android.NUnitLite.dll` framework assembly (NUnitLite wrapper, `TestSuiteInstrumentation`, GUI `TestSuiteActivity` / `TestResultActivity` / `OptionsActivity`, layouts).
- `src-ThirdParty/NUnitLite/` — the embedded NUnitLite source we used to compile into the above.
- `tests/TestRunner.NUnit/` — `NUnitTestRunner` / `NUnitTestInstrumentation`.
- `tests/TestRunner.xUnit/` — `XUnitTestRunner` / `XUnitTestInstrumentation`.
- `Xamarin.Android.NUnitLite.dll/.pdb/.xml` removed from `build-tools/installers/create-installers.targets` (no longer shipped in the framework).
- Various custom `RunTestApp` / device-test MSBuild targets.

The `XA4313` deprecation message in `Common.targets` (which suggested customers migrate `Xamarin.Android.NUnitLite` → `Xamarin.Legacy.NUnitLite`) is preserved as the existing escape hatch; the `Xamarin.Legacy.NUnitLite` NuGet is published from a separate repo and is unaffected by these changes.

### NativeAOT trimmer fix

NUnit 3.13.3's `EquatablesComparer` walks every value via reflection: `type.GetInterfaceMap(typeof(IEquatable<T>))` then `MethodInfo.Invoke` on the result. Under stock NativeAOT this throws `Arg_NotSupportedException` because ILC strips the dispatch-slot mapping. NUnit 3.14+ guards this with try/catch, but we cannot bump globally (it regresses the Mono Interpreter `AwaitAdapter` lane).

Real fix, no `[Category("NativeAOTIgnore")]` shortcuts:

- `tests/Mono.Android-Tests/Mono.Android-Tests/Mono.Android.NET-Tests.csproj`: under `'$(PublishAot)' == 'true'`, set `<IlcGenerateCompleteTypeMetadata>true</IlcGenerateCompleteTypeMetadata>` and pull in a new `NativeAOT.rd.xml`.
- `tests/Mono.Android-Tests/Mono.Android-Tests/NativeAOT.rd.xml` roots the closed `IEquatable<T>` instantiations the test value types need (`String`, `Boolean`, `IntPtr`, `TimeSpan`, `DateTime`) plus the concrete types themselves as `Dynamic="Required All"`, so ILC keeps the slot mapping. Also roots `TaskAwaitAdapter+GenericAdapter<VoidTaskResult>` for NUnit's async adapter.

Result on CI build [14325032](https://devdiv.visualstudio.com/DevDiv/_build/results?buildId=14325032): NativeAOT lane 230 passed / 0 failed (43 legitimate category exclusions).

### CI updates (`apk-instrumentation.yaml`)

- Build with `-t:Install`, run with `dotnet test --no-build --report-trx`.
- Test results are published as VSTest (TRX) instead of NUnit XML.
- Added `adb logcat -d` capture so device-test crashes can be diagnosed without re-running CI.

### Test fixes / bookkeeping

- Centralized `JavaSystem.LoadLibrary ("reuse-threads")` in `TestInstrumentation.OnCreate` so it runs on the main Java thread instead of inside individual tests.
- Synced `ExcludedTestNames` / `ExcludedCategories` to match `main`.

## Out of scope

- `EmbeddedDSO` and `Locale-Tests` — old-style csproj that still `<Reference Include="Xamarin.Android.NUnitLite" />`. They need an SDK migration before this PR can fully delete that assembly's identity from the build (the `XA4313` deprecation will fire on these projects today). Tracked separately.

## Already split out

These improvements were carved out of this PR and merged separately to `main`:

- #11614 — `[tests] Use Android.Util.Log in JnienvTest.ThreadReuse callback`
- #11615 — `[tests] Improve DoNotLeakWeakReferences reliability`
- #11609 — `Bump to dotnet/java-interop@b881d21` — picks up dotnet/java-interop#1437 (modernize NUnit attributes), which is why no `NUnitCompatibility.cs` shim is needed in this PR.

## Related

- Template work: 031246d
- #11523 — fixed `UrlEscaping_Bug43411` on `main` (test had been silently dead under NUnitLite)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file. submodules Pull requests that update Submodules code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant