在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(我目前使用的版本)。
当前回答
我遇到了这个问题,因为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>
其他回答
我刚刚用最新的API和最新的sdk和工具安装了最新的eclipse,但是,几年过去了,这个错误并没有消失。我浪费了一天时间才想出来。尝试一切。徒劳无功。因为这个信息是非常通用的,很多不同的问题都会引发它。因此,一些人提出的解决方案并不适用于另一些人。
一个好的方法是去Window > Preferences > Android > Build and UNCHECK“Skip packaging and dexing…”这样,在构建时就可以获得更多关于特定错误的线索,而不仅仅是导出。
在我的情况下,我得到了一个“Dx不支持的类文件版本…”。这个错误我在这里没有看到报告。基于此,我发现我使用的一些旧jar是用1.6编译的,而另一些是用1.7编译的。因此,我将默认的IDE编译器遵从级别更改为1.6 (Window > Preferences > Java > compiler),在完全清理和重建我拥有的每个依赖后,我终于可以生成我的APK。
如果你在应用中使用Leadbolt广告SDK,并将“通知广告”和“显示广告”结合在一起,你需要使用pubxappCom.jar而不是pubxapp.jar来发布通知广告,否则你就会出现这个错误!
编码快乐!
您可以通过关闭菜单>“项目”>“自动构建”来轻松解决这个问题(使用Eclipse Android开发工具,构建:v22.0.1-685705),同时导出(unsigned) Android应用程序。之后,别忘了再打开它。
我也面临着这个问题,当我添加相同的jar文件与不同的版本,我只是删除旧版本的jar和清洁项目,它为我工作很好。
对于NewRelic用户:
如果你在你的应用程序中集成了newrelic jar,当newrelic版本过期时就会发生这种情况。
解决方案:
更新newrelic jar到最新版本。在eclipse上,只需右键单击项目并更新newrelic。或者你可以直接下载新版本。