#!/usr/bin/env bash # resolves and exports jdk, android sdk, and ndk paths. set -euo pipefail REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)" # jdk 17 resolution if [[ -z "${JAVA_HOME:-}" ]]; then for candidate 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 "$candidate/bin/java" ]]; then export JAVA_HOME="$candidate" break fi done fi if [[ -z "${JAVA_HOME:-}" || ! -x "$JAVA_HOME/bin/java" ]]; then echo "JAVA_HOME not resolved. install jdk 17 (brew install openjdk@17 or sdk install java 17.0.19-tem)." >&2 exit 2 fi # android sdk resolution if [[ -z "${ANDROID_HOME:-}" ]]; then for candidate in \ "/opt/homebrew/share/android-commandlinetools" \ "/usr/local/share/android-commandlinetools" \ "$HOME/Library/Android/sdk" \ "$HOME/Android/Sdk"; do if [[ -d "$candidate/platform-tools" || -d "$candidate/cmdline-tools" ]]; then export ANDROID_HOME="$candidate" break fi done fi if [[ -z "${ANDROID_HOME:-}" || ! -d "$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" # ndk version sourced from .android-sdk-packages NDK_COORD="$(grep -E '^ndk;' "$REPO_ROOT/.android-sdk-packages" | head -1 | tr -d ' ')" NDK_VERSION="${NDK_COORD#ndk;}" if [[ -z "$NDK_VERSION" ]]; then echo ".android-sdk-packages missing an 'ndk;' entry." >&2 exit 2 fi export ANDROID_NDK_HOME="$ANDROID_HOME/ndk/$NDK_VERSION" export ANDROID_NDK_ROOT="$ANDROID_NDK_HOME" if [[ ! -d "$ANDROID_NDK_HOME" ]]; then echo "NDK $NDK_VERSION missing at $ANDROID_NDK_HOME — run scripts/android/bootstrap.sh." >&2 exit 2 fi # prepends jdk and android sdk binaries to PATH export PATH="$JAVA_HOME/bin:$ANDROID_HOME/platform-tools:$ANDROID_HOME/cmdline-tools/latest/bin:$PATH" # target device serial ANDROID_TARGET_FILE="$REPO_ROOT/.yrxtls-android-target" ANDROID_TARGET="${YRXTALS_ANDROID_DEVICE:-}" if [[ -z "$ANDROID_TARGET" && -f "$ANDROID_TARGET_FILE" ]]; then ANDROID_TARGET="$(cat "$ANDROID_TARGET_FILE")" fi export ANDROID_TARGET