Skip to content

Commit

Permalink
Makefile: add command to start emulator
Browse files Browse the repository at this point in the history
Signed-off-by: kari-ts <[email protected]>
  • Loading branch information
kari-ts committed Apr 18, 2024
1 parent a54ebf7 commit ffd34ac
Showing 1 changed file with 53 additions and 2 deletions.
55 changes: 53 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,36 @@ export GOBIN
export PATH := $(PWD)/tool:$(GOBIN):$(JAVA_HOME)/bin:$(ANDROID_HOME)/cmdline-tools/latest/bin:$(ANDROID_HOME)/platform-tools:$(PATH)
export GOROOT := # Unset

base_image := "system-images;android-33;google_apis;"
AVD := "tailscale-android"

select-image:
@echo "Determining machine architecture..."
$(eval machine_arch := $(shell uname -m))
@if [ "$(machine_arch)" = "x86_64" ]; then \
echo "Using x86_64 system image"; \
AVD_IMAGE="$(base_image)x86_64"; \
elif [ "$(machine_arch)" = "aarch64" ]; then \
echo "Checking for ARM64 v8a system image..."; \
$(eval arm64_v8a_exists := $(shell $(ANDROID_HOME)/cmdline-tools/latest/bin/sdkmanager --list | grep -q "arm64-v8a" && echo yes)) \
if [ "$(arm64_v8a_exists)" = "yes" ]; then \
echo "Selected ARM64 v8a System Image"; \
AVD_IMAGE="$(base_image)arm64-v8a"; \
else \
echo "ARM64 v8a system image not available, defaulting to x86_64"; \
AVD_IMAGE="$(base_image)x86_64"; \
fi; \
else \
echo "Unsupported architecture: $(machine_arch)"; \
exit 1; \
fi; \
echo "Fallback to system architecture: $$AVD_IMAGE"; \
export AVD_IMAGE=$$AVD_IMAGE;

all: select-image
@echo "Using AVD Image: $(AVD_IMAGE)"
@echo "AVD set to: $(AVD)"

all: tailscale-debug.apk test $(DEBUG_APK) ## Build and test everything

env:
Expand Down Expand Up @@ -147,7 +177,7 @@ $(LIBTAILSCALE): Makefile android/libs $(LIBTAILSCALE_SOURCES) $(GOBIN)/gomobile
-ldflags "$(FULL_LDFLAGS)" \
-o $@ ./libtailscale

libtailscale: $(LIBTAILSCALE)
libtailscale: $(LIBTAILSCALE) ## Build libtailscale

ANDROID_SOURCES=$(shell find android -type f -not -path "android/build/*" -not -path '*/.*')
DEBUG_INTERMEDIARY = android/build/outputs/apk/debug/android-debug.apk
Expand All @@ -166,12 +196,33 @@ ANDROID_TEST_INTERMEDIARY=./android/build/outputs/apk/androidTest/applicationTes
$(ANDROID_TEST_INTERMEDIARY): $(ANDROID_SOURCES) $(LIBTAILSCALE)
cd android && ./gradlew assembleApplicationTestAndroidTest

tailscale-test.apk: $(ANDROID_TEST_INTERMEDIARY)
tailscale-test.apk: $(ANDROID_TEST_INTERMEDIARY) ## Build the test APK
mv $(ANDROID_TEST_INTERMEDIARY) $@

test: $(LIBTAILSCALE) ## Run the Android tests
(cd android && ./gradlew test)

emulator: select-image
@echo "Checking installed SDK packages..."
@if ! $(ANDROID_HOME)/cmdline-tools/latest/bin/sdkmanager --list_installed | grep -q "$(AVD_IMAGE)"; then \
echo "$(AVD_IMAGE) not found, installing..."; \
$(ANDROID_HOME)/cmdline-tools/latest/bin/sdkmanager "$(AVD_IMAGE)"; \
fi
@echo "Checking if AVD exists..."
@if ! $(ANDROID_HOME)/cmdline-tools/latest/bin/avdmanager list avd | grep -q "$(AVD)"; then \
echo "AVD $(AVD) not found, creating..."; \
$(ANDROID_HOME)/cmdline-tools/latest/bin/avdmanager create avd -n "$(AVD)" -k "$(AVD_IMAGE)"; \
fi
@echo "Starting emulator..."
@$(ANDROID_HOME)/emulator/emulator -avd "$(AVD)" -logcat-output /dev/stdout -netdelay none -netspeed full &
@echo "Waiting for emulator to fully boot..."
@$(ANDROID_HOME)/platform-tools/adb wait-for-device
@echo "Emulator booted, installing APK..."
@$(ANDROID_HOME)/platform-tools/adb install -r tailscale-debug.apk
@echo "APK installed, launching app..."
@$(ANDROID_HOME)/platform-tools/adb shell am start -n "com.tailscale.ipn/com.tailscale.ipn.MainActivity"
@echo "Tailscale launched."

install: tailscale-debug.apk ## Install the debug APK on a connected device
adb install -r $<

Expand Down

0 comments on commit ffd34ac

Please sign in to comment.