Skip to content
Latchkey

sdkmanager: Install Android SDK Packages in CI

sdkmanager downloads and installs Android SDK packages named by their path, such as "platforms;android-34" or "build-tools;34.0.0".

A clean CI image rarely has the exact SDK your build needs. sdkmanager provisions platforms, build-tools, and the emulator non-interactively, as long as you get the package paths and licenses right.

What it does

sdkmanager, shipped in cmdline-tools, manages Android SDK packages. You pass one or more package paths (semicolon-delimited coordinates) to install them, --list to see what is available, and --update to bring installed packages current. It writes into the SDK root.

Common usage

Terminal
sdkmanager --list | head
sdkmanager "platform-tools" "platforms;android-34" "build-tools;34.0.0"
sdkmanager "emulator" "system-images;android-34;google_apis;x86_64"
sdkmanager --sdk_root=$ANDROID_HOME "cmdline-tools;latest"

Options

Flag / argWhat it does
<package;path>Install a package by its coordinate
--listList installed and available packages
--updateUpdate all installed packages
--sdk_root=<dir>Target a specific SDK directory
--channel=<0-3>Use stable(0), beta, dev, or canary channel
--install / --uninstallExplicit install or removal (install is default)

In CI

Pin exact versions ("build-tools;34.0.0", not "latest") so builds are reproducible across runner image updates. Point ANDROID_HOME/ANDROID_SDK_ROOT at a cached directory and restore it between runs to skip re-downloading gigabytes of system images.

Common errors in CI

"Warning: Failed to read or create install properties file" means the SDK root is not writable; fix permissions or set --sdk_root. "Could not find package ... available packages" means a mistyped coordinate; check sdkmanager --list. On newer JDKs, "Exception ... NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema" means the old sdkmanager needs JAXB; use the cmdline-tools version bundled with a modern JDK. Licenses must be accepted first (see the licenses page).

Related guides

Run this faster and cheaper on Latchkey managed runners. Start free →