crkl/Makefile
ilia 1d0c1cfb8a Enhance Makefile, README, and setup script for improved development workflow
- Updated Makefile to include new setup commands for Android SDK and emulator management.
- Revised README.md to reflect changes in setup instructions and command usage.
- Introduced setup.sh script for one-time environment setup, including SDK installation and configuration.
- Modified CrklAccessibilityService to implement a floating action button instead of a full-screen overlay.
- Enhanced OverlayView to support toggling between button and overlay modes for gesture capture.
- Adjusted accessibility service configuration to disable touch exploration mode for better user experience.
2025-10-21 12:55:39 -04:00

129 lines
5.1 KiB
Makefile

# 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