在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(我目前使用的版本)。
当前回答
我在这里没有工作,我不得不改变我的proguard文件添加这一行:
-keep class !mycode.** { *; }
它保留了任何不是我的包的代码。
其他回答
我也有同样的问题。当我检查时,我看到有两个类具有相同的名称,每个类在我添加的外部jar文件中。然后我必须删除一个jar文件。幸运的是,我得到了另一个jar文件1我已经删除。
我解决了这个问题。
这是一个JAR文件冲突。
我的构建路径上似乎有两个包含相同包和类的JAR文件。
jar和android_maps_lib-1.0.2
从一个JAR文件中删除这个包就解决了这个问题。
我还发现了别的东西。Android使用/libs目录存放JAR文件。我曾多次看到“转换到Dalvik格式失败,错误1”的错误,总是在我的JAR文件中出错时出现。
现在我将Roboguice升级到一个新版本,方法是将新的JAR文件放在/libs目录中,并将类路径切换到新版本。这导致了Dalvik错误。
当我从/libs文件夹中删除一个Roboguice JAR文件时,错误消失了。显然,Android会从/libs中获取所有JAR文件,而不管您在Java构建路径中指定了哪些文件。我不太记得了,但我认为Android从Android 4.0 (Ice Cream Sandwich, ICS)开始默认使用/libs。
我自己的解决方案,也是我今天在测试所有解决方案四个小时后发现的唯一解决方案,是以下提供的许多解决方案的组合:
从Eclipse中删除项目 从项目文件夹中删除\bin和\gen中的文件 将对库的引用删除到根项目文件夹的.classpath文件中 使用命令行重新启动Eclipse: Eclipse -clean 导入项目 右键单击项目-选择属性> Java Build Path > Libraries,删除除Android XX以外的所有内容。Y 最后清理项目,等待自动构建或构建它 启动,现在它工作了!至少对我来说……
我一次尝试了每一步,尝试了许多组合,但只有把所有的步骤同时进行才成功!我希望我不会再面对这种情况……
下面是另一个场景和解决方案:
如果您最近在更新Eclipse ADT后遇到这个问题:
在你的应用项目中,检查任何指向你的库项目的链接源文件夹(它们的名称以“LibraryName_src”的形式存在)。 选择所有这些项目,右键单击,选择“构建路径”->“从构建路径中删除”。 选择“也从项目中取消该文件夹的链接”,然后单击“是”。 清理、重新构建和重新部署项目。
原因似乎是ADT以前的一些版本将库项目源文件夹链接到“子”项目,而当前ADT/Dex组合不再与该解决方案兼容。
编辑:这一点在Android开发博客的一篇文章中得到了证实,特别是这篇文章——见第8段。