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

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

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

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


当前回答

在我的项目中使用Sherlock ActionBar库时,我已经处理了这个问题。 你可以做下面的步骤,这对我来说是工作。

右键单击项目,选择属性。 将出现一个对话框,在左侧菜单中选择“Java build path”。 删除右边面板上的“Android依赖”和“Android私有库”,然后单击确定 清理项目(选择菜单project—> Clean) 右键单击项目,选择Android工具->修复项目属性 再次清理项目。 重新启动计算机 打开eclipse,导出apk

希望这对你有所帮助。

其他回答

Windows 7解决方案:

确认该问题是由文件中的ProGuard命令行导致的 [Android SDK安装目录]\tools\proguard\bin\proguard.bat

编辑下面这行就可以解决问题了:

call %java_exe% -jar "%PROGUARD_HOME%"\lib\proguard.jar %*

to

call %java_exe% -jar "%PROGUARD_HOME%"\lib\proguard.jar %1 %2 %3 %4 %5 %6 %7 %8 %9

转到项目,然后取消勾选“自动构建”。然后尝试导出项目,错误就消失了。

在我的案例中,这个问题起源于2011年3月更新Eclipse和ADT之后。在我的项目中,我正在使用一个JAR,它正在产生问题来重建,以前的解决方案都不起作用。我花了好几天的时间,到处找都没有满意的答案。显然,.jar文件有双重引用。

最后我:

从库中删除了所有引用, 删除应用程序中的物理文件表单。 使用“添加外部jar”获得。jar(位于项目外部的另一个目录) 执行项目“清洁”, 用(ctrl)+(shift)+O将引用更新到调用jar的模块中

它终于编译成功了。

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

如果你有ADT版本12+,你应该更新你的防护从4.4 -> 4.6(如这里所述)。此外,您应该以原始形式保留…\bin\proguard.bat文件。

只需从网上下载它,并复制lib文件夹从下载包到:

[Android SDK安装目录]\tools\proguard\lib