Java Android SDK中的dx.jar是什么?

Java Android SDK中的dx.jar是什么?,java,android,intellij-idea,Java,Android,Intellij Idea,我在随Android SDK管理器安装的一些Android SDK版本中看到的dx.jar文件的用途是什么;该文件显示在tools/lib/dx.jar下,在android-8及以上版本中我看不到该文件。然而,当我试图用android-8及以上版本构建一个项目时,Intellij IDEA给出了一个错误,说dx.jar不存在。有什么好处 谢谢, Tom出于某种原因,我确实在不同的android sdk版本子目录中看到了几个版本(不同大小的文件)的dx和dx.jar。我一直在通过Eclipse管理

我在随Android SDK管理器安装的一些Android SDK版本中看到的dx.jar文件的用途是什么;该文件显示在tools/lib/dx.jar下,在android-8及以上版本中我看不到该文件。然而,当我试图用android-8及以上版本构建一个项目时,Intellij IDEA给出了一个错误,说dx.jar不存在。有什么好处

谢谢,
Tom

出于某种原因,我确实在不同的android sdk版本子目录中看到了几个版本(不同大小的文件)的dx和dx.jar。我一直在通过Eclipse管理SDK,几个月前,Eclipse在这方面发生了变化(现在有了一个单独的SDK管理器窗口)——因此,在这个过渡过程中,事情可能不知怎么搞砸了…

除了Commonware的评论之外

dx.jar以前位于
android sdk/platforms/android-X/tools/lib/
下(特别是在android-3和android-4中),后来移动到
android sdk/platform tools/lib/
。不幸的是,这从未在任何官方来源中记录过,可能是因为这是谷歌不想让消费者开发者感到麻烦的内部工具的一部分。检查以查看问题

只要您遵循并将android sdk/tools/和android sdk/platform tools/添加到PATH环境变量中,就可以访问dx.jar,除非您使用的是非常旧的android sdk版本(我对此表示怀疑)

最后,作为快速参考,以下是SDK通常如何使用dx.jar将java字节码与外部jar库进行索引:

[INFO]C:\Program Files\Java\jdk1.6.0\U 21\jre\bin\Java[-Xmx1024M,-jar,C:\Program Files\Android\Android sdk\platform tools\lib\dx.jar,--dex,--output=C:\workspace\myproject\target\classes.dex,C:\workspace\myprojec\libs\common-lib.jar,…]


目前,
dx.jar
已移动到

adt-bundle-*\sdk\build-tools\17.0.0\lib

您可以找到dx的源代码。

dx.jar是构建过程的一部分,用于将Java字节码转换为Dalvik字节码。您永远不会在android-8或类似目录中看到它,因为它是工具的一部分,而不是单个API级别的SDK的一部分。@Commonware如何知道它被用来将java类转换为dalvik字节码?@HugeMow:当您运行
dx
命令时,它会说:“将一组类文件转换为dex文件,可以选择嵌入jar/zip”。dx只是一个用于运行lib/dx.jar的shell脚本。