#!/usr/bin/env bash # installs every android sdk package listed in .android-sdk-packages. set -euo pipefail REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)" # resolves JAVA_HOME and ANDROID_HOME from common install locations SDK_PKGS_FILE="$REPO_ROOT/.android-sdk-packages" if [[ ! -f "$SDK_PKGS_FILE" ]]; then echo ".android-sdk-packages missing at repo root." >&2 exit 2 fi if [[ -z "${JAVA_HOME:-}" ]]; then for c in /opt/homebrew/opt/openjdk@17/libexec/openjdk.jdk/Contents/Home \ /usr/local/opt/openjdk@17/libexec/openjdk.jdk/Contents/Home \ "$HOME/.sdkman/candidates/java/current"; do if [[ -x "$c/bin/java" ]]; then export JAVA_HOME="$c"; break; fi done fi if [[ -z "${JAVA_HOME:-}" ]]; then echo "JAVA_HOME not resolved. install jdk 17." >&2; exit 2 fi if [[ -z "${ANDROID_HOME:-}" ]]; then for c in /opt/homebrew/share/android-commandlinetools \ /usr/local/share/android-commandlinetools \ "$HOME/Library/Android/sdk" \ "$HOME/Android/Sdk"; do if [[ -d "$c/cmdline-tools" ]]; then export ANDROID_HOME="$c"; break; fi done fi if [[ -z "${ANDROID_HOME:-}" ]]; then echo "ANDROID_HOME not resolved. install via brew install --cask android-commandlinetools." >&2; exit 2 fi export ANDROID_SDK_ROOT="$ANDROID_HOME" SDKMGR="$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager" if [[ ! -x "$SDKMGR" ]]; then echo "sdkmanager missing at $SDKMGR." >&2; exit 2 fi # accepts all sdk licenses idempotently yes 2>/dev/null | "$SDKMGR" --licenses >/dev/null || true mapfile -t PKGS < <(grep -Ev '^\s*(#|$)' "$SDK_PKGS_FILE") echo "installing: ${PKGS[*]}" "$SDKMGR" --install "${PKGS[@]}" echo "bootstrap done."