5 PACKAGE ?= com.example.sycapp
6 KEYFILE ?= ~/.android/android.p12
9 ANDROID ?= /opt/android-sdk-update-manager/platforms/android-18/android.jar
10 SDKLIB ?= /opt/android-sdk-update-manager/tools/lib/sdklib.jar
11 TOOLS ?= /opt/android-sdk-update-manager/build-tools/19.0.1
14 PATH := $(PATH):$(TOOLS)
15 DIR := $(subst .,/,$(PACKAGE))
16 RES := $(wildcard res/*/*.*)
17 SRC := $(wildcard src/$(DIR)/*.java)
18 GEN := gen/$(DIR)/R.java
19 OBJ := obj/$(DIR)/R.class
20 APK := java -classpath $(SDKLIB) \
21 com.android.sdklib.build.ApkBuilderMain
24 debug: bin/$(PROGRAM).dbg
26 release: bin/$(PROGRAM).apk
35 adb logcat $(PROGRAM):D AndroidRuntime:E '*:S'
37 run: bin/install.stamp
38 adb shell am start -W \
39 -a android.intent.action.MAIN \
40 -n $(PACKAGE)/.MainActivity
42 install bin/install.stamp: bin/$(PROGRAM).dbg
44 touch bin/install.stamp
47 adb uninstall $(PACKAGE)
48 rm -f bin/install.stamp
51 %.dbg: %.dex %.res | bin
53 @$(APK) $@.in -f $*.dex -z $*.res
55 @zipalign -f 4 $@.in $@
57 %.apk: %.dex %.res | bin
59 @$(APK) $@.in -u -f $*.dex -z $*.res
61 @jarsigner -storetype $(KEYTYPE) \
62 -keystore $(KEYFILE) \
65 @zipalign -f 4 $@.in $@
67 %.dex: $(OBJ) makefile | bin
69 @dx --dex --output $@ obj
71 %.res: AndroidManifest.xml $(RES) | bin
75 -M AndroidManifest.xml \
79 $(OBJ): $(SRC) $(GEN) makefile | obj
80 @echo "JAVAC obj/*.class $+"
85 -bootclasspath $$JARS \
91 $(filter-out makefile,$+)
93 $(GEN): AndroidManifest.xml $(RES) | gen
97 -M AndroidManifest.xml \
105 # Keep intermediate files