博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
利用ant和dedex解析classes.dex
阅读量:5104 次
发布时间:2019-06-13

本文共 2124 字,大约阅读时间需要 7 分钟。

Ant是Apache软件基金会JAKARTA目录中的一个子项目,采用纯java编写,容易跨平台。在Android的多渠道批量打包就可以采用ant来实现,可以将ant作为插件安装到eclipse中(eclipse中已经集成)。那ant到底是怎么一回事呢?

ant其实就是执行一系列的任务,而这些任务的细节由相应的xml来描述。所以,理论上可以执行一切想执行的任务,具体可以参看《》。

依据这一理念,只要我们能够利用某一种方式来执行dex的解析命令,那么就可以将其做成ant的执行脚本,然后使用ant来执行。这里,dex的解析工具使用的是开源的dedex,具体地址请点击。在dedex的开源地址中下载dedex.jar,将其改名为ddx.jar。

一、cmd解析

在使用ant脚本执行之前,我们可以先使用cmd命令来执行。下面是执行的命令。

java -jar ddx.jar -d out_dir1 classes.dex

注:

1、执行命令java需要安装了jdk,并将jdk下的bin目录设置到了环境变量中。我的jdk使用的是1.6的,路径是D:\Program Files (x86)\Java\jdk1.6.0_45\bin。

2、将classes.dex和ddx.jar放到一个目录下,然后cmd命令定位到该目录中,执行上面的命令。

3、如果ddx.jar放到其他文件夹中,必须在命令中指定。需要注意的是,ddx.jar的路径必须是英文,而且文件夹的名字不能带有空格等特殊字符(比如放到了Programe Files文件夹下),否则命令可能执行失败。比如ddx.jar放到了D:\jars下,我们这样执行命令。

java -jar D:\jars\ddx.jar -d out classes.dex

二、ANT解析

现在将上面的cmd命令转换到ant的脚本中去执行。下面是脚本代码。

build.xml

Initialize...
decode dex...
注:

1、project中的name取为decode_dex。

2、指定默认执行的target,这里设为decode,对应到后面的名字为decode的target节点。在执行ant脚本时,如果没有特别指定执行的target,将会默认执行该target。

3、指定jdk、ddx、输出路径、classes.dex的具体位置。这里的位置可以有空格。可以有空格主要是由于我们前面是在cmd下执行命令的,cmd执行命令时空格是分隔标志,而这里是ant的脚本,ant执行脚本时认的是xml中的描述,不以空格作为分隔标志。

4、init和decode两个target。其中decode的又依赖于init,而project默认的target是decode。所以在执行该脚本时虽然默认执行的是decode,但是由于是decode依赖于init,所以在执行decode时,init又会被执行。可以简单的认为是一种函数的调用,即decode调用了init。

5、在init中用echo输出描述,delete删除输出目录,mkdir创建输出目录。

6、decode中,用exec来描述要执行的命令(也就是前面的cmd命令),然后用arg来依次指定相应的参数和值(与前面的cmd命令相对应)。

7、eclipse中带有ant,可以将其所在的路径设置为环境变量,以方便在cmd中直接执行。比如我的ant目录在D:\Program Files (x86)\eclipse\plugins\org.apache.ant_1.8.3.v201301120609下,将该目录设置到环境变量中即可。当然也可以从http://ant.apache.org/bindownload.cgi中下载ant,然后放到某一路径下(比如D:\Ant),并将ant.bat所在的路径设置成环境变量。

8、打开cmd,定位到classes.dex所在的目录,然后输入ant执行即可,如下图。

如果脚本的名字不是build.xml(比如为test.xml),需要执行ant -f test.xml。如下图。

至此,classes.dex解析完毕。

转载请注明出处:

转载于:https://www.cnblogs.com/sparkleDai/p/7605022.html

你可能感兴趣的文章
20151214--JSTL
查看>>
树状数组_一维
查看>>
【拓扑排序】【最短路】【最小生成树】Day 9.2
查看>>
Kubernetes 第三章 kubeadm
查看>>
jvisualvm安装visualgc插件
查看>>
2019 计蒜之道 复赛 D. “星云系统”(单调栈)
查看>>
1、Reactive Extensions for .NET(译)
查看>>
POJ-3180 The Cow Prom(tarjan求强连通分量)
查看>>
201521123049 《JAVA程序设计》 第12周学习总结
查看>>
做隧道转发的 正反
查看>>
无序列表li横向排列
查看>>
[小明带你玩儿Photon]4.一起来看日志
查看>>
[转]为ReportViewer导出的PDF文档加上水印
查看>>
espresso Seekbar
查看>>
转:jquery获得select option的值 和对select option的操作
查看>>
[转] Sublime Text 3支持GB2312和GBK编码
查看>>
C#设计模式(13)——代理模式(Proxy Pattern)(转)
查看>>
MVC5 + EF6 入门完整教程 (1)
查看>>
cs61b homework10
查看>>
数据结构之循环队列
查看>>