0

我有一个静态 java 库(classes.jar)文件,其中包含 Android 库项目和调用此 Android 库项目的依赖应用程序通用的源代码。

我正在使用 ant env 在 linux 机器上编译代码。

但是当我在 ALP 和 App 的 libs 文件夹下包含这个 jar 文件时,它会出现以下编译错误:

[dex] Converting compiled files and external libraries into classes.dex...
       [dx] 
       [dx] UNEXPECTED TOP-LEVEL EXCEPTION:
       [dx] java.lang.IllegalArgumentException: already added: Lcom/android/test/ProgramCache;
       [dx]     at com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:123)
       [dx]     at com.android.dx.dex.file.DexFile.add(DexFile.java:163)
       [dx]     at com.android.dx.command.dexer.Main.processClass(Main.java:486)
       [dx]     at com.android.dx.command.dexer.Main.processFileBytes(Main.java:455)
       [dx]     at com.android.dx.command.dexer.Main.access$400(Main.java:67)
       [dx]     at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:394)
       [dx]     at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:245)
       [dx]     at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:131)
       [dx]     at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:109)
       [dx]     at com.android.dx.command.dexer.Main.processOne(Main.java:418)
       [dx]     at com.android.dx.command.dexer.Main.processAllFiles(Main.java:329)
       [dx]     at com.android.dx.command.dexer.Main.run(Main.java:206)
       [dx]     at com.android.dx.command.dexer.Main.main(Main.java:174)
       [dx]     at com.android.dx.command.Main.main(Main.java:95)
       [dx] 1 error; aborting

我将如何解决常见jar的这个问题?

4

1 回答 1

0

希望我不会将在 Eclipse 中构建 android 项目的规则与在 ant 中使用 android 工具链构建项目的规则混为一谈……(运气好的话,你不必像我一样做这两个 :))

android 共享库的 /libs 文件夹中的任何 jar 文件都会自动包含在命令行 android 构建工具中。虽然我不记得它们是复制到磁盘上,还是仅在编译期间添加到构建路径中,但只需从 App/libs 中删除 jar 就足够了。

处理此问题时的另一个建议是,尽早并经常清理蚂蚁。很容易意外地将一些类构建到您的项目 jar 中,然后在以后发生冲突。

于 2012-01-14T00:43:26.457 回答