Files
crkl/scripts/start-emulator-launchd.sh
T
ilia cbed90db21 Ship Circle 1.16.2: overlay assist, brand, and smoke tooling
VIP loop (circle → extract → Translate/Copy/Explain/Share/Vikunja),
lasso branding, ship docs, unit tests, and make smoke / launchd emu helpers.
2026-08-05 12:26:51 -04:00

53 lines
1.8 KiB
Bash
Executable File

#!/usr/bin/env bash
# Start CrklEmulator via launchd so qemu survives Cursor/agent sandboxes on macOS.
set -euo pipefail
BREW_PREFIX="$(brew --prefix 2>/dev/null || echo /opt/homebrew)"
ANDROID_HOME="${ANDROID_HOME:-$BREW_PREFIX/share/android-commandlinetools}"
AVD_NAME="${AVD_NAME:-CrklEmulator}"
GPU="${EMULATOR_GPU:-host}"
LABEL=com.crkl.emulator
PLIST="/tmp/${LABEL}.plist"
UID_NUM="$(id -u)"
pkill -f 'qemu-system' >/dev/null 2>&1 || true
launchctl bootout "gui/${UID_NUM}/${LABEL}" >/dev/null 2>&1 || true
sleep 1
: >/tmp/crkl-emulator.log
cat >"$PLIST" <<EOF
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key><string>${LABEL}</string>
<key>ProgramArguments</key>
<array>
<string>${ANDROID_HOME}/emulator/emulator</string>
<string>-avd</string><string>${AVD_NAME}</string>
<string>-memory</string><string>3072</string>
<string>-cores</string><string>4</string>
<string>-no-audio</string>
<string>-gpu</string><string>${GPU}</string>
<string>-accel</string><string>on</string>
<string>-no-snapshot-load</string>
<string>-grpc</string><string>8554</string>
<string>-no-metrics</string>
</array>
<key>EnvironmentVariables</key>
<dict>
<key>ANDROID_HOME</key><string>${ANDROID_HOME}</string>
<key>PATH</key>
<string>${ANDROID_HOME}/emulator:${ANDROID_HOME}/platform-tools:/usr/bin:/bin</string>
</dict>
<key>StandardOutPath</key><string>/tmp/crkl-emulator.log</string>
<key>StandardErrorPath</key><string>/tmp/crkl-emulator.log</string>
<key>RunAtLoad</key><true/>
</dict>
</plist>
EOF
launchctl bootstrap "gui/${UID_NUM}" "$PLIST"
launchctl kickstart -k "gui/${UID_NUM}/${LABEL}"
echo "Emulator launchd job ${LABEL} started (log: /tmp/crkl-emulator.log)"