dotnet / dotnet/android

Add ADB wrapper (adb CLI)

Open
#12,071 0 comments 0 reactions 0 assignees View on GitHub
android-tools needs-triage
Dominant language
C#
Stars
2.1k
Forks
579
Avg merge
1d 21h
Merged PRs (30d)
257

Description

## Summary

Add `AdbRunner` class to `Xamarin.Android.Tools.AndroidSdk` to wrap `adb` CLI operations for device management.

## Background

The MAUI DevTools CLI and IDE extensions need to list connected devices, start/stop the ADB server, and query device state. This functionality should live in the shared `android-tools` package.

Reference implementation exists in `android-platform-support` (internal) `Mono.AndroidTools.Adb`.

## Proposed API Surface

`csharp
public class AdbRunner
{
Task> GetDevicesAsync(CancellationToken ct = default);
Task StartServerAsync(CancellationToken ct = default);
Task KillServerAsync(CancellationToken ct = default);
Task WaitForDeviceAsync(string serial, CancellationToken ct = default);
}

public record AndroidDeviceInfo(string Serial, DeviceState State, string? Model, string? Product, TransportType Transport);
public enum DeviceState { Unknown, Offline, Device, NoDevice, Recovery, Sideload, Unauthorized }
public enum TransportType { Unknown, Usb, Emulator }
`

## Consumer

- **MAUI DevTools CLI** (`maui android devices`) — see [MAUI DevTools Spec PR](https://github.com/dotnet/maui/pull/33865)
- VS/VS Code extensions for device picker

## Related

- dotnet/android-tools#271 (SDK bootstrap)
- MAUI DevTools spec §6.8: Shared Libraries & Code Reuse

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.