asd Android SDK Downloader — offline-friendly SDK component installer

FAQ

asd says the CSV file wasn’t found — what do I do?

Run asd --update to download the registry, or set ASD_CSV to a location where it already exists. Any command that reads the registry will show this if $ASD_CSV points somewhere empty.

Do I need sudo to use asd?

Only if the directories you’re using ($ANDROID_HOME, $ASD_CSV, or the install target for setup) aren’t writable by your user. Point them at user-owned paths and asd never calls sudo. See Bypassing sudo.

asd <name> says the package wasn’t found. What’s wrong?

Either the registry is stale (run --update) or the name doesn’t match. Confirm the exact package path with asd --list <name> — package paths use ; to separate a group from its version, e.g. ndk;27.0.12077973.

How is this different from sdkmanager?

asd fetches archives from the Myket mirror instead of Google’s servers, resolves package lookups from a local CSV instead of a live index, and downloads with aria2c for multi-connection speed. It writes the same package.xml layout sdkmanager expects, so both tools — and Android Studio — recognize components installed by either one.

Why does --verify re-download the whole archive?

The SHA-1 checksum is only meaningful against the original archive, and asd doesn’t keep downloaded archives around after extraction — so verifying integrity means fetching it again. See Repairing & Verifying for when to reach for --verify versus the lighter-weight --fix.

Can I use asd on Windows?

Not directly — it’s a Bash script. The registry itself is also filtered to exclude Windows/macOS-only entries on every --update. WSL works fine since it’s just Bash plus the usual CLI tools.

What if --remove deletes more than I expected?

asd --remove ndk removes every installed version matching ndk, not a single one — see --remove for the exact matching rules before running it.