android-simple/Makefile

57 lines
1.3 KiB
Makefile

.POSIX:
PROJECT = helloworld
ANDROIDSDK = /usr/lib/android-sdk
DX = $(ANDROIDSDK)/build-tools/debian/dx
PLATFORM = $(ANDROIDSDK)/platforms/android-23/android.jar
OBJECTS = \
HelloWorld.class \
Test.class
RESOURCES = \
res/layout/activity_main.xml
R = helloworld/R.java
# Resources:
# https://www.hanshq.net/command-line-android.html
$(PROJECT).apk: $(PROJECT).aligned.apk keystore.jks
apksigner sign \
--ks keystore.jks \
--ks-key-alias androidkey \
--ks-pass pass:android \
--key-pass pass:android \
--out $@ $<
keystore.jks:
keytool \
-genkeypair \
-keystore $@ \
-alias androidkey \
-validity 10000 \
-keyalg RSA \
-keysize 4096 \
-storepass android \
-keypass android
$(PROJECT).aligned.apk: $(PROJECT).unsigned.apk
zipalign -f -p 4 $< $@
$(PROJECT).unsigned.apk: dex/classes.dex AndroidManifest.xml
aapt package -f -F $@ -I $(PLATFORM) -M AndroidManifest.xml -S res dex
dex/classes.dex: $(OBJECTS) AndroidManifest.xml
mkdir -p dex
$(DX) --dex --output=$@ $(OBJECTS)
$(OBJECTS): $(OBJECTS:.class=.java) $(R)
javac -bootclasspath $(PLATFORM) -source 1.7 *.java
$(R): AndroidManifest.xml $(RESOURCES)
aapt package -f -m -S res -M AndroidManifest.xml -I $(PLATFORM) -J .
clean:
rm -f $(R) *.java.class *.unsigned.apk *.aligned.apk *.apk.idsig dex/*.dex
distclean: clean
rm -rf dex/ *.apk keystore.jks