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.
This commit is contained in:
74
android/build-apk.sh
Normal file
74
android/build-apk.sh
Normal file
@@ -0,0 +1,74 @@
|
||||
#!/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"
|
||||
Reference in New Issue
Block a user