KEYFILE ?= ~/.android/android.p12
KEYTYPE ?= pkcs12
KEYNAME ?= android
-ANDROID ?= /opt/android-sdk-update-manager/platforms/android-10/android.jar
-
-# Sources
-RES := $(shell find res -type f)
-SRC := $(shell find src -name '*.java')
-
-# Objects
-GEN := gen/$(subst .,/,$(PACKAGE))/R.java
-OBJ := $(subst .java,.class, \
- $(SRC:src/%=obj/%) \
- $(GEN:gen/%=obj/%))
+ANDROID ?= /opt/android-sdk-update-manager/platforms/android-18/android.jar
+SDKLIB ?= /opt/android-sdk-update-manager/tools/lib/sdklib.jar
+TOOLS ?= /opt/android-sdk-update-manager/build-tools/19.0.1
+
+# Variables
+PATH := $(PATH):$(TOOLS)
+DIR := $(subst .,/,$(PACKAGE))
+RES := $(wildcard res/*/*.*)
+SRC := $(wildcard src/$(DIR)/*.java)
+GEN := gen/$(DIR)/R.java
+OBJ := obj/$(DIR)/R.class
+APK := java -classpath $(SDKLIB) \
+ com.android.sdklib.build.ApkBuilderMain
# Targets
debug: bin/$(PROGRAM).dbg
# Rules
%.dbg: %.dex %.res | bin
@echo "APK $@.in"
- @apkbuilder $@.in -f $*.dex -z $*.res
+ @$(APK) $@.in -f $*.dex -z $*.res
@echo "ALIGN $@"
@zipalign -f 4 $@.in $@
%.apk: %.dex %.res | bin
@echo "APKU $@.in"
- @apkbuilder $@.in -u -f $*.dex -z $*.res
+ @$(APK) $@.in -u -f $*.dex -z $*.res
@echo "SIGN $@.in"
@jarsigner -storetype $(KEYTYPE) \
-keystore $(KEYFILE) \
-F $*.res
$(OBJ): $(SRC) $(GEN) | obj
- @echo "JAVAC *.class"
+ @echo "JAVAC obj/*.class"
@javac -g -Xlint:unchecked \
-bootclasspath $(ANDROID) \
-encoding UTF-8 \
bin gen obj:
@mkdir -p $@
-# Use parallel javac instead
-.PRECIOUS: %.dex %.res
-.NOTPARALLEL:
+# Keep intermediate files
+.SECONDARY: