.POSIX: .SUFFIXES: .apk .unsigned .aligned include defs.mk PROJECT = org.slcl DX = $(ANDROIDSDK)/build-tools/debian/dx MANIFEST = AndroidManifest.xml OBJECTS = \ src/org/slcl/core/Connection.class \ src/org/slcl/core/Cookie.class \ src/org/slcl/core/Directory.class \ src/org/slcl/core/Login.class \ src/org/slcl/core/Result.class \ src/org/slcl/Alert.class \ src/org/slcl/Directory.class \ src/org/slcl/InternalFile.class \ src/org/slcl/LoginActivity.class \ src/org/slcl/Main.class RESOURCES = \ res/layout/activity_directory.xml \ res/layout/activity_main.xml R = src/org/slcl/R.java PASS = password.secret DNAME = "cn=slcl, ou=slcl, o=slcl, c=ES" JODA_TIME = joda-time/joda-time.jar JODA_CONVERT = joda-convert/joda-convert.jar # Resources: # https://www.hanshq.net/command-line-android.html # https://unix.stackexchange.com/questions/230673/how-to-generate-a-random-string # https://stuff.mit.edu/afs/sipb/project/android/docs/guide/topics/resources/layout-resource.html#layoutvalues all: $(PROJECT).apk $(PROJECT).apk: keystore.jks .aligned.apk: apksigner sign \ --ks keystore.jks \ --ks-key-alias androidkey \ --ks-pass file:$(PASS) \ --out $@ $< keystore.jks: $(PASS) (for i in 1 2; do cat $(PASS); done; echo) \ | keytool \ -genkeypair \ -dname $(DNAME) \ -keystore $@ \ -alias androidkey \ -keyalg RSA \ -keysize 4096 $(PASS): (LC_ALL=C \ tr -dc 'A-Za-z0-9!"#$$%&'\''()*+,-./:;<=>?@[\]^_`{|}~' \ < /dev/urandom | head -c 100; echo) > $(PASS) .unsigned.aligned: zipalign -f -p 4 $< $@ $(PROJECT).unsigned: dex/classes.dex $(MANIFEST) aapt package -f -F $@ -I $(PLATFORM) -M $(MANIFEST) -S res dex dex/classes.dex: .build $(MANIFEST) mkdir -p dex $(DX) --dex --min-sdk-version=9 --output=$@ src $(JODA_TIME) $(JODA_CONVERT) .build: $(OBJECTS:.class=.java) $(R) $(JODA_TIME) $(JODA_CONVERT) javac \ -g \ -bootclasspath $(PLATFORM) \ -classpath $(JODA_CONVERT):$(JODA_TIME) \ -sourcepath src \ $(OBJECTS:.class=.java) touch $@ $(JODA_TIME): $(JODA_CONVERT) +cd joda-time && $(MAKE) $(JODA_CONVERT): +cd joda-convert && $(MAKE) $(R): $(MANIFEST) $(RESOURCES) aapt package -f -m -S res -M $(MANIFEST) -I $(PLATFORM) -J src clean: +cd joda-convert && $(MAKE) clean +cd joda-time && $(MAKE) clean rm -f $(R) $(OBJECTS) $(PROJECT).unsigned \ $(PROJECT).aligned $(PROJECT).apk.idsig dex/classes.dex distclean: clean rm -rf dex/ *.apk keystore.jks $(PASS)