写这个系列文章是想了很久但是一直没有时间付诸行动,趁着这两天假期还没有结束,
赶紧动笔,怕上班了就没有时间再静下心来写这些文章,所以有点赶,表现在系列文章的
内容安排上就不是很合理,有些内容还需要丰富,但是聊胜于无吧,先写下再修改,如果
有一些反馈也可以根据反馈来修改。好了,开始第二篇文章。
这篇文章可以成为dx的HelloWorld,在这篇文章里我会介绍如果将一个java文件编译
成一个dex文件。ok,go!
step1: 准备java文件,文件名HelloWorld.java,内容如下
public class HelloWorld { public void sayHello() { System.out.println("Hello World!"); } }
多么熟悉的HelloWorld :)
step2:编写脚本,内容如下:
mkdir classes javac -d classes src/*.java dx -JXmx500m --debug --dex --no-optimize --positions=none --no-locals --dump-to=classes.lst --output=classes.dex classes zip test.jar classes.dex
这里需要做一些解释,首先利用javac编译java源文件,生成class文件,然后利用dx将
class文件转换成dalvik指令,并打包生成classes.dex,最后将dex打包成jar包。虽然只是
短短的几句话,但是dx进程的内部逻辑其实非常复杂,后续我会单独写一篇文章介绍dx的
过程。简单总结一下上面的编译过程:
.java -------------> .class ----------> .dex
javac dx
对应的逆向过程如下:
.java <------------- .class <------------ .dex
JD-GUI dex2jar
step3: 执行上述脚本就会生成classes.dex文件
这篇文章主要是通过脚本来介绍java to dex的过程,后续文章会详细介绍dx的过程,以及dex
文件的结构。
时间: 2024-12-06 22:20:58