在Eclipse中的Android应用程序中,我得到了以下错误。
意想不到的顶级异常: java.lang.IllegalArgumentException:已添加:Lorg/xmlpull/v1/XmlPullParser; .... 转换到Dalvik格式失败,错误1
此错误仅在向项目添加特定的外部JAR文件时出现。我花了很长时间寻找可能的解决方案,但没有一个可行。
我甚至尝试将Android 1.6而不是1.5(我目前使用的版本)。
在Eclipse中的Android应用程序中,我得到了以下错误。
意想不到的顶级异常: java.lang.IllegalArgumentException:已添加:Lorg/xmlpull/v1/XmlPullParser; .... 转换到Dalvik格式失败,错误1
此错误仅在向项目添加特定的外部JAR文件时出现。我花了很长时间寻找可能的解决方案,但没有一个可行。
我甚至尝试将Android 1.6而不是1.5(我目前使用的版本)。
当前回答
只需要清理项目
如果这行不通,试试其他的解决方案
其他回答
这个答案基本上是很多人想说的,但很多人可能不理解。所以…
“另一个原因可能是,如果您有一个JAR文件位于 您的项目文件夹,然后将其添加为Java路径库。它 不会显示在包资源管理器下,所以你不会注意到它,但是它 会被计算两次,导致可怕的Dalvik错误。 12年1月2日6点23分拉什米。B
意义:
如果你的lib文件夹中有这两个库(.jar):
然后这两个文件夹也被添加到你的构建路径:
意味着它们被计算了两次,从而给出了错误!
解决方案:
从你的构建路径中删除这些库,并删除“Android Dependencies”: 清洁所有项目 导出您的项目 享受吧!:)
今天我自己也遇到了这个问题。清理和重建并没有解决问题。删除和重新导入项目也没有帮助。
我最终追踪到我的.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>
这里的答案对我的情况没有帮助。
对我来说,问题是mvn eclipse:eclipse正在生成一个类路径条目,这是一个Android库项目的项目引用,然而,它没有显示在eclipse构建路径设置!这意味着库类在dexer中结束了两次,一次来自隐藏的项目引用,一次来自链接库JAR。
我必须用文本编辑器打开.classpath并手动删除projects元素。这解决了问题。
我遇到了这个问题,因为Eclipse中的Android- maven -插件显然不能识别传递引用,并且从两个项目(包括一个Android库项目)中引用了两次引用,并且不止一次地包含它们。我不得不使用魔术使所有内容只包含一次,即使Maven应该处理所有这些。
例如,我有一个核心库globalmentor-core,它也被globalmentor-google和globalmentor-android使用(后者是一个Android库)。在globalmentor-android pom.xml中,我必须将依赖标记为“提供的”,并将其从其他库中排除。
<dependency>
<groupId>com.globalmentor</groupId>
<artifactId>globalmentor-core</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- android-maven-plugin can't seem to automatically keep this from being
included twice; it must therefore be included manually (either explicitly
or transitively) in dependent projects -->
<scope>provided</scope>
</dependency>
然后在最后的应用程序pom.xml中,我必须使用正确的技巧,只允许一个包含路径——以及不显式地包括核心库:
<!-- android-maven-plugin can't seem to automatically keep this from being
included twice -->
<!-- <dependency> -->
<!-- <groupId>com.globalmentor</groupId> -->
<!-- <artifactId>globalmentor-core</artifactId> -->
<!-- <version>1.0-SNAPSHOT</version> -->
<!-- </dependency> -->
<dependency>
<groupId>com.globalmentor</groupId>
<artifactId>globalmentor-google</artifactId>
<version>1.0-SNAPSHOT</version>
<exclusions>
<!-- android-maven-plugin can't seem to automatically keep this from
being included twice -->
<exclusion>
<groupId>com.globalmentor</groupId>
<artifactId>globalmentor-core</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.globalmentor</groupId>
<artifactId>globalmentor-android</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
以前提出的解决方案对我都不起作用。以我为例,当我从引用库源代码文件夹切换到使用库JAR文件时,问题发生了。 最初,在Android应用程序项目属性\ Android页面\ library部分下列出了一个Android库项目,该库也在项目资源管理器树中作为库源目录的链接进行比较。
首先,我只是从项目树中删除了目录链接,并将JAR库添加到构建路径中,但这导致了异常。
正确的过程是(在更改回构建路径并将引用放回库源代码之后):
通过移除应用程序项目属性\ Android页面中的引用,正确地删除库源目录链接 像往常一样将库JAR添加到应用程序项目构建路径。