.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