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

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

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

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


当前回答

进入项目»属性»Java构建路径»库,删除除“Android X.Y”(在我的情况下是Android 1.5)之外的所有内容。单击OK。转到项目»清洁»下面所选的清洁项目»选择您的项目并单击确定。这应该有用。

也有可能你在你的项目文件夹中有一个JAR文件(我已经把Admob JAR文件复制到我的src文件夹中),然后把它添加为Java路径库。它不会显示在包资源管理器下,所以你不会注意到它,但它会被计算两次,导致可怕的Dalvik错误1。

另一个可能的原因是包名冲突。假设您有一个包com.abc.xyz,在这个包中有一个名为a .java的类,另一个库项目(添加到这个项目的依赖项中)包含相同的com.abc.xyz. a .java,那么您将得到完全相同的错误。这意味着,您对同一个文件A.java有多个引用,不能正确地构建它。

在其他情况下,如果你不小心或故意在类路径文件中手动编辑/添加任何东西,这可能会发生。在某些情况下,我们可以手动将android.jar路径添加到类路径文件中以生成java doc。删除后,javadoc生成的代码将工作正常。如果还有问题,也请检查一下。

其他回答

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

我用另一种方法找到了解决办法。 https://stackoverflow.com/a/14948244/1014288

多亏了这个,你可以修复没有删除和东西

只需要清理项目

如果这行不通,试试其他的解决方案

我个人通过手动编辑项目设法解决了这个问题。属性文件。

它是什么:

target=android-16
android.library.reference.1=..\\..\\github\\ActionBarSherlock\\library
android.library.reference.2=../../github/android-numberpicker/library

我把它改成这样问题就解决了

target=android-16
android.library.reference.1=../../github/ActionBarSherlock/library
android.library.reference.2=../../github/android-numberpicker/library

使用“修复项目属性”工具未自动修复此文件。

我在这里没有工作,我不得不改变我的proguard文件添加这一行:

-keep class !mycode.** { *; }

它保留了任何不是我的包的代码。