I reverse-engineered an Android application with APKTool and got .Smali files as source code output. I converted the .Smali files with an application to .Java files. I was able to successfully edit the .Java files but now I want to convert them back to .Smali so I can recompile the application with the new .Smali files. When I just leave the .Java file there it doesn’t recompile it and gives some errors. I couldn’t find anything about compiling .Java to .Smali on the Internet so I hope you guys could help me.
Thank you in advance.
Advertisement
Answer
You can compile the java classes using a normal java compiler, and then use Android’s ‘dx’ utility to convert the compiled .class files to a dex file. And then run baksmali on the dex file to produce the smali files.
For example, let’s say you have the following code in a java file named “HelloWorld.java”:
public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } }
To convert it to smali:
javac HelloWorld.java dx --dex --output=classes.dex HelloWorld.class baksmali d classes.dex