build(make): add qemu Android AVD install targets
Targets for building and installing PostIt.Android (Debug) on the local postit_test_avd AVD without leaving the terminal: make qemu # run AVD -> wait boot -> build APK -> install make qemu-install # (re)build APK + install (AVD must be running) make qemu-build # build APK alone (no install) make qemu-run # start the AVD in the background make qemu-wait-boot # block until sys.boot_completed=1 (180s timeout) make qemu-stop # adb emu kill Defaults match the local setup: AVD postit_test_avd on x86_64 (android-x64 RID), adb on emulator-5554, Android SDK at /opt/android-sdk. All overridable on the command line: make qemu POSTIT_RID=android-arm64 ADB_SERIAL=emulator-5556 EMU_HEADLESS=1 disables the emulator window for scripted runs. qemu-run logs to /tmp/yavsc-emu/<avd>.log. Validated end-to-end on this machine: AVD booted in 109s on a loaded system, APK built and installed cleanly. The 'UI not responsive' warning is the software-rendering fallback when KVM is busy; it does not block the install.
This commit is contained in:
parent
61b41f0c55
commit
4b35625cb4
1 changed files with 80 additions and 1 deletions
81
Makefile
81
Makefile
|
|
@ -121,4 +121,83 @@ release:
|
|||
git push -u origin "$$BRANCH"; \
|
||||
echo "==> Terminé. Branche $$BRANCH live sur origin."
|
||||
|
||||
.PHONY: test release
|
||||
# Cibles pour installer PostIt.Android en Debug sur l'AVD qemu.
|
||||
#
|
||||
# Usage typique :
|
||||
# make qemu # lance l'AVD, attend le boot, build l'APK, l'installe
|
||||
# make qemu-install # (re)build l'APK et l'installe (AVD doit tourner)
|
||||
# make qemu-build # build l'APK seul (sans install)
|
||||
# make qemu-run # démarre l'AVD en background
|
||||
# make qemu-stop # arrête l'émulateur
|
||||
# make qemu-wait-boot # attend que l'AVD ait fini de booter
|
||||
#
|
||||
# Variables surchargeables (make VAR=valeur) :
|
||||
# AVD_NAME default: postit_test_avd
|
||||
# (l'AVD doit être listé par `avdmanager list avd`)
|
||||
# ADB_SERIAL default: emulator-5554
|
||||
# (port standard du premier émulateur lancé)
|
||||
# ANDROID_HOME default: /opt/android-sdk
|
||||
# (le SDK Android local; doit contenir
|
||||
# emulator/emulator et platform-tools/adb)
|
||||
# POSTIT_RID default: android-x64
|
||||
# (doit matcher l'ABI de l'AVD; `avdmanager list avd`
|
||||
# affiche la ligne Tag/ABI)
|
||||
# EMU_HEADLESS default: 0
|
||||
# (1 = lancer l'émulateur sans fenêtre, pour scripter)
|
||||
AVD_NAME ?= postit_test_avd
|
||||
ADB_SERIAL ?= emulator-5554
|
||||
ANDROID_HOME ?= /opt/android-sdk
|
||||
POSTIT_RID ?= android-x64
|
||||
EMU_HEADLESS ?= 0
|
||||
|
||||
POSTIT_ANDROID_CSPROJ := src/PostIt/PostIt.Android/PostIt.Android.csproj
|
||||
POSTIT_APK_DIR := src/PostIt/PostIt.Android/bin/Debug/net10.0-android/$(POSTIT_RID)
|
||||
POSTIT_APK := $(POSTIT_APK_DIR)/com.CompanyName.PostIt-Signed.apk
|
||||
|
||||
qemu-run:
|
||||
@echo " Starting AVD $(AVD_NAME) on $(ADB_SERIAL)..."
|
||||
@mkdir -p /tmp/yavsc-emu
|
||||
@EMU_ARGS=""; \
|
||||
if [ "$(EMU_HEADLESS)" = "1" ]; then EMU_ARGS="-no-window -no-audio"; fi; \
|
||||
$(ANDROID_HOME)/emulator/emulator -avd $(AVD_NAME) $$EMU_ARGS \
|
||||
>/tmp/yavsc-emu/$(AVD_NAME).log 2>&1 & \
|
||||
echo " emulator PID: $$!"
|
||||
|
||||
qemu-stop:
|
||||
adb -s $(ADB_SERIAL) emu kill
|
||||
|
||||
qemu-wait-boot:
|
||||
@echo " Waiting for $(ADB_SERIAL) to finish booting..."
|
||||
adb -s $(ADB_SERIAL) wait-for-device
|
||||
@for i in $$(seq 1 180); do \
|
||||
BOOTED=$$(adb -s $(ADB_SERIAL) shell getprop sys.boot_completed 2>/dev/null | tr -d '\r\n'); \
|
||||
if [ "$$BOOTED" = "1" ]; then \
|
||||
echo " ✓ booted in $${i}s"; \
|
||||
exit 0; \
|
||||
fi; \
|
||||
sleep 1; \
|
||||
done; \
|
||||
echo " ERROR: device did not boot within 180s." >&2; \
|
||||
echo " Logs: /tmp/yavsc-emu/$(AVD_NAME).log" >&2; \
|
||||
exit 1
|
||||
|
||||
qemu-build:
|
||||
dotnet build $(POSTIT_ANDROID_CSPROJ) \
|
||||
-c Debug \
|
||||
-p:RuntimeIdentifier=$(POSTIT_RID) \
|
||||
--nologo
|
||||
|
||||
qemu-install: qemu-build
|
||||
@if [ ! -f "$(POSTIT_APK)" ]; then \
|
||||
echo " APK not found at $(POSTIT_APK)." >&2; \
|
||||
echo " Files in $(POSTIT_APK_DIR):" >&2; \
|
||||
ls -la "$(POSTIT_APK_DIR)" 2>/dev/null || echo " (directory does not exist)" >&2; \
|
||||
exit 1; \
|
||||
fi
|
||||
@echo " Installing $(POSTIT_APK) on $(ADB_SERIAL)..."
|
||||
adb -s $(ADB_SERIAL) install -r "$(POSTIT_APK)"
|
||||
|
||||
qemu: qemu-run qemu-wait-boot qemu-install
|
||||
@echo " ✓ PostIt.Android installed on $(ADB_SERIAL)"
|
||||
|
||||
.PHONY: test release qemu qemu-run qemu-stop qemu-wait-boot qemu-build qemu-install
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue