Skip to content

[build] android-platform-support repo consolidation#11529

Draft
jonathanpeppers wants to merge 4 commits into
mainfrom
jonathanpeppers/inline-android-platform-support
Draft

[build] android-platform-support repo consolidation#11529
jonathanpeppers wants to merge 4 commits into
mainfrom
jonathanpeppers/inline-android-platform-support

Conversation

@jonathanpeppers
Copy link
Copy Markdown
Member

@jonathanpeppers jonathanpeppers commented May 28, 2026

Inlines the contents of the DevDiv/android-platform-support repo into
dotnet/android, removes the BuildExternal MSBuild target that used to
clone it, and prunes dead code carried over with the migration. The
shipped SDK pack DLLs are unchanged.

What moved in from external/android-platform-support:

  • src/Xamarin.AndroidTools/ - SDK probing helpers (AndroidSdk,
    MonoDroidSdk, ProcessUtils, etc.) used by the debugging tasks
    and the installer.
  • src/Mono.AndroidTools/ - AndroidDevice / adb client used by
    fast deployment and the debugging task assembly.
  • src/Xamarin.Android.Build.Debugging.Tasks/ - the
    Xamarin.Android.Common.Debugging.targets MSBuild tasks (FastDeploy,
    RunActivity, RunTests, GetGdbSymbols, ...).
  • src/Xamarin.Installer.AndroidSDK/,
    src/Xamarin.Installer.Build.Tasks/,
    src/Xamarin.Installer.Common/ - Android SDK installer used by the
    standalone Xamarin Installer / VS Mac Android workload acquisition.
  • tools/fastdev/ - native xamarin.{sync,cp,find,stat} helper
    binaries plus the fastdevtools packaging project consumed during
    fast deployment.
  • external/termux-elf-cleaner - submodule consumed only as a
    build-time tool by the fastdev native binaries.
  • build-tools/android-platform-support/ - version/commit metadata
    for the above projects, kept under this path to preserve legacy
    file names.

Build wiring:

  • Xamarin.Android.sln now references the inlined projects directly.
  • Directory.Build.props, build-tools/scripts/DotNet.targets, and
    build-tools/installers/create-installers.targets lose their
    BuildExternal clone/build of external/android-platform-support
    and pick the assemblies up from the in-tree build instead.
  • installer-files.projitems is inlined into the installer targets
    rather than imported across the submodule boundary.
  • tools/workload-dependencies/WorkloadDependencies.proj reads its
    feed XML from a copy under src/Xamarin.Installer.Build.Tasks/.

Cleanup carried out as part of the migration: removed code, resources,
and tooling files that only existed to serve the standalone
android-platform-support build system and have no consumers in
dotnet/android.

THIRD-PARTY-NOTICES.TXT: added the Apache 2.0 notice for
Kajabity/Kajabity.Tools.Java, which is vendored under
src/Xamarin.Installer.AndroidSDK/ and consumed by the
JavaDependencyInstaller.

@jonathanpeppers
Copy link
Copy Markdown
Member Author

/azp run

@azure-pipelines
Copy link
Copy Markdown

Azure Pipelines successfully started running 1 pipeline(s).

@jonathanpeppers jonathanpeppers force-pushed the jonathanpeppers/inline-android-platform-support branch from c7fe2d6 to 48ce158 Compare May 28, 2026 17:16
@jonathanpeppers
Copy link
Copy Markdown
Member Author

/azp run

@azure-pipelines
Copy link
Copy Markdown

Azure Pipelines successfully started running 1 pipeline(s).

@jonathanpeppers jonathanpeppers force-pushed the jonathanpeppers/inline-android-platform-support branch 2 times, most recently from 653f3e9 to 2d58ed9 Compare May 28, 2026 18:26
@jonathanpeppers
Copy link
Copy Markdown
Member Author

/azp run

@azure-pipelines
Copy link
Copy Markdown

Azure Pipelines successfully started running 1 pipeline(s).

@jonathanpeppers jonathanpeppers force-pushed the jonathanpeppers/inline-android-platform-support branch 2 times, most recently from b03e93b to 3e04b58 Compare May 28, 2026 19:51
@jonathanpeppers
Copy link
Copy Markdown
Member Author

/azp run

@azure-pipelines
Copy link
Copy Markdown

Azure Pipelines successfully started running 1 pipeline(s).

Inlines the contents of the `DevDiv/android-platform-support` repo into
dotnet/android, removes the `BuildExternal` MSBuild target that used to
clone it, and prunes dead code carried over with the migration. The
shipped SDK pack DLLs are unchanged.

What moved in from `external/android-platform-support`:

* `src/Xamarin.AndroidTools/` - SDK probing helpers (`AndroidSdk`,
  `MonoDroidSdk`, `ProcessUtils`, etc.) used by the debugging tasks
  and the installer.
* `src/Mono.AndroidTools/` - `AndroidDevice` / `adb` client used by
  fast deployment and the debugging task assembly.
* `src/Xamarin.Android.Build.Debugging.Tasks/` - the
  `Xamarin.Android.Common.Debugging.targets` MSBuild tasks (FastDeploy,
  RunActivity, RunTests, GetGdbSymbols, ...).
* `src/Xamarin.Installer.AndroidSDK/`,
  `src/Xamarin.Installer.Build.Tasks/`,
  `src/Xamarin.Installer.Common/` - Android SDK installer used by the
  standalone Xamarin Installer / VS Mac Android workload acquisition.
* `tools/fastdev/` - native `xamarin.{sync,cp,find,stat}` helper
  binaries plus the `fastdevtools` packaging project consumed during
  fast deployment.
* `external/termux-elf-cleaner` - submodule consumed only as a
  build-time tool by the fastdev native binaries.
* `build-tools/android-platform-support/` - version/commit metadata
  for the above projects, kept under this path to preserve legacy
  file names.

Build wiring:

* `Xamarin.Android.sln` now references the inlined projects directly.
* `Directory.Build.props`, `build-tools/scripts/DotNet.targets`, and
  `build-tools/installers/create-installers.targets` lose their
  `BuildExternal` clone/build of `external/android-platform-support`
  and pick the assemblies up from the in-tree build instead.
* `installer-files.projitems` is inlined into the installer targets
  rather than imported across the submodule boundary.
* `tools/workload-dependencies/WorkloadDependencies.proj` reads its
  feed XML from a copy under `src/Xamarin.Installer.Build.Tasks/`.

Cleanup carried out as part of the migration: removed code, resources,
and tooling files that only existed to serve the standalone
`android-platform-support` build system and have no consumers in
dotnet/android.

THIRD-PARTY-NOTICES.TXT: added the Apache 2.0 notice for
`Kajabity/Kajabity.Tools.Java`, which is vendored under
`src/Xamarin.Installer.AndroidSDK/` and consumed by the
`JavaDependencyInstaller`.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@jonathanpeppers jonathanpeppers force-pushed the jonathanpeppers/inline-android-platform-support branch from 3e04b58 to 51f61b1 Compare May 28, 2026 20:18
@jonathanpeppers
Copy link
Copy Markdown
Member Author

/azp run

@azure-pipelines
Copy link
Copy Markdown

Azure Pipelines successfully started running 1 pipeline(s).

jonathanpeppers and others added 3 commits May 28, 2026 16:36
The only entry in `.external` was `DevDiv/android-platform-support`,
which is now inlined into the tree, so the whole "prepare external git
dependencies" pipeline is dead. Removes:

* The `.external` file consumer (`ExternalGitDependency`,
  `Step_PrepareExternalGitDependencies`,
  `Scenario_PrepareExternalGitDependencies`,
  `CommercialExternalDependencies`,
  `ExternalGitDepsFilePath` / `ExternalGitDepsDestDir`).
* `make prepare-external-git-dependencies` and its callers in
  `build.sh`, `build.cmd`, and the Linux/macOS CI yaml templates.
* The `PrepareExternal` MSBuild target in `PrepareWindows.targets`
  and its `vscode-support.md` documentation entries.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Carry over the exclusions that the android-platform-support repo
had for `Feeds/`, `Resources/`, and the vendored `Kajabity.Tools.Java`
sources under `src/Xamarin.Installer.AndroidSDK/`.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The existing `FolderPathFull="LOCALIZE"` exclusion is not catching
`.lcl` files under `Localize/loc/...`. Match the pattern that
android-platform-support used (`FolderPathStart="LOCALIZE\LOC"`)
so localized resource files are skipped.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@jonathanpeppers
Copy link
Copy Markdown
Member Author

/azp run

@azure-pipelines
Copy link
Copy Markdown

Azure Pipelines successfully started running 1 pipeline(s).

@jonathanpeppers jonathanpeppers force-pushed the jonathanpeppers/inline-android-platform-support branch from 627d28c to 3d5286f Compare May 28, 2026 21:43
@jonathanpeppers
Copy link
Copy Markdown
Member Author

/azp run

@azure-pipelines
Copy link
Copy Markdown

Azure Pipelines successfully started running 1 pipeline(s).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant