从App以及Android Library Project访问常见的jar文件

时间:2012-01-12 11:53:40

标签: android android-ndk static-libraries android-library

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

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

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

[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的这个问题?

1 个答案:

答案 0 :(得分:0)

希望我不会混淆关于在eclipse中构建android项目的规则与使用android工具链在ant中构建项目......(运气好的话,你不必像我这样做两者)) / p>

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

在处理这个问题时,另一个建议,早期和经常蚂蚁清洁。很容易意外地将一些类构建到一个项目罐中,然后发生冲突。