51 lines
1.7 KiB
Bash
Executable File
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."
|