#!/usr/bin/env bash set -euo pipefail repo_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" is_java_home_usable() { local candidate="${1:-}" if [[ -z "$candidate" || ! -x "$candidate/bin/java" || ! -x "$candidate/bin/javac" ]]; then return 1 fi local version version="$("$candidate/bin/javac" -version 2>&1 | awk '{print $2}' | cut -d. -f1)" [[ "$version" =~ ^[0-9]+$ ]] || return 1 [[ "$version" -ge 17 ]] } resolve_java_home_from_path() { if ! command -v javac >/dev/null 2>&1; then return 1 fi local javac_path candidate javac_path="$(readlink -f "$(command -v javac)")" candidate="$(cd "$(dirname "$javac_path")/.." && pwd)" if is_java_home_usable "$candidate"; then printf '%s\n' "$candidate" return 0 fi return 1 } resolve_java_home() { if is_java_home_usable "${JAVA_HOME:-}"; then printf '%s\n' "$JAVA_HOME" return 0 fi if resolve_java_home_from_path >/dev/null 2>&1; then resolve_java_home_from_path return 0 fi return 1 } is_sdk_dir_usable() { local candidate="${1:-}" [[ -n "$candidate" && -x "$candidate/cmdline-tools/latest/bin/sdkmanager" ]] } resolve_sdk_dir() { local candidates=( "${ANDROID_SDK_ROOT:-}" "${ANDROID_HOME:-}" "$HOME/Android/Sdk" "$HOME/android-sdk" "/opt/android-sdk" "/usr/lib/android-sdk" ) local candidate for candidate in "${candidates[@]}"; do if is_sdk_dir_usable "$candidate"; then printf '%s\n' "$candidate" return 0 fi done return 1 } write_local_properties() { local sdk_dir="$1" printf 'sdk.dir=%s\n' "$sdk_dir" > "$repo_root/local.properties" } JAVA_HOME="$(resolve_java_home)" || { echo "Missing usable JDK 17+." >&2 echo "Install openjdk-17-jdk globally and make it available via JAVA_HOME or PATH." >&2 return 1 2>/dev/null || exit 1 } ANDROID_SDK_ROOT="$(resolve_sdk_dir)" || { echo "Missing usable Android SDK." >&2 echo "Expected cmdline-tools/latest/bin/sdkmanager in one of:" >&2 echo " \$ANDROID_SDK_ROOT, \$ANDROID_HOME, \$HOME/Android/Sdk, \$HOME/android-sdk, /opt/android-sdk, or /usr/lib/android-sdk" >&2 return 1 2>/dev/null || exit 1 } export JAVA_HOME export ANDROID_SDK_ROOT export ANDROID_HOME="$ANDROID_SDK_ROOT" export PATH="$JAVA_HOME/bin:$ANDROID_SDK_ROOT/platform-tools:$PATH" write_local_properties "$ANDROID_SDK_ROOT" echo "JAVA_HOME=$JAVA_HOME" echo "ANDROID_SDK_ROOT=$ANDROID_SDK_ROOT" echo "ANDROID_TOOLCHAIN_ORIGIN=global"