YrXtals/scripts/android/bootstrap.sh

51 lines
1.7 KiB
Bash
Executable File

#!/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."