Repository navigation
[Java.Interop] Remove unused tooling assemblies and package pins - #13223
Merged
jonathanpeppers merged 1 commit intoOct 21, 2026
Merged
Conversation
The final dependency audit for #11843 finds two projects outside the Android, retained tooling test, and bootstrap dependency closure. Neither assembly is included in Android SDK or runtime packs. Remove the unused Cecil annotation adapter; binding generation already uses the generator-model adapter. Remove the duplicate standalone TypeNameMappings assembly and unused shared-project wrappers, retaining JavaNativeTypeManager.cs and its direct compilation into Mono.Android and Java.Interop.Tools.JavaCallableWrappers. Drop three version-only package updates without subtree Include items. Retain actual package dependencies, public product APIs, and existing SDK/ref/runtime packaging contracts. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Contributor
There was a problem hiding this comment.
🔵 Needs a closer look
No actionable code issues were identified, but completed Android integration validation remains unconfirmed.
No open issues 🎉
What changed in this PR
Continues #11843’s dependency cleanup by removing unused Java.Interop tooling projects while preserving shared naming code and shipped components.
Changes:
- Removes the unused Cecil annotation adapter.
- Removes the standalone TypeNameMappings project and shared-project wrappers.
- Drops three unused package-version pins and updates solution membership.
| File | Description |
|---|---|
| external/Java.Interop/src/Xamarin.Android.Tools.AnnotationSupport.Cecil/Xamarin.Android.Tools.AnnotationSupport.Cecil.csproj | Removes unused adapter project. |
| external/Java.Interop/src/Xamarin.Android.Tools.AnnotationSupport.Cecil/ManagedTypeFinderCecil.cs | Removes adapter implementation. |
| external/Java.Interop/src/Xamarin.Android.Tools.AnnotationSupport.Cecil/CecilExtensions.cs | Removes adapter-specific helpers. |
| external/Java.Interop/src/Java.Interop.Tools.TypeNameMappings/Java.Interop.Tools.TypeNameMappings.shproj | Removes unused shared-project wrapper. |
| external/Java.Interop/src/Java.Interop.Tools.TypeNameMappings/Java.Interop.Tools.TypeNameMappings.projitems | Removes unused shared-source metadata. |
| external/Java.Interop/src/Java.Interop.Tools.TypeNameMappings/Java.Interop.Tools.TypeNameMappings.csproj | Removes duplicate standalone project. |
| external/Java.Interop/Java.Interop.slnx | Removes deleted projects from the solution. |
| external/Java.Interop/Directory.Build.targets | Removes three unused package-version pins. |
Review effort: Balanced
jonathanpeppers
approved these changes
Oct 21, 2026
jonathanpeppers
deleted the
simonrozsival-java-interop-dependency-audit
branch
October 21, 2026 19:55
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Pull Request
title and
description
should follow the
commit-messages.mdworkflow documentation, and in particular should include:Continue the final dependency/packaging audit for #11843. Two Java.Interop projects are outside the Android, retained tooling-test, and bootstrap dependency closure; neither assembly is included in SDK, reference, or runtime packs.
Remove the unused
Xamarin.Android.Tools.AnnotationSupport.Ceciladapter. Binding generation already usesManagedTypeFinderGeneratorTypeSystem; retain the live annotation library and generator adapter.Remove the duplicate standalone
Java.Interop.Tools.TypeNameMappings.csprojand its unused shared-project wrappers. KeepJavaNativeTypeManager.csunchanged, including its direct compilation intoMono.Androidand the shippedJava.Interop.Tools.JavaCallableWrappersassembly. No public product API or naming implementation is removed.Remove three version-only
PackageReference Updateentries without subtree Include consumers:Microsoft.CSharp,Microsoft.DotNet.GenAPI, andMono.Linq.Expressions. Actual package dependencies and versions are unchanged; outer Android bootstrap/device-test references remain untouched.All 27 retained Java.Interop projects remain reachable from Android, the nine host suites, or live bootstrap. The Android-side closure remains 17 projects, and the project-declared package ID set remains 14. SDK/ref/runtime manifests, shared source links,
JNINativeWrappercompatibility APIs, and supported runtime/generator paths are unchanged. The audit and detailed evidence are attached to #11843. This is independent of the runner/bootstrap and documentation cleanup PRs.Validation
Fresh local worktree validation used existing
javac 23.0.2,DOTNET_PROCESSOR_COUNT=2, andJAVA_TOOL_OPTIONS='-XX:ActiveProcessorCount=2'.$jdkis the local JDK home and$artifactsis the session artifact directory; logs/binlogs/TRX were retained locally.Passed.
Passed, 0 warnings and 0 errors.
All nine suites ran: 799 passed, 1 failed, 2 skipped. The only failure is the pre-existing
ModuleInfoTests.ClassFileexpectation of 12 constant-pool entries versus 13 emitted by javac 23.0.2. Independently archived main's Java fixtures and compiled them using the same evaluated source lists/compiler flags: baseline/currentmodule-info.classare byte-identical (SHA-25670344aeaf5936f8f8256ab7416958bf867f45f8309d4aa9a44f35b8f6393ab99). Test and bytecode-library sources are unchanged. No suppression, exclusion, JDK pin, or unrelated test change was made.All 18 Java tests passed; six existing obsolete-Java-8-option warnings, zero errors.
dotnet sln external/Java.Interop/Java.Interop.slnx list, read-only MSBuild evaluation of all 27 projects, static baseline/current project/package/pack/source-link checks, andgit diff --checkpassed. No full Android SDK/native build or device tests were run for these unshipped-project/version-metadata-only deletions.Fixes: #11843