在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(我目前使用的版本)。
当前回答
我还发现了别的东西。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。
其他回答
我清理了我的主应用程序项目和它使用的Android库项目。解决问题
我使用的是安卓1.6,有一个外部JAR文件。对我有用的是删除所有库,右键单击项目并选择Android Tools -> *Fix项目属性(添加回Android 1.6),然后添加回外部JAR文件。
我的问题是由ADT版本12.0和ProGuard集成引起的。 这个错误有很好的文档,解决方案也在文档中
答案在这里
ProGuard命令行
在我的案例中,这个问题起源于2011年3月更新Eclipse和ADT之后。在我的项目中,我正在使用一个JAR,它正在产生问题来重建,以前的解决方案都不起作用。我花了好几天的时间,到处找都没有满意的答案。显然,.jar文件有双重引用。
最后我:
从库中删除了所有引用, 删除应用程序中的物理文件表单。 使用“添加外部jar”获得。jar(位于项目外部的另一个目录) 执行项目“清洁”, 用(ctrl)+(shift)+O将引用更新到调用jar的模块中
它终于编译成功了。
如果你有ADT版本12+,你应该更新你的防护从4.4 -> 4.6(如这里所述)。此外,您应该以原始形式保留…\bin\proguard.bat文件。
只需从网上下载它,并复制lib文件夹从下载包到:
[Android SDK安装目录]\tools\proguard\lib