在Eclipse中的Android应用程序中,我得到了以下错误。

意想不到的顶级异常: java.lang.IllegalArgumentException:已添加:Lorg/xmlpull/v1/XmlPullParser; .... 转换到Dalvik格式失败,错误1

此错误仅在向项目添加特定的外部JAR文件时出现。我花了很长时间寻找可能的解决方案,但没有一个可行。

我甚至尝试将Android 1.6而不是1.5(我目前使用的版本)。


当前回答

我知道这个问题已经有答案了,但这是我的解决方案:

我的Android项目来自一个Subversion存储库,我刚刚做了Checkout as a New project。我必须手动将我的库(Android和Java)添加到构建路径,否则它不会让我编译。然后我就会得到上面的错误。

我必须创建一个新的Android项目,然后手动复制更改。

其他回答

我遍历了这个答案中的步骤,仍然没有得到解决方案。我一直在网上搜索,发现如果你试图在Android设备连接到计算机时导出APK,就会得到这个错误。

断开我的设备,然后关闭项目,重新启动计算机,打开项目,然后清理它,这三次都发生了。

通常对我来说,清理项目并不能解决这个问题。

但是在Eclipse中关闭项目,然后重新打开它似乎可以修复这些情况……

我的问题是Ant + ProGuard + AdMob SDK库+ Debug模式的集成。我正在使用Ant构建调试APK,并将AdMob SDK JAR添加到libs/目录。Eclipse正常生成调试APK,但Ant不能。我得到了如下错误。

[应用]意想不到的顶级异常: [apply] java.lang.IllegalArgumentException: already added: Lcom/谷歌/ads/AdActivity; [应用]在com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:123)

我还在build.xml中为调试构建打开了ProGuard(默认是关闭的):

<target name="-debug-obfuscation-check">
    <property name="proguard.enabled" value="true"/>
</target>

这就是问题所在。不知何故,ProGuard和AdMob SDK在调试模式下无法共存。ProGuard没有混淆AdActivity类,所以它出现在bin/ ProGuard / obfusated . JAR中,但同样的类存在于AdMob SDK JAR文件中。Eclipse在没有ProGuard的情况下构建调试APK,所以它工作得很好。

所以我的解决方案是关闭ProGuard来调试build.xml中的构建。 我希望它能帮助到一些人。

下面是另一个场景和解决方案:

如果您最近在更新Eclipse ADT后遇到这个问题:

在你的应用项目中,检查任何指向你的库项目的链接源文件夹(它们的名称以“LibraryName_src”的形式存在)。 选择所有这些项目,右键单击,选择“构建路径”->“从构建路径中删除”。 选择“也从项目中取消该文件夹的链接”,然后单击“是”。 清理、重新构建和重新部署项目。

原因似乎是ADT以前的一些版本将库项目源文件夹链接到“子”项目,而当前ADT/Dex组合不再与该解决方案兼容。

编辑:这一点在Android开发博客的一篇文章中得到了证实,特别是这篇文章——见第8段。

我解决了这个问题。

这是一个JAR文件冲突。

我的构建路径上似乎有两个包含相同包和类的JAR文件。

jar和android_maps_lib-1.0.2

从一个JAR文件中删除这个包就解决了这个问题。