在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(我使用的当前版本)。
Answers:
转到项目»属性»Java构建路径»库,并删除除“ Android XY”(在我的情况下为Android 1.5)以外的所有内容。单击确定。转到项目»清洁»清洁下面选择的项目»选择您的项目,然后单击确定。那应该工作。
也有可能在项目文件夹中的某个位置有一个JAR文件(我已将Admob JAR文件复制到我的src文件夹中),然后将其添加为Java路径库。它不会显示在“程序包资源管理器”下,因此您不会注意到它,但是它确实被计数了两次,从而导致了可怕的Dalvik错误1。
另一个可能的原因可能是程序包名称冲突。假设您有一个包com.abc.xyz
和一个A.java
在该包内命名的类,以及另一个包含相同包的库项目(已添加到该项目的依赖项中)com.abc.xyz.A.java
,那么您将得到完全相同的错误。这意味着,您对同一个文件有多个引用,A.java
并且无法正确构建它。
在其他方式下,如果您不小心或故意在类路径文件中手动编辑/添加了任何东西,则可能会发生这种情况。在某些情况下,我们可能会在类路径文件中手动添加android.jar路径以生成Java doc。代码可以正常工作。如果仍然有任何代码发生,请检查此代码。
我解决了问题。
这是一个JAR文件冲突。
看来我的构建路径上有两个JAR文件,其中包含相同的包和类。
smack.jar
和 android_maps_lib-1.0.2
从一个JAR文件中删除此程序包解决了该问题。
ScoreloopUI
项目添加到AndEngine游戏中的方式,那么即使这些jar不在您自己项目的构建路径中,它们也会干扰您的jar。
Windows 7解决方案:
确认问题是由文件
[Android SDK安装目录] \ tools \ proguard \ bin \ proguard.bat中的ProGuard命令行引起的
编辑以下行即可解决问题:
call %java_exe% -jar "%PROGUARD_HOME%"\lib\proguard.jar %*
至
call %java_exe% -jar "%PROGUARD_HOME%"\lib\proguard.jar %1 %2 %3 %4 %5 %6 %7 %8 %9
您可以在导出(未签名)Android应用程序时关闭菜单>“项目”>“自动构建”,从而轻松解决此问题(使用Eclipse Android Developer Tools,内部版本:v22.0.1-685705)。之后,别忘了再次打开它。
如果你有ADT修订12+,你应该从4.4更新您的ProGuard - > 4.6(描述在这里)。另外,您应将... \ bin \ proguard.bat文件保留为原始格式。
只需从网络下载它,然后将lib文件夹从下载的软件包复制到:
[Android SDK安装目录] \ tools \ proguard \ lib
<sdk>/tools/proguard
目录,然后将完整的解压缩proguard4.11
目录移到了旧路径。瞧!现在,只要我能恢复以前的时光... -_-
编辑(新解决方案):
看起来以前的解决方案只是一个绕过。我终于设法永久解决了该问题:就我而言,我的项目中的android-support-v4文件和项目中引用的Facebook项目中的android-support-v4文件都不匹配。
我通过执行Lint Check(Android工具/ Run Lint:检查常见错误)发现了此错误
我以前的解决方案:
我在该网站上尝试了任何可能的解决方案-没有任何帮助!!!
最后,我在这里找到了答案:https : //groups.google.com/forum/#!topic/actionbarsherlock/drzI7pEvKd4
简单步骤:
转到项目->取消选中自动构建
转到项目->清理...,同时清理库项目和您的应用程序项目
在仍然禁用自动构建的情况下,将您的应用导出为签名的APK
这是另一种方案和解决方案:
如果您在更新ADT for Eclipse后最近遇到此问题:
似乎原因是ADT的某些先前版本将Library项目源文件夹链接到“子”项目,而当前的ADT / Dex组合不再与该解决方案兼容。
编辑:这已由Android Dev Blog条目确认,特别是这一条 -参见第8段。
每当出现此错误时,简单地清理项目就对我有用。
经过四个小时的测试,我今天找到的我自己的唯一解决方案是这里提供的许多解决方案的组合:
Delete
Eclipse的项目\bin
,并\gen
从项目文件夹.classpath
根项目文件夹中的文件中eclipse -clean
Import
项目Properties
> Java Build Path
> Libraries
和其他一切删除比Android XX.Y
clean
项目,等待自动建筑物或Build
它我一次尝试了每一个步骤,并尝试了许多组合,但是只有一次连续完成所有步骤!我希望我不会再面对这个...
bin
文件夹对我有用。
仅对于仍然有此问题的其他人,他们已经尝试了上述答案,但仍然收到错误(这是我的情况),那么我的解决方案是从Eclipse中删除项目,然后再次将其重新导入。
这使得Android库再次被添加到我引用的库中,所以现在我引用了两个Android JAR文件,因此我删除了其中一个,现在可以正常编译了。
解决方案:从Eclipse IDE中删除该项目,然后再次将其重新导入,然后检查上述解决方案。
今天我自己遇到了这个问题。清洁和重建不能解决问题。删除并重新导入项目也无济于事。
最后,我将其追溯到对.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>
在项目中使用Sherlock ActionBar库时,我已经解决了这个问题。您可以执行以下步骤,这对我来说很有效。
希望对您有所帮助。
我发现了其他东西。Android将/libs
目录用于JAR文件。我无数次看到“向Dalvik格式转换失败,并出现错误1”错误,总是在我的JAR文件中出错的时候出现。
现在,通过将新的JAR文件放在/libs
目录中并将类路径切换到新版本,我将Roboguice升级到了新版本。这导致了Dalvik错误。
当我从/libs
文件夹中删除Roboguice JAR文件之一时,错误消失了。显然,Android会从中拾取所有JAR文件/libs
,无论您在Java构建路径中指定了哪个文件。我记不清了,但是我认为Android从Android 4.0(Ice Cream Sandwich,ICS)开始/libs
默认使用。
通常,当构建路径中没有不必要的JAR文件时,似乎会出现此问题。
我在处理IntelliJ IDEA时遇到了这个问题。对我来说,发生这种情况是因为我添加了JUnit和Mockito库,它们是在运行时编译的。需要在模块属性中将其设置为“测试”。
以前提出的解决方案都没有对我有用。就我而言,当我从引用库源代码文件夹切换为使用库JAR文件时,便发生了问题。最初,在Android应用程序项目的Properties \ Android page \ Library部分下列出了一个Android库项目,并且该库还在项目浏览器树中进行了比较,作为指向库源目录的链接。
首先,我只是从项目树中删除了目录链接,然后将JAR库添加到了构建路径,但这引起了异常。
正确的过程是(在更改构建路径并将引用放回库源之后):
通过从应用程序项目Properties \ Android页面中实际删除引用来正确删除库源目录链接
照常将库JAR添加到应用程序项目的构建路径。
我遇到了同样的问题,所有这些解决方案均无效。最终,我在控制台中看到错误是由于重复的类(现有项目中的一个,添加的jar文件中的一个)造成的:
java.lang.IllegalArgumentException: already added: package/MyClassclass;
[2011-01-19 14:54:05 - ...]: Dx1 error; aborting
[2011-01-19 14:54:05 - ...] Conversion to Dalvik format failed with error 1
因此,请检查您是否在项目中添加了具有重复类的jar。如果是,请尝试删除其中之一。
它为我工作。
我遇到了这个问题,但是我的解决方案是双重的。1.)我必须在project- > properties- > Android下添加一个Android目标版本。2.)我没有所有的Google“第三方插件”。在可用软件包 -> 第三方加载项 -> Google Inc下,在AVD SDK管理器中单击。我下载了所有SDK,就解决了我的问题。
我遇到了这个问题,因为Eclipse中的Android-Maven-plugin显然无法识别可传递引用,以及从多个项目(包括Android库项目)中两次引用的引用,并且多次引用了它们。我不得不使用hocus-pocus来使所有内容仅包含一次,即使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>
<extractDuplicates>true</extractDuplicates>
在android-maven-plugin中解决了该问题,mvn install
但未解决mvn deploy
我所描述的错误的地方……真的很奇怪