mirror of
https://github.com/ApfelTeeSaft/OpenRoyale.git
synced 2026-08-26 19:33:32 +00:00
38 lines
1.5 KiB
Bash
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"
|