从Java源代码创建DEX文件

时间:2015-03-30 14:06:07

标签: java android jar dex dx

我在网上广泛搜索了使用Android SDK DX工具创建Android DEX文件(Java Dalvik字节码)的综合指南。

我的目标是创建一个包含DEX字节代码的Jar文件,该代码可以在运行时由应用程序加载。

要创建Jar文件,我一直在执行以下步骤:

  1. 包含公共类(Name.java)的Java源代码
  2. 使用javac Name.java
  3. 将步骤1中的.java文件编译为.class文件
  4. 从类文件中创建一个Jar文件。 jar cvf output.jar name.class
  5. 使用dx工具将类文件转换为classes.dex。 ./dx --dex --output=classes.dex output.jar
  6. 使用aapt将jar文件重新打包到classes.dex文件中。
  7. 到目前为止,我已成功进入第4步,这是我遇到问题的地方。运行dx工具时,出现以下错误:

    UNEXPECTED TOP-LEVEL EXCEPTION:
    java.io.FileNotFoundException: /home/del/Desktop/AndroidJarBuilder/output.jar (No such file or directory)
        at java.util.zip.ZipFile.open(Native Method)
        at java.util.zip.ZipFile.<init>(ZipFile.java:215)
        at java.util.zip.ZipFile.<init>(ZipFile.java:145)
        at java.util.zip.ZipFile.<init>(ZipFile.java:159)
        at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:244)
        at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166)
        at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)
        at com.android.dx.command.dexer.Main.processOne(Main.java:632)
        at com.android.dx.command.dexer.Main.processAllFiles(Main.java:510)
        at com.android.dx.command.dexer.Main.runMonoDex(Main.java:280)
        at com.android.dx.command.dexer.Main.run(Main.java:246)
        at com.android.dx.command.dexer.Main.main(Main.java:215)
        at com.android.dx.command.Main.main(Main.java:106)
    1 error; aborting
    

    我想知道是否有人之前遇到过这个问题,我在Stack Overflow上找不到任何答案,而网络的其余部分并未向我提供任何解决方案。

    提前致谢。

1 个答案:

答案 0 :(得分:1)

结果jar命令的输出需要与类的名称相同。

output.jar重命名为Name.jar似乎可以解决问题。