Decompiles Android APK/XAPK/JAR/AAR files using jadx or Fernflower, installs dependencies if needed, and analyzes structure including AndroidManifest.xml.
From android-reverse-engineeringnpx claudepluginhub simoneavogadro/android-reverse-engineering-skill --plugin android-reverse-engineering<path to APK, XAPK, JAR, or AAR file>Decompile an Android application and perform initial structure analysis.
You are starting the Android reverse engineering workflow. Follow these steps:
If the user provided a file path as an argument, use that. Otherwise, ask the user for the path to the APK, XAPK, JAR, or AAR file they want to decompile.
Run the dependency check:
bash ${CLAUDE_PLUGIN_ROOT}/skills/android-reverse-engineering/scripts/check-deps.sh
Parse the output looking for INSTALL_REQUIRED: and INSTALL_OPTIONAL: lines.
If required dependencies are missing, install them one by one:
bash ${CLAUDE_PLUGIN_ROOT}/skills/android-reverse-engineering/scripts/install-dep.sh java
bash ${CLAUDE_PLUGIN_ROOT}/skills/android-reverse-engineering/scripts/install-dep.sh jadx
The install script auto-detects the OS and installs without sudo when possible (user-local install to ~/.local/). If sudo is needed, it will prompt — if the user declines or sudo is unavailable, the script prints exact manual instructions (exit code 2). Show those instructions to the user and stop.
For optional dependencies (INSTALL_OPTIONAL:vineflower, INSTALL_OPTIONAL:dex2jar, etc.), ask the user if they want to install them. Recommend vineflower and dex2jar for better results.
After any installations, re-run check-deps.sh to verify. Do not proceed until all required dependencies pass.
Run the decompile script on the target file. Choose the engine based on the input:
APK or XAPK → use jadx first (handles resources natively; XAPK is auto-extracted):
bash ${CLAUDE_PLUGIN_ROOT}/skills/android-reverse-engineering/scripts/decompile.sh <file>
JAR/AAR and Fernflower is available → prefer fernflower for better Java output:
bash ${CLAUDE_PLUGIN_ROOT}/skills/android-reverse-engineering/scripts/decompile.sh --engine fernflower <file>
If jadx output has warnings or the user wants the best quality → run both and compare:
bash ${CLAUDE_PLUGIN_ROOT}/skills/android-reverse-engineering/scripts/decompile.sh --engine both <file>
For obfuscated apps (if the user mentions it or you detect single-letter package names), add --deobf:
bash ${CLAUDE_PLUGIN_ROOT}/skills/android-reverse-engineering/scripts/decompile.sh --deobf <file>
After decompilation completes:
AndroidManifest.xml from the resources directory. For XAPK, check the base APK's output first.xapk-manifest.json in the output directory to understand the split structure.Tell the user what they can do next:
--engine both for comparisonRefer to the full skill documentation in ${CLAUDE_PLUGIN_ROOT}/skills/android-reverse-engineering/SKILL.md for the complete workflow.