YrXtals/scripts/android/_env.sh

68 lines
2.3 KiB
Bash
Executable File

#!/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;<version>' 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