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

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

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

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


当前回答

对于我来说,在我的构建路径中出现了一个额外的JAR引用。我把这个删了,现在可以用了。

其他回答

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

我在其类路径中包含protobuf lite (Protocol Buffers by谷歌)的项目中有完全相同的错误。我想原因是我的类路径和项目文件夹中的protobuf-lite.jar是在我以前的机器中构建的。当我下载Maven并重新构建protobuf-lite.jar文件,然后将其作为用户库重新添加到我的项目中时,一切都很正常。

进入项目»属性»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生成的代码将工作正常。如果还有问题,也请检查一下。

这里的答案对我的情况没有帮助。

对我来说,问题是mvn eclipse:eclipse正在生成一个类路径条目,这是一个Android库项目的项目引用,然而,它没有显示在eclipse构建路径设置!这意味着库类在dexer中结束了两次,一次来自隐藏的项目引用,一次来自链接库JAR。

我必须用文本编辑器打开.classpath并手动删除projects元素。这解决了问题。

今天我自己也遇到了这个问题。清理和重建并没有解决问题。删除和重新导入项目也没有帮助。

我最终追踪到我的.class文件中的一个坏添加。我认为这是由插件工具添加的,当我试图解决另一个问题时,删除它摆脱了“转换到Dalvik格式失败,错误1”的构建错误:

<classpathentry kind="lib" path="C:/dev/repository/android-sdk-windows/platforms/android-3/android.jar">
    <attributes>
        <attribute name="javadoc_location" value="file:/C:/dev/repository/android-sdk-windows/docs/reference"/>
    </attributes>
    <accessrules>
        <accessrule kind="nonaccessible" pattern="com/android/internal/**"/>
    </accessrules>