mirror of
https://github.com/ApfelTeeSaft/OpenRoyale.git
synced 2026-08-26 19:33:32 +00:00
38 lines
1.8 KiB
Bash
38 lines
1.8 KiB
Bash
#!/usr/bin/env bash
|
|
# sign_apk.sh - zipalign + apksigner (v1+v2+v3) with a debug key (or user key via env).
|
|
# Usage: sign_apk.sh <path/to/app.apk>
|
|
# Env (optional): KEYSTORE, KEY_ALIAS, KS_PASS, KEY_PASS (else a debug keystore is created).
|
|
set -euo pipefail
|
|
APK="${1:?usage: sign_apk.sh <app.apk>}"
|
|
[ -f "$APK" ] || { echo "APK not found: $APK"; exit 1; }
|
|
|
|
need() { command -v "$1" >/dev/null 2>&1 || { echo "ERROR: '$1' not found (install Android build-tools; see analysis/TOOLCHAIN.md)"; exit 7; }; }
|
|
# build-tools binaries are versioned; allow override via ZIPALIGN/APKSIGNER env
|
|
ZIPALIGN="${ZIPALIGN:-$(command -v zipalign || true)}"
|
|
APKSIGNER="${APKSIGNER:-$(command -v apksigner || true)}"
|
|
[ -n "$ZIPALIGN" ] || { echo "ERROR: zipalign not found (Android build-tools)"; exit 7; }
|
|
[ -n "$APKSIGNER" ] || { echo "ERROR: apksigner not found (Android build-tools)"; exit 7; }
|
|
need keytool
|
|
|
|
KEYSTORE="${KEYSTORE:-$HOME/.android/debug.keystore}"
|
|
KEY_ALIAS="${KEY_ALIAS:-androiddebugkey}"
|
|
KS_PASS="${KS_PASS:-android}"; KEY_PASS="${KEY_PASS:-android}"
|
|
if [ ! -f "$KEYSTORE" ]; then
|
|
echo "[*] Creating debug keystore at $KEYSTORE"
|
|
mkdir -p "$(dirname "$KEYSTORE")"
|
|
keytool -genkeypair -v -keystore "$KEYSTORE" -storepass "$KS_PASS" -keypass "$KEY_PASS" \
|
|
-alias "$KEY_ALIAS" -keyalg RSA -keysize 2048 -validity 10000 \
|
|
-dname "CN=Android Debug,O=Android,C=US"
|
|
fi
|
|
|
|
ALIGNED="${APK%.apk}-aligned.apk"
|
|
echo "[*] zipalign"; "$ZIPALIGN" -f -p 4 "$APK" "$ALIGNED"
|
|
echo "[*] apksigner (v1+v2+v3)"
|
|
"$APKSIGNER" sign --ks "$KEYSTORE" --ks-key-alias "$KEY_ALIAS" \
|
|
--ks-pass "pass:$KS_PASS" --key-pass "pass:$KEY_PASS" \
|
|
--v1-signing-enabled true --v2-signing-enabled true --v3-signing-enabled true \
|
|
--out "$APK" "$ALIGNED"
|
|
rm -f "$ALIGNED"
|
|
"$APKSIGNER" verify --verbose "$APK" | sed 's/^/ /'
|
|
echo "[+] Signed $APK"
|