# Crkl - Physical Phone Development .PHONY: help setup-sdk build install run stop logs clean uninstall devices check-device ANDROID_HOME ?= $(HOME)/android-sdk ADB := $(ANDROID_HOME)/platform-tools/adb GRADLEW := ./gradlew APK := app/build/outputs/apk/debug/app-debug.apk help: ## Show available commands @echo "Crkl - Android Development Commands" @echo "" @echo "Setup Commands:" @echo " make setup-sdk - Install Android SDK and tools" @echo " make setup-emulator - Create and start Android emulator" @echo " make check-device - Check if device/emulator is connected" @echo " make devices - List connected devices/emulators" @echo "" @echo "Emulator Commands:" @echo " make emulator - Start Android emulator" @echo " make emulator-stop - Stop emulator" @echo " make emulator-list - List available emulators" @echo "" @echo "Development Commands:" @echo " make build - Build APK" @echo " make install - Install to device/emulator" @echo " make run - Launch app" @echo " make logs - Watch app logs" @echo " make stop - Stop app" @echo " make clean - Clean build" @echo " make uninstall - Remove app" @echo "" setup-sdk: ## Install Android SDK and tools @echo "Setting up Android SDK..." @mkdir -p $(ANDROID_HOME) @cd $(ANDROID_HOME) && \ if [ ! -f cmdline-tools/latest/bin/sdkmanager ]; then \ echo "Downloading Android SDK command-line tools..."; \ wget -q https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip; \ unzip -q commandlinetools-linux-11076708_latest.zip; \ mkdir -p cmdline-tools/latest; \ mv cmdline-tools/* cmdline-tools/latest/ 2>/dev/null || true; \ rm commandlinetools-linux-11076708_latest.zip; \ fi @echo "Accepting SDK licenses..." @export ANDROID_HOME=$(ANDROID_HOME) && \ export PATH=$(ANDROID_HOME)/cmdline-tools/latest/bin:$(ANDROID_HOME)/platform-tools:$$PATH && \ yes | sdkmanager --licenses > /dev/null 2>&1 @echo "Installing platform tools and build tools..." @export ANDROID_HOME=$(ANDROID_HOME) && \ export PATH=$(ANDROID_HOME)/cmdline-tools/latest/bin:$(ANDROID_HOME)/platform-tools:$$PATH && \ sdkmanager "platform-tools" "platforms;android-34" "build-tools;34.0.0" > /dev/null 2>&1 @echo "✓ Android SDK setup complete!" @echo "Add to your ~/.bashrc or ~/.zshrc:" @echo " export ANDROID_HOME=$(ANDROID_HOME)" @echo " export PATH=\$$ANDROID_HOME/platform-tools:\$$PATH" check-device: ## Check if device is connected @echo "Checking for connected devices..." @export ANDROID_HOME=$(ANDROID_HOME) && \ export PATH=$(ANDROID_HOME)/platform-tools:$$PATH && \ adb devices devices: check-device ## List connected devices (alias for check-device) setup-emulator: ## Create and start Android emulator @echo "Setting up Android emulator..." @export ANDROID_HOME=$(ANDROID_HOME) && \ export PATH=$(ANDROID_HOME)/cmdline-tools/latest/bin:$(ANDROID_HOME)/platform-tools:$$PATH && \ sdkmanager "system-images;android-34;google_apis;x86_64" > /dev/null 2>&1 @export ANDROID_HOME=$(ANDROID_HOME) && \ export PATH=$(ANDROID_HOME)/cmdline-tools/latest/bin:$(ANDROID_HOME)/platform-tools:$$PATH && \ avdmanager create avd -n "CrklEmulator" -k "system-images;android-34;google_apis;x86_64" -d "pixel_7" --force @echo "✓ Emulator created. Run 'make emulator' to start it." emulator: ## Start Android emulator @echo "Starting Android emulator with 4GB RAM..." @export ANDROID_HOME=$(ANDROID_HOME) && \ export PATH=$(ANDROID_HOME)/emulator:$(ANDROID_HOME)/platform-tools:$$PATH && \ emulator -avd CrklEmulator -memory 4096 -cores 4 -no-audio -gpu swiftshader_indirect -no-metrics & emulator-stop: ## Stop emulator @echo "Stopping emulator..." @export ANDROID_HOME=$(ANDROID_HOME) && \ export PATH=$(ANDROID_HOME)/platform-tools:$$PATH && \ adb emu kill emulator-list: ## List available emulators @echo "Available emulators:" @export ANDROID_HOME=$(ANDROID_HOME) && \ export PATH=$(ANDROID_HOME)/cmdline-tools/latest/bin:$(ANDROID_HOME)/platform-tools:$$PATH && \ avdmanager list avd build: ## Build APK @echo "Building Crkl..." @$(GRADLEW) assembleDebug install: build ## Install to phone @echo "Installing to phone..." @export ANDROID_HOME=$(ANDROID_HOME) && \ export PATH=$(ANDROID_HOME)/platform-tools:$$PATH && \ $(ADB) install -r $(APK) @echo "✓ Installed" run: ## Launch app @echo "Launching Crkl..." @export ANDROID_HOME=$(ANDROID_HOME) && \ export PATH=$(ANDROID_HOME)/platform-tools:$$PATH && \ $(ADB) shell am start -n com.example.crkl/.MainActivity logs: ## Watch app logs @echo "Watching logs (Ctrl+C to stop)..." @export ANDROID_HOME=$(ANDROID_HOME) && \ export PATH=$(ANDROID_HOME)/platform-tools:$$PATH && \ $(ADB) logcat -s CrklAccessibilityService:D OverlayView:D AndroidRuntime:E stop: ## Stop app @export ANDROID_HOME=$(ANDROID_HOME) && \ export PATH=$(ANDROID_HOME)/platform-tools:$$PATH && \ $(ADB) shell am force-stop com.example.crkl clean: ## Clean build @$(GRADLEW) clean uninstall: ## Remove app @export ANDROID_HOME=$(ANDROID_HOME) && \ export PATH=$(ANDROID_HOME)/platform-tools:$$PATH && \ $(ADB) uninstall com.example.crkl