Android构建可以在Eclipse中工作,但不能与Ant一起工作(“已添加”)

Android构建可以在Eclipse中工作,但不能与Ant一起工作(“已添加”),android,ant,apk,dex,Android,Ant,Apk,Dex,我的Android项目使用几个标记为Android库的git子模块。这些子模块对ORMlite Android JAR都有不同的用途,因此ORMlite JAR包含在它们的libs目录中。Eclipse正确地处理了这种情况:它在dex处理期间包含一次ORMlite JAR,并生成一个有效的.apk,但是当我通过ant debug运行构建时,我得到: [echo] Converting compiled files and external libraries into /home/webedi

我的Android项目使用几个标记为Android库的git子模块。这些子模块对ORMlite Android JAR都有不同的用途,因此ORMlite JAR包含在它们的
libs
目录中。Eclipse正确地处理了这种情况:它在
dex
处理期间包含一次ORMlite JAR,并生成一个有效的.apk,但是当我通过
ant debug
运行构建时,我得到:

 [echo] Converting compiled files and external libraries into /home/webedit/.hudson/jobs/xyz/workspace/bin/classes.dex...
[apply] 
[apply] UNEXPECTED TOP-LEVEL EXCEPTION:
[apply] java.lang.IllegalArgumentException: already added: Lcom/j256/ormlite/android/AndroidCompiledStatement;
[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:338)
[apply]     at com.android.dx.command.dexer.Main.processFileBytes(Main.java:315)
[apply]     at com.android.dx.command.dexer.Main.access$100(Main.java:56)
[apply]     at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:266)
[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:284)
[apply]     at com.android.dx.command.dexer.Main.processAllFiles(Main.java:220)
[apply]     at com.android.dx.command.dexer.Main.run(Main.java:176)
[apply]     at com.android.dx.command.dexer.Main.main(Main.java:157)
[apply]     at com.android.dx.command.Main.main(Main.java:89)

有没有办法让同一个JAR的多个副本散布在多个库中?有没有一个Ant build设置我可以更改以使其工作?

我通过创建第三个Android项目解决了我的问题,该项目中只有其他两个项目所依赖的ORMlite JAR。

我的问题是任何./libs文件夹中的所有JAR都包含在内,而不仅仅是eclipse.classpath中指定的JAR。所以我在那里放了一些复制品。我只需要清理一下我的/libs。您可以通过在输出的上半部分运行“ant-v debug”来找出ant在其“类路径”中包含的内容。

也有同样的问题,但android-support-v4.jar使用了它,它被用于引用的项目库和应用程序项目中。这是解决办法

解决方法: 1.从App/libs中删除文件android-support-v4.jar 2.在Eclipse中,添加引用到ReferencedProjectLibrary/libs/android-support-v4.jar的jar


它也适用于Eclipse和Ant;)

我在使用maven时遇到了同样的问题,因为它正确地添加了ormlite core jarfile,该文件包含作为core jar的包和类以及一些附加类

我添加了一个排除项,现在它可以工作了

            <dependency>
                <groupId>com.j256.ormlite</groupId>
                <artifactId>ormlite-android</artifactId>
                <version>4.9</version>
                <exclusions>
                    <exclusion>
                        <groupId>com.j256.ormlite</groupId>
                        <artifactId>ormlite-core</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

com.j256.ormlite
奥姆利特机器人
4.9
com.j256.ormlite
奥姆利特岩芯

我的错误是:已添加:Lcom/j256/ormlite/dao/BaseDaoImpl$1这就是我要找的:)谢谢!ormlite的最新版本似乎没有遇到这个问题。我在使用android studio和gradle时遇到了同样的问题。我通过
编译'com.j256.ormlite:ormlite android:4.9'
将依赖项添加到build.gradle中,libs按预期下载和链接。但是由于JAR包含一些重复的类,我已经添加了
:Lcom/j256/ormlite/dao/BaseDaoImpl$1
异常。有没有办法用gradle和build tools 18.0.1解决这个问题?@cybergen,你能试试更新的版本吗(4.46是目前最新的版本)正如我前面提到的,我没有在更新的版本中遇到错误。否则,尝试排除可传递依赖项(49.4.7.)