5 PACKAGE ?= edu.ucla.iBeaconNav
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 MAPLIB ?= /opt/android-sdk-update-manager/extras/google/google_play_services/libproject/google-play-services_lib/libs/google-play-services.jar
12 IBEACON ?= /home/andy/class/AndroidIBeaconLibrary/libs/classes.jar
13 TOOLS ?= /opt/android-sdk-update-manager/build-tools/19.0.1
16 PATH := $(PATH):$(TOOLS)
17 DIR := $(subst .,/,$(PACKAGE))
18 RES := $(wildcard res/*/*.*)
19 SRC := $(wildcard src/$(DIR)/*.java)
20 GEN := gen/$(DIR)/R.java
21 OBJ := obj/$(DIR)/R.class
22 APK := java -classpath $(SDKLIB) \
23 com.android.sdklib.build.ApkBuilderMain
26 debug: bin/$(PROGRAM).dbg
28 release: bin/$(PROGRAM).apk
37 adb $(ADBFLAGS) logcat $(PROGRAM):D IBeaconManager:D AndroidRuntime:E '*:S'
39 run: bin/install.stamp
40 adb $(ADBFLAGS) shell am start -W \
41 -a android.intent.action.MAIN \
44 install bin/install.stamp: bin/$(PROGRAM).dbg
45 adb $(ADBFLAGS) install -r $+
46 touch bin/install.stamp
49 adb $(ADBFLAGS) uninstall $(PACKAGE)
50 rm -f bin/install.stamp
53 %.dbg: %.dex %.res | bin
55 @$(APK) $@.in -f $*.dex -z $*.res
57 @zipalign -f 4 $@.in $@
59 %.apk: %.dex %.res | bin
61 @$(APK) $@.in -u -f $*.dex -z $*.res
63 @jarsigner -storetype $(KEYTYPE) \
64 -keystore $(KEYFILE) \
67 @zipalign -f 4 $@.in $@
69 %.dex: $(OBJ) makefile | bin
70 @echo "DEX $@ obj $(notdir $(MAPLIB)) $(notdir $(IBEACON))"
71 @dx --dex --output $@ obj $(MAPLIB) $(IBEACON)
73 %.res: AndroidManifest.xml $(RES) | bin
78 -M AndroidManifest.xml \
80 -S /opt/android-sdk-update-manager/extras/google/google_play_services/libproject/google-play-services_lib/res \
81 -S /home/andy/class/AndroidIBeaconLibrary/res \
84 $(OBJ): $(SRC) $(GEN) makefile | obj
85 @echo "JAVAC obj/*.class $+"
86 @JARS=$(ANDROID):$(MAPLIB):$(IBEACON); \
90 -bootclasspath $$JARS \
96 $(filter-out makefile,$+) gen/com/google/android/gms/R.java
98 $(GEN): AndroidManifest.xml $(RES) | gen
100 @aapt package -f -m \
102 -M /home/andy/class/AndroidIBeaconLibrary/AndroidManifest.xml \
103 -S /home/andy/class/AndroidIBeaconLibrary/res \
105 @aapt package -f -m \
107 -M /opt/android-sdk-update-manager/extras/google/google_play_services/libproject/google-play-services_lib/AndroidManifest.xml \
108 -S /opt/android-sdk-update-manager/extras/google/google_play_services/libproject/google-play-services_lib/res \
110 @aapt package -f -m \
113 -M AndroidManifest.xml \
115 -S /opt/android-sdk-update-manager/extras/google/google_play_services/libproject/google-play-services_lib/res \
116 -S /home/andy/class/AndroidIBeaconLibrary/res \
123 # Keep intermediate files