#!/usr/bin/env bash # compiles the aarch64-linux-android cdylib into jniLibs and assembles the apk via gradle. set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" source "$SCRIPT_DIR/_env.sh" REPO_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)" GRADLE_TYPE="${1:-release}" case "$GRADLE_TYPE" in debug|release|release-debug) ;; *) echo "unknown gradle type: $GRADLE_TYPE (debug|release|release-debug)" >&2; exit 2 ;; esac # YRXTALS_ANDROID_CARGO_PROFILE overrides the rust profile, defaulting to the gradle type CARGO_PROFILE="${YRXTALS_ANDROID_CARGO_PROFILE:-}" if [[ -z "$CARGO_PROFILE" ]]; then case "$GRADLE_TYPE" in debug) CARGO_PROFILE="dev" ;; release) CARGO_PROFILE="release" ;; release-debug) CARGO_PROFILE="release-debug" ;; esac fi bash "$SCRIPT_DIR/generate-icons.sh" JNILIBS="$REPO_ROOT/android/app/src/main/jniLibs" mkdir -p "$JNILIBS/arm64-v8a" CARGO_NDK_FLAGS=( -t arm64-v8a -P 28 -o "$JNILIBS" build ) [[ "$CARGO_PROFILE" != "dev" ]] && CARGO_NDK_FLAGS+=( --profile "$CARGO_PROFILE" ) echo "→ cargo ndk ${CARGO_NDK_FLAGS[*]} (profile=$CARGO_PROFILE)" ( cd "$REPO_ROOT" && cargo ndk "${CARGO_NDK_FLAGS[@]}" ) case "$GRADLE_TYPE" in debug) GRADLE_TASK="assembleDebug"; APK_VARIANT_DIR="debug" ;; release) GRADLE_TASK="assembleRelease"; APK_VARIANT_DIR="release" ;; release-debug) GRADLE_TASK="assembleReleaseDebug"; APK_VARIANT_DIR="releaseDebug" ;; esac echo "→ gradlew $GRADLE_TASK" ( cd "$REPO_ROOT/android" && ./gradlew "$GRADLE_TASK" ) APK_DIR="$REPO_ROOT/android/app/build/outputs/apk/$APK_VARIANT_DIR" echo "apk at: $(find "$APK_DIR" -name '*.apk' | head -1)"