android-sdk
| Version | 2026.145.1302 |
| Repo | superproject |
Android SDK toolchain (sdkmanager/adb/aapt2/emulator + API-36 system image) under /opt/android-sdk
Installs the Android SDK from CachyOS/AUR packages under
/opt/android-sdk: cmdline-tools (sdkmanager/avdmanager),
platform-tools (adb), build-tools 36 (aapt2), platform android-36,
and the emulator; plus apkeep (the by-package-name app downloader
the charly check adb install-app verb drives IN the pod), installed
from its upstream precompiled x86_64 binary. The one component with
NO package anywhere — the API-36 google_apis_playstore x86_64 system
image — is fetched by sdkmanager into a persistent cache and copied
alongside the AUR-installed tools. Every artifact is a fixed path
under /opt/android-sdk, so the SDK is verifiable by probing those
paths and running adb.
Acceptance plan
Section titled “Acceptance plan”This candy’s plan: — the runnable spec charly check executes against a live deployment. check: steps are idempotent probes; run: steps change state.
| Intent | Step |
|---|---|
run |
download=https://github.com/EFForg/apkeep/releases/download/${APKEEP_VERSION}/apkeep-x86_64-unknown-linux-gnu |
run |
command=set -euo pipefail export JAVA_HOME=/usr/lib/jvm/charly-jdk21 export PATH=“$JAVA_HOME/bin:/opt/android-sdk/cmdline-tools/latest/bin:$PATH” SDK_CACHE=/var/cache/charly-android-sysimg SYSIMG=“system-images;android-${EMULATOR_API_LEVEL};${EMULATOR_IMG_TYPE};${EMULATOR_SYS_IMG}” SENTINEL=“${SDK_CACHE}/.charly-sysimg-complete-${EMULATOR_API_LEVEL}-${EMULATOR_IMG_TYPE}” if [ ! -f “${SENTINEL}” ]; then # Bounded for-loop emits enough y’s for the license prompts without # the SIGPIPE that yes | sdkmanager triggers under pipefail. for _ in $(seq 1 100); do echo y; done | sdkmanager –sdk_root=“${SDK_CACHE}” –licenses >/dev/null sdkmanager –sdk_root=“${SDK_CACHE}” “${SYSIMG}” touch “${SENTINEL}” fi mkdir -p /opt/android-sdk/system-images cp -a “${SDK_CACHE}/system-images/.” /opt/android-sdk/system-images/ |
check |
the cmdline-tools sdkmanager lands under /opt/android-sdk |
check |
platform-tools provides adb |
check |
build-tools 36 provides aapt2 (Appium’s ADB badging probe needs it) |
check |
the emulator binary is installed |
check |
adb runs and reports the Android Debug Bridge banner |
check |
apkeep (the by-package-name app downloader) is installed and on PATH |
check |
the android-36 platform is installed |
check |
the sdkmanager-fetched google_apis_playstore x86_64 system image is present |
check |
file=/opt/android-sdk/cmdline-tools/latest/bin/avdmanager |