Files
OpenRoyale/tools/scripts/extract_apk.sh
T
2026-07-09 07:40:42 +02:00

38 lines
1.5 KiB
Bash

#!/usr/bin/env bash
# extract_apk.sh - reproduce all original_reference/ extracts from the source APK.
# Usage: tools/scripts/extract_apk.sh [path/to/app.apk]
# Regenerates: raw_apk_extract/, apktool_output/, jadx_output/, dex_raw/, native_libs_original/
set -euo pipefail
HERE="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJ="$(cd "$HERE/../.." && pwd)" # reconstructed_android_project/
ROOT="$(cd "$PROJ/.." && pwd)" # repo root (holds the source APK + tools/)
TOOLS="$ROOT/tools"
REF="$PROJ/original_reference"
APK="${1:-$ROOT/ClassicRoyale-1.7_1.apk}"
[ -f "$APK" ] || { echo "APK not found: $APK (run 'git lfs pull' first?)"; exit 1; }
echo "[*] Source APK: $APK"
mkdir -p "$REF"/{raw_apk_extract,apktool_output,jadx_output,dex_raw,native_libs_original}
# Preserve pristine copy
cp -f "$APK" "$REF/original.apk"
echo "[*] Raw unzip ..."
unzip -q -o "$APK" -d "$REF/raw_apk_extract"
echo "[*] Copy dex + native libs ..."
cp -f "$REF"/raw_apk_extract/*.dex "$REF/dex_raw/" 2>/dev/null || true
cp -f "$REF"/raw_apk_extract/lib/*/*.so "$REF/native_libs_original/" 2>/dev/null || true
echo "[*] apktool (res + smali + manifest) ..."
java -jar "$TOOLS/apktool_3.0.2.jar" d -f -o "$REF/apktool_output" "$APK"
echo "[*] jadx (java) ..."
chmod +x "$TOOLS"/jadx-1.5.5/bin/jadx 2>/dev/null || true
"$TOOLS/jadx-1.5.5/bin/jadx" -j 4 --no-res --show-bad-code -d "$REF/jadx_output" "$APK" || \
echo " (jadx reported non-fatal decompile warnings)"
echo "[+] Extraction complete under $REF"