#!/bin/sh # Builds Podlite.apk for Android 2.2+ (API 8) using the plain SDK tools, no Gradle. # ANDROID_JAR android.jar for API 8 (compiling against it guarantees no newer APIs sneak in) # KEYSTORE signing keystore (created on first build if missing) set -e cd "$(dirname "$0")" ANDROID_JAR=${ANDROID_JAR:-/home/claude/sable/android-platforms/android-8/android.jar} KEYSTORE=${KEYSTORE:-miniabs.keystore} BC_SRC=${BC_SRC:-$HOME/android-toolchain/bcsrc} # Bouncy Castle renamed to com.minamp.bc (Minamp's tools/setup_toolchain.sh) OUT=build rm -rf "$OUT" mkdir -p "$OUT/gen" "$OUT/classes" echo "== resources" aapt package -f -m -J "$OUT/gen" -M AndroidManifest.xml -S res -A assets -I "$ANDROID_JAR" \ -F "$OUT/Podlite.unsigned.apk" echo "== compile (Java 8 bytecode, API 8 class library)" javac -nowarn -Xlint:-options -encoding UTF-8 -source 8 -target 8 \ -bootclasspath "$ANDROID_JAR" -classpath "$ANDROID_JAR" -sourcepath "src:$BC_SRC:$OUT/gen" \ -d "$OUT/classes" $(find src "$OUT/gen" -name '*.java') echo "== dex" dalvik-exchange --dex --min-sdk-version=8 --output="$OUT/classes.dex" "$OUT/classes" (cd "$OUT" && aapt add Podlite.unsigned.apk classes.dex > /dev/null) echo "== align + sign (v1 JAR signature with SHA-1, which Android 2.x requires)" if [ ! -f "$KEYSTORE" ]; then keytool -genkeypair -keystore "$KEYSTORE" -storepass miniabs -keypass miniabs -alias miniabs \ -keyalg RSA -keysize 2048 -validity 10000 -dname "CN=Podlite" > /dev/null 2>&1 fi zipalign -f 4 "$OUT/Podlite.unsigned.apk" "$OUT/Podlite.aligned.apk" apksigner sign --ks "$KEYSTORE" --ks-pass pass:miniabs --key-pass pass:miniabs --ks-key-alias miniabs \ --min-sdk-version 8 --v1-signing-enabled true --v2-signing-enabled false --v3-signing-enabled false \ --out "$OUT/Podlite.apk" "$OUT/Podlite.aligned.apk" apksigner verify --min-sdk-version 8 "$OUT/Podlite.apk" ls -l "$OUT/Podlite.apk"