Dalvik指令分析(二) 从java文件到dex

本文通过脚本演示如何将Java源文件编译为Dex文件,适用于Android平台的应用开发。介绍了从Java源文件到Class文件再到Dex文件的具体步骤。


        写这个系列文章是想了很久但是一直没有时间付诸行动,趁着这两天假期还没有结束,

赶紧动笔,怕上班了就没有时间再静下心来写这些文章,所以有点赶,表现在系列文章的

内容安排上就不是很合理,有些内容还需要丰富,但是聊胜于无吧,先写下再修改,如果

有一些反馈也可以根据反馈来修改。好了,开始第二篇文章。

       这篇文章可以成为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

文件的结构。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值