如何在Android中将class文件转换为dex文件?有什么方法吗?
使用以下命令和选项“--dex”调用“dx”命令。
dx --dex --output=<output-file> <input-file>
"dx"命令包含在Android SDK中。该命令的位置会有所不同。请尝试搜索:
<SDK-HOME>/platform-tools/
<SDK-HOME>/platforms/<platform>/tools/
“dx --dex” 可以接受一些选项。例如,“--no-strict” 选项将跳过检查输入类文件的路径名称是否与声明的包/类名称匹配,因此如果您使用此选项调用 dx,则会获得与 WebService.class 不同的结果。可能,“--keep-classes” 选项在您想要在 Android 和 Java SE 上使用 jar 文件时很有用。没有 “--keep-classes” 选项,dx 命令会将输入 jar 文件中的所有 .class 文件替换为一个名为 “classes.dex”的文件,但使用 “--keep-classes” 选项,输入的 .class 文件也会放入输出文件以及 classes.dex 中。
ex:
dx --dex --keep-classes --output=output.jar input.jar
我阅读了dx的源代码,并在以下页面上列出了使用说明和一些解释。
dx --dex的用法:
http://darutk-oboegaki.blogspot.com/2011/03/usage-of-dx-dex-dx-dex.html
<property name="dx" value="${android_sdk}/build_tools/18.1.0/dx" />
<target name="convert_jar_to_dex">
<apply executable="${dx}" failonerror="true" parallel="true">
<arg value="-JXms1024m" />
<arg value="-JXss1024k" />
<arg value="--dex" />
<arg value="--verbose" />
<arg value="--no-strict" />
<arg value="--num-threads=4" />
<arg value="--output=${basedir}/bin/output.dex" />
<fileset file="${basedir}/input.jar"/>
</apply>
</target>
为darutk的回答添加更多信息:
dx命令包含在Android SDK中
例如:D:\Android\AndroidSDK\build-tools\23.0.1\
其中23.0.1是Android版本号