as-app/install-android.sh
2025-10-01 22:35:14 +02:00

75 lines
2.3 KiB
Bash
Executable file

#!/usr/bin/env bash
set -euo pipefail
# Repo root (this script lives at repo root)
ROOT_DIR="$(cd "$(dirname "$0")"; pwd)"
# Auto-pick a single target device if DEVICE not provided
DEVICE="${DEVICE:-}"
if [ -z "$DEVICE" ]; then
EMU=$(adb devices | awk '/^emulator-/{print $1}' | head -n1)
USB=$(adb devices -l | awk '/ device usb:/{print $1}' | head -n1)
if [ -n "$EMU" ] && [ -z "$USB" ]; then DEVICE="$EMU"; fi
if [ -n "$USB" ] && [ -z "$EMU" ]; then DEVICE="$USB"; fi
fi
if [ -z "$DEVICE" ]; then
echo "Error: DEVICE not set and could not auto-detect a single target." >&2
echo "Usage: DEVICE=<adb-serial> ./install-android.sh [AAB_PATH]" >&2
exit 1
fi
# Optional first arg: override AAB path, otherwise auto-detect newest release AAB
AAB_PATH="${1:-}"
if [ -z "$AAB_PATH" ]; then
AAB_PATH="$("$ROOT_DIR/scripts/find-latest-aab.sh")"
fi
if [ ! -f "$AAB_PATH" ]; then
echo "AAB not found: $AAB_PATH" >&2
exit 1
fi
# Bundletool path (override with BUNDLETOOL=/path/to/bundletool.jar)
BUNDLETOOL="${BUNDLETOOL:-/opt/bundletool-all-1.17.1.jar}"
# Temp output dir
OUT_DIR="$(mktemp -d)"
APKS_PATH="$OUT_DIR/app.apks"
echo "Target device: $DEVICE"
echo "Using AAB: $AAB_PATH"
echo "Bundletool: $BUNDLETOOL"
# Default: generate APKs optimized for the connected device.
# Set CONNECTED_DEVICE=0 to force universal APK generation/install.
if [ "${CONNECTED_DEVICE:-1}" = "1" ]; then
echo "Building device-optimized APKs for connected device..."
java -jar "$BUNDLETOOL" build-apks \
--connected-device \
--bundle "$AAB_PATH" \
--output "$APKS_PATH" \
--ks "$ROOT_DIR/android/app/debug.keystore" \
--ks-pass pass:android \
--ks-key-alias androiddebugkey \
--key-pass pass:android
echo "Installing APKs to $DEVICE..."
java -jar "$BUNDLETOOL" install-apks --device-id "$DEVICE" --apks "$APKS_PATH"
else
echo "Building universal APK..."
java -jar "$BUNDLETOOL" build-apks \
--mode universal \
--bundle "$AAB_PATH" \
--output "$APKS_PATH" \
--ks "$ROOT_DIR/android/app/debug.keystore" \
--ks-pass pass:android \
--ks-key-alias androiddebugkey \
--key-pass pass:android
echo "Extracting and installing universal APK..."
unzip -o "$APKS_PATH" -d "$OUT_DIR" >/dev/null
adb -s "$DEVICE" install -r "$OUT_DIR/universal.apk"
fi
echo "Installation complete on $DEVICE"