`

dx工具(android将jar包转成dex格式二进制jar包工具)

阅读更多

好吧,不得不承认这个工具真心难找,也不知道自己sdk里以前怎么就有了,还好给了师傅一份,现在重装系统从网上找这个工具都找不到。

将platform-tools.zip解压,将其内部资源拷贝到android sdk platform-tools目录下即可使用(window环境)。

编译命令,cmd进入到android sdk platform-tools目录 dx --dex --output=target.jar origin.jar

上述命令中 origin.jar为源代码导出的jar包,target.jar为dx工具产生的dex二进制jar包!

 

 

5
2
分享到:
评论
11 楼 flycatdeng 2015-09-14  
夜色蓝 写道
我想说dx在sdk的build-tools里面比如build-tools\19.1.0

真的有,在lib目录下!
10 楼 夜色蓝 2015-09-05  
我想说dx在sdk的build-tools里面比如build-tools\19.1.0
9 楼 qwerty123220 2015-01-15  
话说大神能给个QQ什么的吗?
这样搞真心好慢→_→
8 楼 qwerty123220 2015-01-15  
flycatdeng 写道
qwerty123220 写道

D:\KaiFaGongJu\Java\adt-bundle-windows-x86-20130917\sdk\platform-tools>dx -dex -
output=classes.dex D:\360downloads\huangdi7\classes_dex2jar.jar
dex和output前面都是两个-

dx --dex --output ...你再试试


换成两个-是吗?
还是不行啊。


D:\KaiFaGongJu\Java\adt-bundle-windows-x86-20130917\sdk\platform-tools>dx --dex
--output=classes.dex classes_dex2jar.jar

EXCEPTION FROM SIMULATION:
expected type java.lang.Object but found int

...at bytecode offset 0000015a
locals[0000]: Lcom/huangdi/h/k;
locals[0001]: Ljava/util/ArrayList;
locals[0002]: <invalid>
locals[0003]: Ljava/lang/String;
locals[0004]: <invalid>
locals[0005]: <invalid>
locals[0006]: <invalid>
locals[0007]: <invalid>
locals[0008]: <invalid>
locals[0009]: <invalid>
locals[000a]: <invalid>
locals[000b]: <invalid>
locals[000c]: <invalid>
locals[000d]: <invalid>
...while working on block 0156
...while working on method b:()Ljava/util/List;
...while processing b ()Ljava/util/List;
...while processing com/huangdi/h/k.class

1 error; aborting

D:\KaiFaGongJu\Java\adt-bundle-windows-x86-20130917\sdk\platform-tools>
7 楼 flycatdeng 2015-01-15  
qwerty123220 写道

D:\KaiFaGongJu\Java\adt-bundle-windows-x86-20130917\sdk\platform-tools>dx -dex -
output=classes.dex D:\360downloads\huangdi7\classes_dex2jar.jar
dex和output前面都是两个-

dx --dex --output ...你再试试
6 楼 qwerty123220 2015-01-14  
flycatdeng 写道
qwerty123220 写道

批量将.class文件转为.java什么的。那估计你要找反编译工具了!
忘了说了,原jar包需要放在tools目录下,即classes_dex2jar.jar需要放在D:\KaiFaGongJu\Java\adt-bundle-windows-x86-20130917\sdk\platform-tools目录下。
http://flycatdeng.iteye.com/blog/2100653 第五部分有说!


啊哈哈,即使把jar包放在tools目录下也会报错啊(无奈)
说到反编译工具的话,我到目前为止共用Jclasslib Bytecode、jd-gui、dex2jar-0.0.9.15、ApkTool、APKSign、Jad这些工具,这里面有能用的吗?

另外那个第五部分,是说第三大部分的第五条吗?
5 楼 flycatdeng 2015-01-14  
qwerty123220 写道

批量将.class文件转为.java什么的。那估计你要找反编译工具了!
忘了说了,原jar包需要放在tools目录下,即classes_dex2jar.jar需要放在D:\KaiFaGongJu\Java\adt-bundle-windows-x86-20130917\sdk\platform-tools目录下。
http://flycatdeng.iteye.com/blog/2100653 第五部分有说!
4 楼 qwerty123220 2015-01-13  
另外,这是现在对未修改过的原文件转换的处理结果。
由于不懂英文的缘故我看不懂是什么意思,但好像还是无法成功的样子...
到底应该怎么做呢?
虽然以前学过一点编程但从未从事过相关工作的我只是一个门外汉,问了什么傻问题的话万分抱歉。
Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.
D:\KaiFaGongJu\Java\adt-bundle-windows-x86-20130917\sdk\platform-tools>dx -dex -
output=classes.dex D:\360downloads\huangdi7\classes_dex2jar.jar
error: no command specified
usage:
  dx --dex [--debug] [--verbose] [--positions=<style>] [--no-locals]
  [--no-optimize] [--statistics] [--[no-]optimize-list=<file>] [--no-strict]
  [--keep-classes] [--output=<file>] [--dump-to=<file>] [--dump-width=<n>]
  [--dump-method=<name>
  • ] [--verbose-dump] [--no-files] [--core-library]
  •   [--num-threads=<n>] [--incremental] [--force-jumbo]
      [<file>.class | <file>.{zip,jar,apk} | <directory>] ...
        Convert a set of classfiles into a dex file, optionally embedded in a
        jar/zip. Output name must end with one of: .dex .jar .zip .apk. Positions
        options: none, important, lines.
      dx --annotool --annotation=<class> [--element=<element types>]
      [--print=<print types>]
      dx --dump [--debug] [--strict] [--bytes] [--optimize]
      [--basic-blocks | --rop-blocks | --ssa-blocks | --dot] [--ssa-step=<step>]
      [--width=<n>] [<file>.class | <file>.txt] ...
        Dump classfiles, or transformations thereof, in a human-oriented format.
      dx --find-usages <file.dex> <declaring type> <member>
        Find references and declarations to a field or method.
        declaring type: a class name in internal form, like Ljava/lang/Object;
        member: a field or method name, like hashCode
      dx -J<option> ... <arguments, in one of the above forms>
        Pass VM-specific options to the virtual machine that runs dx.
      dx --version
        Print the version of this tool (1.7).
      dx --help
        Print this message.
    3 楼 qwerty123220 2015-01-13  
    flycatdeng 写道
    qwerty123220 写道
    遇到错误了。

    你好,你看一下你的类中是不是有些变量没有初始化?

    是这样啊?
    的确是有一些变量没有设置初始值,因为是想修改一个安卓游戏的原因才找到这个工具的,所以手头并没有源码,是通过文本处理的方式处理的class文件...
    如果要将整个jar包所有的变量通过文本方式重新赋值的话工作就太繁重了,请问一下有没有好的方法解决这个问题呢?比如批量将.class文件转为.java什么的?
    这个游戏困扰了我几天了OTZ,不想放弃啊。
    2 楼 flycatdeng 2015-01-13  
    qwerty123220 写道
    遇到错误了。

    你好,你看一下你的类中是不是有些变量没有初始化?
    1 楼 qwerty123220 2015-01-12  
    遇到错误了。



    ...at bytecode offset 0000015a
    locals[0000]: Lcom/huangdi/h/k;
    locals[0001]: Ljava/util/ArrayList;
    locals[0002]: <invalid>
    locals[0003]: Ljava/lang/String;
    locals[0004]: <invalid>
    locals[0005]: <invalid>
    locals[0006]: <invalid>
    locals[0007]: <invalid>
    locals[0008]: <invalid>
    locals[0009]: <invalid>
    locals[000a]: <invalid>
    locals[000b]: <invalid>
    locals[000c]: <invalid>
    locals[000d]: <invalid>
    ...while working on block 0156
    ...while working on method b:()Ljava/util/List;
    ...while processing b ()Ljava/util/List;
    ...while processing com/huangdi/h/k.class

    1 error; aborting

    请问一下,这是工具的问题还是jar包的问题啊?

    相关推荐

    Global site tag (gtag.js) - Google Analytics