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

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

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

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


当前回答

如果你想解决这个问题,那么你必须把Android SDK1.6换成Android 2.2。之后,清理项目,然后构建并运行。然后您将看到您的应用程序正在运行。

其他回答

最好将所有*.jar文件包含在项目文件夹树的“lib”目录中。这样,您就不需要通过转到项目的属性来定义构建路径。"lib"已经是一个构建路径

对我来说,问题在于我设置了错误的编译器遵从级别(1.8而不是1.7)。

这个答案解决了问题:

在Project SDK部分,当你添加Android SDK时,你应该 提供Java SDK和所有我的Android SDK使用Java 8作为SDK,所以它 创建版本错误的类文件,即使项目 等级是1.7(我不知道为什么,我以为一切都被选中了 按项目级别划分)。现在我改变了SDK (java版本“1.x.0”) 部分)。

您可以通过关闭菜单>“项目”>“自动构建”来轻松解决这个问题(使用Eclipse Android开发工具,构建:v22.0.1-685705),同时导出(unsigned) Android应用程序。之后,别忘了再打开它。

这些答案对我都没用。我的问题是由JUnit和hamcrest引起的。参见java.lang.IllegalArgumentException: already added: Lorg/hamcrest/BaseDescription;转换到Dalvik格式失败,错误1

在大多数情况下,这个问题是由Proguard的bug或损坏版本引起的,因为一些奇怪的原因,Proguard通常会从官方的Android SDK管理器安装

请不要编辑Proguard的bat文件,以免出现后续问题,如果遇到此问题,请到官方网站下载最新稳定版本的Proguard,并替换所有的Proguard文件

android-sdk\tools\proguard

使用从下载的存档中提取的最新保护文件。

没有必要删除所有外部库的依赖关系,如果开发人员添加一个库到他的项目中,最有可能的是这个库是需要的。