APK wrapper registers platform=android via AETHERFORGE_PLATFORM; fleet UI shows robot icons, Android Access Depth probes, and a shortened mining onion timeline.
75 lines
2.1 KiB
Bash
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"
|