Currently, I only know about apktool.
But is there any tools that helps in checking the code, editing it and compiling it back to apk?
There are many tools, some are more low-level and some build on top of the low-level tools to make nicer and more complete tools.
Here are my favorites:
.dexfiles to textual
.smaliclasses. Can be used in after unzipping the APK manually. More here: Repackaging APK file using baksmali and smali
Also look promising:
If you want to modify code, then the only real option I know of is
apktool provides a helpful wrapper for.
If you merely want to understand the code, there's lots of options. For example, you could use Enjarify or dex2jar to translate it to a jar file and then use any Java bytecode tools or decompilers. There's also a few decompilers with native Android support.
You can try Antimony's answer.
Also check this comment(which states using dex2jar on .dex file and JD-GUI on jar file):
If you want to decompile an apk directly on your phone, show java can be a good option. You can just select an apk file and wait. Then you can get rhe java source code of the app. Though it has much rooms for improvement, its handy.
WHEN YOU ENCOUNTER JNI/NDK
You have to decompile the
.so files inside the
lib folder. So you may have to decompile them, which are usually arm linux shared libraries.
I am currently developing a helper app that helps you decompile native library targeted ARM and x86, and other CPU instructions.
Or you can visit the git repository (Android-Disassembler).
However In general, Unfortunately, some developers prevent or make it hard to decompile the apk file, by changing class, methods and variables' names. So you may have some hard time as many reversing routines do.
Hope my answer helped anyway.
GDA: supports APK, DEX, ODEX and OAT files. A Dalvik bytecode decompiler was written entirely in c++. So, unlike most app analysis tools, GDA does not need to rely on the Java platform, And as the use of the Bytecode directly translated into Java code without Smali code translation. So it is more succinct, more portable and faster.