Files
AetherForge/android/build-apk.sh
AetherForge 50ebfe53cb Add Android APK fleet nodes with Crucible UI integration and tests.
APK wrapper registers platform=android via AETHERFORGE_PLATFORM; fleet UI shows robot icons, Android Access Depth probes, and a shortened mining onion timeline.
2026-06-07 02:44:29 -07:00

75 lines
2.1 KiB
Bash

#!/usr/bin/env bash
# AetherForge Android Agent APK — compile embedded agent + assembleDebug
set -euo pipefail
ROOT="$(cd "$(dirname "$0")" && pwd)"
REPO_ROOT="$(cd "$ROOT/.." && pwd)"
AGENT_DIR="$REPO_ROOT/agent"
APP_DIR="$ROOT/agent-app"
ASSETS_DIR="$APP_DIR/src/main/assets"
AGENT_ASSET="$ASSETS_DIR/agent"
CONFIG_ASSET="$ASSETS_DIR/config.json"
BUILTIN_PATH="$AGENT_DIR/config/builtin.go"
BUILTIN_BACKUP="$AGENT_DIR/config/builtin.go.android-bak"
APK_OUT="$APP_DIR/build/outputs/apk/debug/aetherforge-agent.apk"
SERVER_URL="${AETHERFORGE_SERVER_URL:-http://127.0.0.1:8989}"
WORKER_NAME="${AETHERFORGE_WORKER_NAME:-android-fleet-node}"
FLEET_SECRET="${AETHERFORGE_FLEET_SECRET:-}"
BUILD_ID="${AETHERFORGE_BUILD_ID:-android-$(date +%Y%m%d-%H%M%S)}"
restore_builtin() {
if [[ -f "$BUILTIN_BACKUP" ]]; then
mv -f "$BUILTIN_BACKUP" "$BUILTIN_PATH"
fi
}
trap restore_builtin EXIT
command -v go >/dev/null 2>&1 || { echo "go compiler not found" >&2; exit 1; }
echo "==> Baking config (server=$SERVER_URL worker=$WORKER_NAME)"
pushd "$ROOT/forge" >/dev/null
bake_args=(
run ./cmd/bake
-server "$SERVER_URL"
-worker "$WORKER_NAME"
-build-id "$BUILD_ID"
-config-out "$CONFIG_ASSET"
-builtin-out "$BUILTIN_PATH"
)
if [[ -n "$FLEET_SECRET" ]]; then
bake_args+=(-fleet-secret "$FLEET_SECRET")
fi
go "${bake_args[@]}"
popd >/dev/null
[[ -f "$BUILTIN_PATH" ]] && cp -f "$BUILTIN_PATH" "$BUILTIN_BACKUP"
echo "==> Compiling linux/arm64 agent binary"
(
cd "$AGENT_DIR"
GOOS=linux GOARCH=arm64 CGO_ENABLED=0 go build -trimpath -ldflags "-s -w" -o "$AGENT_ASSET" .
)
echo " agent binary: $(wc -c <"$AGENT_ASSET") bytes -> $AGENT_ASSET"
export ANDROID_HOME="${ANDROID_HOME:-${ANDROID_SDK_ROOT:-}}"
if [[ -z "$ANDROID_HOME" ]]; then
echo "ANDROID_HOME (or ANDROID_SDK_ROOT) is required for Gradle assembleDebug" >&2
exit 1
fi
if [[ ! -x "$APP_DIR/gradlew" ]]; then
echo "Gradle wrapper missing. Run: cd android/agent-app && gradle wrapper" >&2
exit 1
fi
echo "==> Gradle assembleDebug"
(
cd "$APP_DIR"
./gradlew assembleDebug --no-daemon
)
[[ -f "$APK_OUT" ]] || { echo "APK not found at $APK_OUT" >&2; exit 1; }
echo "==> APK ready: $APK_OUT"