5 PACKAGE ?= org.pileus.spades
6 KEYFILE ?= ~/.android/android.p12
9 ANDROID ?= /opt/android-sdk-update-manager/platforms/android-10/android.jar
10 SDKLIB ?= /opt/android-sdk-update-manager/tools/lib/sdklib.jar
13 DIR := $(subst .,/,$(PACKAGE))
14 RES := $(wildcard res/*/*.*)
15 SRC := $(wildcard src/$(DIR)/*.java)
16 GEN := gen/$(DIR)/R.java
17 OBJ := obj/$(DIR)/R.class
18 APK := java -classpath $(SDKLIB) \
19 com.android.sdklib.build.ApkBuilderMain
22 debug: bin/$(PROGRAM).dbg
24 release: bin/$(PROGRAM).apk
33 adb logcat $(PROGRAM):D AndroidRuntime:E '*:S'
35 run: bin/install.stamp
36 adb shell am start -W \
37 -a android.intent.action.MAIN \
40 install bin/install.stamp: bin/$(PROGRAM).dbg
42 touch bin/install.stamp
45 adb uninstall $(PACKAGE)
50 git checkout graphics -- \
51 'opt/drawable/*.svg' \
52 'opt/drawable/*.xcf' \
53 'res/drawable/*.png' \
54 'res/drawable/*.jpg' \
57 'opt/drawable/*.svg' \
58 'opt/drawable/*.xcf' \
59 'res/drawable/*.png' \
60 'res/drawable/*.jpg' \
64 for svg in opt/drawable/*.svg; do \
65 png=$${svg/svg/png}; \
66 png=$${png/opt/res}; \
67 rsvg-convert -w 2048 -h 2048 \
69 convert -trim -resize '256x256!' \
74 %.dbg: %.dex %.res | bin
76 @$(APK) $@.in -f $*.dex -z $*.res
78 @zipalign -f 4 $@.in $@
80 %.apk: %.dex %.res | bin
82 @$(APK) $@.in -u -f $*.dex -z $*.res
84 @jarsigner -storetype $(KEYTYPE) \
85 -keystore $(KEYFILE) \
88 @zipalign -f 4 $@.in $@
92 @dx --dex --output $@ obj
94 %.res: AndroidManifest.xml $(RES) | bin
98 -M AndroidManifest.xml \
102 $(OBJ): $(SRC) $(GEN) | obj
103 @echo "JAVAC obj/*.class"
104 @javac -g -Xlint:unchecked \
105 -bootclasspath $(ANDROID) \
113 $(GEN): AndroidManifest.xml $(RES) | gen
114 @if ! [ -d "res/drawable" ]; then \
120 @aapt package -f -m \
122 -M AndroidManifest.xml \
130 # Keep intermediate files