Pitch & anti-pitch
Often times a question is asked - how is this different from tool xxx? This is a valid question, and one that should be asked. However, it is also a question that is often asked in bad faith. This is a place to address both.
So this post will give you a "pitch" (why you should use Apktool) and an "anti-pitch" (why you shouldn't use Apktool).
Pitch
- Apktool has been around for 13+ years. It has been used by hundreds of thousands of people judging from the historical downloads - so you'll find support nearly anywhere.
- Apktool is open source. This means you can see what it does, and how it does it. You can even contribute to it.
- Apktool is free. It is licensed under the Apache 2.0 license, which gives great flexibility in usage.
- Plenty of tools have been built on top of Apktool, and you can do the same.
- Apktool was even started from the research and work of others.
- Apktool is cross-platform. It runs on Windows, Linux, and macOS.
- Apktool is one fat jar. You don't need to install anything else to get it working.
- Apktool is 1 easy command for disassembly and 1 easy command for reassembly.
Anti-pitch
- Apktool doesn't really work well on Android devices, because it uses the same native tools that Android Studio uses when compiling an application
- This means that in order to build an application on device - you'd need to cross compile aapt/aapt2 for the respective architecture.
- This is not impossible, but it is not easy nor something Apktool officially wants to spend time on.
- Libraries such as ARSCLib were invented to replace the need for aapt/aapt2 on device.
- Apktool works slowly in fixing issues and adding features.
- Apktool is a side project for the only current maintainer. I've got a full time job and other responsibilities.
- Paid alternatives like JEB from PNF Software have an expensive option that might surpass Apktool's offering
- Free official alternatives like apkanalyzer might be updated quicker, but also will fail at the easiest level of 3rd party obfuscation.
- Apktool works with sources to return smali format instead of reconstructed Java which is often a barrier to entry for new users.
- JADX is a great alternative that will return Java code instead of smali and has a growing robust resource parser.