安卓SDK中的dx.jar是什么?

10

我在安装 Android SDK 管理器中的某些版本时看到了 dx.jar 文件,它位于 tools/lib/dx.jar 下面。但在 Android-8 及以上版本中,我没有看到这个文件。然而,当我尝试使用 Android-8 及以上版本构建项目时,Intellij IDEA 报错说找不到 dx.jar 文件。这是怎么回事呢?

谢谢, Tom


6
dx.jar 是构建过程的一部分,用于将 Java 字节码转换为 Dalvik 字节码。你永远不会在 android-8 或类似目录中看到它,因为它是工具的一部分,而不是单个 API 级别的 SDK 的一部分。 - CommonsWare
@CommonsWare 你是怎么知道它被用来将Java类转换为Dalvik字节码的? - hugemeow
1
@hugemeow:当你运行 dx 命令时,它会显示:“将一组 class 文件转换为 dex 文件,可选择将其嵌入到 jar/zip 中”。 - CommonsWare
3个回答

7

目前,dx.jar已经被移动到

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

您可以在这里找到dx的源代码。

4

除了CommonsWare的评论之外,还有一些其他信息。

在android-3和android-4中,dx.jar最初位于android-sdk/platforms/android-X/tools/lib/下,后来移动到android-sdk/platform-tools/lib/下。不幸的是,这从未在任何官方来源中记录,可能是因为它是Google不希望消费者开发者受到困扰的内部工具的一部分。查看这篇博客以了解问题。

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

最后,作为一个快速参考,这是SDK通常如何使用dx.jar与外部jar库一起对您的java字节码进行dex的命令:

[INFO] C:\Program Files\Java\jdk1.6.0_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\myproject\target\classes, C:\workspace\myprojec\libs\common-lib.jar, ... ...]


1

由于某些原因,我在各种Android SDK版本的子目录中看到了几个版本(不同大小的文件)的dx和dx.jar。我过去一直通过Eclipse来管理SDK,但几个月前在这方面发生了变化(现在有一个单独的SDK管理器窗口),所以可能在过渡过程中出了些问题...


1
dx 只是一个用于运行 lib/dx.jar 的 shell 脚本。 - yorkw

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接