5 PACKAGE ?= org.pileus.spades
6 KEYFILE ?= ~/.android/android.p12
9 ANDROID ?= /opt/android-sdk-update-manager/platforms/android-10/android.jar
12 DIR := $(subst .,/,$(PACKAGE))
13 RES := $(wildcard res/*/*.*)
14 SRC := $(wildcard src/$(DIR)/*.java)
15 GEN := gen/$(DIR)/R.java
16 OBJ := obj/$(DIR)/R.class
19 debug: bin/$(PROGRAM).dbg
21 release: bin/$(PROGRAM).apk
30 adb logcat $(PROGRAM):D AndroidRuntime:E '*:S'
32 run: bin/install.stamp
33 adb shell am start -W \
34 -a android.intent.action.MAIN \
37 install bin/install.stamp: bin/$(PROGRAM).dbg
39 touch bin/install.stamp
42 adb uninstall $(PACKAGE)
47 git checkout graphics -- \
48 'opt/drawable/*.svg' \
49 'opt/drawable/*.xcf' \
50 'res/drawable/*.png' \
51 'res/drawable/*.jpg' \
54 'opt/drawable/*.svg' \
55 'opt/drawable/*.xcf' \
56 'res/drawable/*.png' \
57 'res/drawable/*.jpg' \
61 for svg in opt/drawable/*.svg; do \
62 png=$${svg/svg/png}; \
63 png=$${png/opt/res}; \
64 rsvg-convert -w 2048 -h 2048 \
66 convert -trim -resize '256x256!' \
71 %.dbg: %.dex %.res | bin
73 @apkbuilder $@.in -f $*.dex -z $*.res
75 @zipalign -f 4 $@.in $@
77 %.apk: %.dex %.res | bin
79 @apkbuilder $@.in -u -f $*.dex -z $*.res
81 @jarsigner -storetype $(KEYTYPE) \
82 -keystore $(KEYFILE) \
85 @zipalign -f 4 $@.in $@
89 @dx --dex --output $@ obj
91 %.res: AndroidManifest.xml $(RES) | bin
95 -M AndroidManifest.xml \
99 $(OBJ): $(SRC) $(GEN) | obj
100 @echo "JAVAC obj/*.class"
101 @javac -g -Xlint:unchecked \
102 -bootclasspath $(ANDROID) \
110 $(GEN): AndroidManifest.xml $(RES) | gen
111 @if ! [ -d "res/drawable" ]; then \
117 @aapt package -f -m \
119 -M AndroidManifest.xml \
127 # Keep intermediate files