2 KEYFILE ?= ~/.android/android.p12
5 ANDROID ?= /opt/android-sdk-update-manager/platforms/android-23/android.jar
6 SDKLIB ?= /opt/android-sdk-update-manager/tools/lib/sdklib.jar
7 TOOLS ?= /opt/android-sdk-update-manager/build-tools/23.0.2
10 PATH := $(PATH):$(TOOLS)
11 DIR := $(subst .,/,$(PACKAGE))
12 RES := $(wildcard res/*/*.*)
13 SRC := $(wildcard src/*.java src/$(DIR)/*.java)
14 GEN := gen/$(DIR)/R.java
15 OBJ := obj/$(DIR)/R.class
16 APK := java -classpath $(SDKLIB) \
17 com.android.sdklib.build.ApkBuilderMain
20 debug: bin/$(PROGRAM)-dbg.apk
22 release: bin/$(PROGRAM).apk
31 adb $(ADBFLAGS) logcat $(PROGRAM):D AndroidRuntime:E '*:S'
33 run: bin/install.stamp
34 adb $(ADBFLAGS) shell am start -W \
35 -a android.intent.action.MAIN \
36 -n $(PACKAGE)/.$(ACTIVITY)
38 install bin/install.stamp: bin/$(PROGRAM)-dbg.apk
39 adb $(ADBFLAGS) install -r $+
40 touch bin/install.stamp
43 adb $(ADBFLAGS) uninstall $(PACKAGE)
44 rm -f bin/install.stamp
48 android create avd --target android-18 --name virtual
51 emulator -avd virtual &
54 $(MAKE) run ADBFLAGS="-s emulator-5554"
58 git checkout graphics -- \
59 'opt/drawable/*.svg' \
60 'opt/drawable/*.xcf' \
61 'res/drawable/*.png' \
62 'res/drawable/*.jpg' \
65 'opt/drawable/*.svg' \
66 'opt/drawable/*.xcf' \
67 'res/drawable/*.png' \
68 'res/drawable/*.jpg' \
72 for svg in opt/drawable/*.svg; do \
73 png=$${svg/svg/png}; \
74 png=$${png/opt/res}; \
75 rsvg-convert -w 2048 -h 2048 \
79 -bordercolor '#00000000' \
85 %-dbg.apk: %.dex %.res | bin
87 @$(APK) $@.in -f $*.dex -z $*.res
89 @zipalign -f 4 $@.in $@
91 %.apk: %.dex %.res | bin
93 @$(APK) $@.in -u -f $*.dex -z $*.res
95 @jarsigner -storetype $(KEYTYPE) \
96 -keystore $(KEYFILE) \
99 @zipalign -f 4 $@.in $@
101 %.dex: $(OBJ) makefile | bin
103 @dx --dex --output $@ obj
105 %.res: AndroidManifest.xml $(RES) | bin
107 @aapt package -f -m \
109 -M AndroidManifest.xml \
113 $(OBJ): $(SRC) $(GEN) makefile | obj
114 @echo "JAVAC obj/*.class"
118 -bootclasspath $(ANDROID) \
124 $(filter-out makefile,$+)
126 $(GEN): AndroidManifest.xml $(RES) | gen
127 @if ! [ -d "res/drawable" ]; then \
133 @aapt package -f -m \
135 -M AndroidManifest.xml \
143 # Keep intermediate files