+# Settings
+ANDROID := /opt/android-sdk-update-manager/platforms/android-10/android.jar
+PACKAGE := org.pileus.spades
+OUTPUT := bin/Spades.apk
+
+# Sources
+RES := $(shell find res -name '*.xml')
+SRC := $(shell find src -name '*.java')
+
+# Objects
+GEN := gen/$(subst .,/,$(PACKAGE))/R.java
+OBJ := $(subst .java,.class, \
+ $(SRC:src/%=obj/%) \
+ $(GEN:gen/%=obj/%))
+
+# Targets
+default: run
+
+compile: $(OBJ)
+
+debug: $(OUTPUT)
+
+clean:
+ rm -rf bin gen obj
+
+logcat:
+ adb logcat Spades:D '*:S'
+
+run: bin/install.stamp
+ adb shell am start -W -a android.intent.action.MAIN -n $(PACKAGE)/.Main
+
+
+install bin/install.stamp: $(OUTPUT)
+ adb uninstall $(PACKAGE)
+ adb install -r $+
+ touch bin/install.stamp
+
+# Rules
+%.apk: %.dex %.res | bin
+ @echo "APK $@.in"
+ @apkbuilder $@.in -f $*.dex -z $*.res
+ @echo ALIGN $@
+ @zipalign -f 4 $@.in $@
+
+%.dex: $(OBJ) | bin
+ @echo "DEX $@ "
+ @dx --dex --output $@ obj
+
+%.res: AndroidManifest.xml $(RES) | bin
+ @echo "RES $@"
+ @aapt package -f -m \
+ -I $(ANDROID) \
+ -M AndroidManifest.xml \
+ -S res \
+ -F $*.res
+
+$(OBJ): $(SRC) $(GEN) | obj
+ @echo "JAVAC $@"
+ @javac -g \
+ -bootclasspath $(ANDROID) \
+ -encoding UTF-8 \
+ -source 1.5 \
+ -target 1.5 \
+ -classpath obj \
+ -d obj \
+ $+
+
+$(GEN): AndroidManifest.xml $(RES) | gen
+ @echo "GEN $@"
+ @aapt package -f -m \
+ -I $(ANDROID) \
+ -M AndroidManifest.xml \
+ -S res \
+ -J gen
+
+# Directories
+bin gen obj:
+ @mkdir -p $@