Summary
Add SDK bootstrap and management capabilities to Xamarin.Android.Tools.AndroidSdk so that consumers can programmatically set up an Android SDK from scratch and manage packages via sdkmanager.
Background
The android-platform-support (internal) repository has AndroidSDKInstaller with a full SDK install pipeline. For the public package, we want a simpler approach:
- Bootstrap: Download and unzip Android command-line tools from the manifest feed (no hardcoded URLs)
- Manage: Use the extracted
sdkmanager CLI for package install/uninstall/list/update operations
This is needed by MAUI DevTools CLI (maui android install, maui android sdk install/list/uninstall).
Proposed API Surface
SdkManager.BootstrapAsync(targetPath) — download command-line tools from manifest feed, SHA-1 verify, unzip to cmdline-tools/latest/
SdkManager.InstallAsync(packages) — invoke sdkmanager to install packages
SdkManager.UninstallAsync(packages) — invoke sdkmanager to uninstall packages
SdkManager.ListAsync() — list installed and available packages
SdkManager.UpdateAsync() — update all installed packages
Bootstrap Flow
- Read manifest feed → resolve command-line tools URL + SHA-1 checksum for current OS/arch
- Download & verify command-line tools archive
- Unzip to
\/cmdline-tools/latest/
- Use the now-available
sdkmanager for all subsequent operations
Manifest Feeds
- Xamarin Android Manifest:
https://aka.ms/AndroidManifestFeed/d{version} — command-line tools, platform-tools, emulator
- Google SDK Repository:
https://dl.google.com/android/repository/repository2-3.xml — platforms, build-tools, system images
All downloads must be SHA-1 verified against manifest checksums before installation.
Consumer
Related
- MAUI DevTools spec §6.8: Shared Libraries & Code Reuse
- MAUI DevTools spec §6.8.1: Manifest-Driven Downloads & Checksum Verification
Summary
Add SDK bootstrap and management capabilities to
Xamarin.Android.Tools.AndroidSdkso that consumers can programmatically set up an Android SDK from scratch and manage packages viasdkmanager.Background
The
android-platform-support(internal) repository hasAndroidSDKInstallerwith a full SDK install pipeline. For the public package, we want a simpler approach:sdkmanagerCLI for package install/uninstall/list/update operationsThis is needed by MAUI DevTools CLI (
maui android install,maui android sdk install/list/uninstall).Proposed API Surface
SdkManager.BootstrapAsync(targetPath)— download command-line tools from manifest feed, SHA-1 verify, unzip tocmdline-tools/latest/SdkManager.InstallAsync(packages)— invokesdkmanagerto install packagesSdkManager.UninstallAsync(packages)— invokesdkmanagerto uninstall packagesSdkManager.ListAsync()— list installed and available packagesSdkManager.UpdateAsync()— update all installed packagesBootstrap Flow
\/cmdline-tools/latest/sdkmanagerfor all subsequent operationsManifest Feeds
https://aka.ms/AndroidManifestFeed/d{version}— command-line tools, platform-tools, emulatorhttps://dl.google.com/android/repository/repository2-3.xml— platforms, build-tools, system imagesAll downloads must be SHA-1 verified against manifest checksums before installation.
Consumer
Related