How to decompile an APK on Android
Published Nov 9, 2026 · 5 min read · Steps checked against Manifesto 1.0
You can decompile an APK on your Android phone, no PC needed. In Manifesto, open the APK as a project, decompile its DEX files to Smali, and tap View as Java to read the class as Java. The catch: the Java view is a read-only JADX 1.5.6 preview. Changes are made in Smali, then rebuilt into a signed APK.
What does decompiling an APK give you?
Decompiling an APK turns the app's compiled classes*.dex files back into code you can read. Manifesto produces two views of the same class:
| View | Engine | Editable | Use it for |
|---|---|---|---|
| Smali | Smali/Baksmali 3.0.9 | Yes | Making changes that rebuild cleanly |
| Java | JADX 1.5.6 | No, preview only | Reading and understanding the logic |
Smali is a readable form of Dalvik bytecode, so an edit there maps straight back into the DEX file. Decompiled Java is a reconstruction. It is easier to read, but it can't be compiled back into the app reliably, which is why Manifesto keeps it read-only.
How do I decompile an APK on Android?
The steps below use the labels you see in Manifesto's APK editor for Android. Install it first if you haven't: it needs Android 8.0 or newer on an arm64 device.
- In the file manager, tap the
.apk. The APK info sheet opens. Tap Options, or long-press the file instead. - Tap Open as project.
- In the Explorer tab, tap a
classes*.dexentry. In the dialog, tick the DEX files you want and tap Decompile. Manifesto disassembles them to Smali. - Browse the Smali class tree and tap a class to open it in the editor.
- Open the editor overflow (Source actions) and tap View as Java.
- If the class has inner classes, pick them in Java preview parts and tap Preview.
- Tap View Smali source to switch back to the editable Smali.
Large apps often have several DEX files (classes.dex, classes2.dex and so on). The dialog lets you tick only the ones you need, so you don't have to decompile the rest. The APK projects docs cover the project screen in more detail.
How do I find the code I'm looking for?
Manifesto's Smali editor has search tools so you don't have to read every class:
- Find usages: shows where a class or package is used. Select a symbol in the Smali editor to run it from the toolbar, or long-press a class in the tree.
- Browse symbols: lists the symbols in the open Smali or Java file so you can jump to one.
- Class tree actions: Rename…, Rename package… and Move to package… reorganise classes once you know what they do.
Obfuscated apps use short names like a.b.c, so reading the Java preview next to Find usages is usually the fastest way to work out what a class does. The Smali and Java docs list every editor action.
Can I edit the Java and recompile it?
No. Manifesto can't recompile decompiled Java, because the Java view is a JADX preview with editing switched off. To change behaviour, edit the matching Smali, tap Validate and save, then tap Build and sign. That writes <name>-modified-signed.apk, signed with Manifesto's debug key.
The full loop, from finding the code to installing the rebuilt APK, is in how to edit an APK on Android. To use your own key, see how to sign an APK on Android.
What about split APKs, AAB files and installed apps?
Manifesto decompiles plain .apk files as projects. Other formats need a step first:
- Installed apps: open the drawer, tap Installed Apps, tap the app, then Extract APK. Split apps give Extract APK set, saved as
.apksinManifesto/APKs. - APKS, XAPK and APKM: these can be viewed and installed, but not rebuilt. Use Convert to APK to merge them into one APK, as in installing XAPK and split APKs.
- AAB: use Convert to APK, which builds a universal APK with bundletool. See converting AAB to APK on Android.
- Native libraries:
.sofiles hold compiled C or C++ code, not DEX. Tap Analyze on a.sofile to disassemble it with radare2 and read r2ghidra pseudocode. The native analysis docs explain the views.
Before you start on an unfamiliar APK, the info sheet's Protection row (Analyze APK protection) runs APKiD rules and reports packers or obfuscators it recognises.
Use it responsibly
Only decompile and modify apps you own or are allowed to analyze. Decompiling is for learning, debugging, interoperability and security research, not for removing licence checks or paid features.
Frequently asked questions
Can I decompile an APK on Android without a PC?
Yes. Manifesto runs the JADX and Smali engines on the phone itself, so you can open an APK as a project, disassemble its DEX files to Smali and preview Java without a computer. It needs Android 8.0 or newer on an arm64 device.
Can I edit the decompiled Java code in Manifesto?
No. The Java view is a read-only JADX preview. Decompiled Java can't be reliably compiled back, so you make changes in the Smali version of the class, save with Validate and save, then tap Build and sign to produce a new APK.
Which decompiler does Manifesto use?
Manifesto uses JADX 1.5.6 for the Java preview and Smali/Baksmali 3.0.9 for disassembly and rebuilding. Both run inside the app, so decompiling works offline once Manifesto is installed.
Why does the Java preview show errors or odd code?
Decompiled Java is a reconstruction of bytecode, not the original source. Obfuscation, optimisation and some language features can leave gaps or unusual code in the JADX output. The Smali view is a direct disassembly of the bytecode, so check it when the Java looks wrong.
How do I decompile an app that is already installed on my phone?
Open the drawer, tap Installed Apps, choose the app and tap Extract APK. Manifesto saves a copy to Manifesto/APKs. Split apps are saved as an .apks set, which you can convert to a single APK before opening it as a project.
Related guides and docs
- How to edit an APK on Android without a PC
- How to sign an APK on Android
- How to install XAPK, APKS and APKM files on Android
- How to convert an AAB to an APK on Android
- APK projects (docs)Open an APK as a project, browse it, search it, track changes.
- Smali & Java (docs)Decompile DEX, edit Smali, view as Java, DEX tools.
- Build & sign (docs)Rebuild, sign with V1–V4 and manage keys.
- Native analysis (docs)radare2 and r2ghidra for .so libraries, plus the Flutter analyzer.