Java 使用ant生成包含lib项目的包含lib项目的项目

Java 使用ant生成包含lib项目的包含lib项目的项目,java,android,ant,build,Java,Android,Ant,Build,我们的项目结构如下: sharedlib(lib项目,包含类,在许多应用程序中都很有用) ->主项目(lib项目,包含运行应用程序的所有内容) --->2个品牌项目(主项目具有不同的图标/样式) 在Eclipse中,主项目是一个库项目,在Android设置中引用ShareLib,两个品牌项目将主项目引用为库 如果我们在Eclipse下编译品牌项目,一切正常,但我们无法让ant build(sdk工具r16)工作。我们尝试了几种将库项目添加到品牌项目中的变体。我们遇到一个错误,即找不到库项目的类文

我们的项目结构如下:

sharedlib(lib项目,包含类,在许多应用程序中都很有用)
->主项目(lib项目,包含运行应用程序的所有内容)
--->2个品牌项目(主项目具有不同的图标/样式)

在Eclipse中,主项目是一个库项目,在Android设置中引用ShareLib,两个品牌项目将主项目引用为库

如果我们在Eclipse下编译品牌项目,一切正常,但我们无法让ant build(sdk工具r16)工作。我们尝试了几种将库项目添加到品牌项目中的变体。我们遇到一个错误,即找不到库项目的类文件,或者出现以下dex错误:

-dex:
 [echo] Converting compiled files and external libraries into .../bin/classes.dex...
[apply] 
[apply] UNEXPECTED TOP-LEVEL EXCEPTION:
[apply] java.lang.IllegalArgumentException: already added: L.../android/android/lib/R$attr;
[apply]     at com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:123)
[apply]     at com.android.dx.dex.file.DexFile.add(DexFile.java:143)
[apply]     at com.android.dx.command.dexer.Main.processClass(Main.java:372)
[apply]     at com.android.dx.command.dexer.Main.processFileBytes(Main.java:346)
[apply]     at com.android.dx.command.dexer.Main.access$400(Main.java:59)
[apply]     at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:294)
[apply]     at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:244)
[apply]     at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:130)
[apply]     at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:108)
[apply]     at com.android.dx.command.dexer.Main.processOne(Main.java:313)
[apply]     at com.android.dx.command.dexer.Main.processAllFiles(Main.java:233)
[apply]     at com.android.dx.command.dexer.Main.run(Main.java:185)
[apply]     at com.android.dx.command.dexer.Main.main(Main.java:166)
[apply]     at com.android.dx.command.Main.main(Main.java:90)
[apply] 1 error; aborting
所以问题是我们的库要么根本没有添加,要么添加了两次。
任何想法,ant构建文件如何构建品牌项目?

我也遇到了同样的错误,谷歌搜索将我带到了以下链接,它解决了我的问题

以下是对问题的解释,摘自链接:

The (admittedly ugly) message is trying to tell you that you have in
fact managed to include two classes with the same fully-qualified name
(package + name) in your dx commandline. If you are using dx
implicitly via the Eclipse plugin (looks like you are), then you have
somehow managed to add the same classes twice in the Eclipse UI. 
在这里,您可能已经在类路径中添加了两次类
L../android/android/lib/R
。类路径中似乎有两个或多个版本的具有相同包名的自动生成类
R
。检查应用程序和库,确保类
R
放在所有应用程序和库的不同包下

希望这有帮助:)