dotnet / dotnet/android

Add manifest feed parsing for SDK/JDK download resolution (move from android-platform-support)

Open
#12,068 2 comments 1 reaction 2 assignees Claimed by @rmarinho View on GitHub
android-tools enhancement needs-triage
Dominant language
C#
Stars
2.1k
Forks
579
Avg merge
1d 19h
Merged PRs (30d)
252

Description

## Summary

Add manifest feed parsing to `Xamarin.Android.Tools.AndroidSdk` so that consumers can resolve SDK/JDK download URLs and checksums from the Xamarin Android Manifest Feed and Google's repository without hardcoding URLs.

## Background

The `android-platform-support` (internal) repository has `XamarinRepository` and `GoogleV2Repository` classes that parse:

- **Xamarin Android Manifest Feed** (`https://aka.ms/AndroidManifestFeed/d{version}`) — JDK archives, platform-tools, command-line tools, emulator with per-platform/architecture URLs and SHA-1 checksums
- **Google SDK Repository** (`https://dl.google.com/android/repository/repository2-3.xml`) — SDK platforms, build-tools, system images, add-ons with SHA-1 checksums

It also includes `LocalManifestProvider` for offline/CI manifest caching.

This is a prerequisite for the JDK installation (#270) and SDK bootstrap (#271) features — both need manifest feed parsing to resolve download URLs and verify checksums.

## Proposed API Surface

- `ManifestFeed.LoadAsync(feedUrl)` — download and parse a manifest feed
- `ManifestFeed.ResolvePackage(packageId, os, arch)` — get download URL + SHA-1 for a specific package
- `ManifestFeed.GetJdkVersions()` — list available JDK versions with download info
- `ManifestFeed.Cache(localPath)` — cache manifest for offline use

## Key Requirements

- **No hardcoded download URLs** — all URLs come from manifest feeds
- **SHA-1 checksum verification** — every download must be verified against manifest checksums
- **Manifest caching** — support offline/CI scenarios with cached manifests
- **Cross-platform** — resolve correct URLs for Windows/macOS/Linux and x64/aarch64

## Consumer

- **MAUI DevTools CLI** — see [MAUI DevTools Spec PR](https://github.com/dotnet/maui/pull/33865)
- JDK installation (#270) and SDK bootstrap (#271) depend on this

## Related

- MAUI DevTools spec §6.8.1: Manifest-Driven Downloads & Checksum Verification
- dotnet/android-tools#270 (JDK installation)
- dotnet/android-tools#271 (SDK bootstrap)

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.