提问



在我在Eclipse中的Android应用程序中,我收到以下错误。



  意外的顶级例外:

  java.lang.IllegalArgumentException:已添加:Lorg/xmlpull/v1/XmlPullParser;

  ....

  转换为Dalvik格式失败,错误1




仅当我将特定外部JAR文件添加到项目时才会出现此错误。我搜索了很长时间以寻找可能的解决方案,但没有一种可行的解决方案可行。我甚至尝试改为Android 1.6而不是1.5(我使用的当前版本)。

最佳参考


转到项目»属性»Java构建路径»库并删除除Android X.Y之外的所有内容(在我的案例中为Android 1.5)。单击确定。转到项目»清除»清除下面选择的项目»选择项目,然后单击确定。这应该工作。


您可能还有一个位于项目文件夹中某处的JAR文件(我已将Admob JAR文件复制到我的src文件夹中),然后将其添加为Java Path Library。它没有显示在Package Explorer下,所以你没有注意到它,但它确实被计算了两次,导致可怕的Dalvik错误1。


另一个可能的原因可能是包名冲突。假设你在这个包中有一个包com.abc.xyz和一个名为A.java的类,以及另一个包含相同com.abc.xyz.A.java的库项目(添加到该项目的依赖项中),那么你将得到完全相同的错误。这意味着,您有多个对同一文件A.java的引用,并且无法正确构建它。


在其他方面,如果您不小心或故意在手动编辑/添加类路径文件中的任何内容,可能会发生这种情况。在某些情况下,我们可能会手动将android.jar路径添加到类路径文件中以生成java doc.On在生成javadoc后删除它代码将工作正常。如果仍然出现任何一个,请检查这一点。

其它参考1


我解决了这个问题。


这是一个JAR文件冲突。


似乎我的buildpath上有两个包含相同包和类的JAR文件。


smack.jarandroid_maps_lib-1.0.2


从其中一个JAR文件中删除此包解决了该问题。

其它参考2


Windows 7解决方案:


确认问题是由文件
中的ProGuard命令行引起的
[[Android SDK安装目录]] \\ tools \\ proguard \\ bin \\ proguard.bat


编辑以下行将解决问题:


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

其它参考3


您可以在导出(未)签名的Android应用程序时通过关闭菜单>项目>自动构建轻松解决此问题(使用Eclipse Android Developer Tools,Build:v22.0.1-685705)。在那之后,别忘了再打开它。

其它参考4


如果你有ADT修订版12+,你应该从4.4 - > 4.6更新你的程序(如这里所述)。此外,您应该以原始形式保留... \\ bin \\ proguard.bat文件。[36]


只需从Web下载它,并将lib文件夹从下载的包复制到:


[[Android SDK安装目录]] \\ tools \\ proguard \\ lib

其它参考5


编辑(新解决方案):


看起来以前的解决方案只是旁路。我设法永远解决了这个问题:
在我的情况下,我的项目和我的项目中引用的Facebook项目中的android-support-v4文件不匹配。


我通过执行Lint Check(Android工具/运行Lint:检查常见错误)发现此错误


我之前的解决方案:


我在这个网站上尝试了任何可能的解决方案 - 没有任何帮助!


最后我在这里找到了答案:
https://groups.google.com/forum/#!topic/actionbarsherlock/drzI7pEvKd4[37]


简单步骤:



  转到项目 - >取消选中自动构建

  
  转到项目 - >清理...,清理库项目和您的
  应用项目

  
  将您的应用导出为已签名的APK,而自动构建仍然是
  残


其它参考6


这是另一个场景和解决方案:


如果在更新ADT for Eclipse后最近遇到此问题:



  1. 在您的应用项目中,检查指向您的图书馆项目的所有链接源文件夹(它们的名称格式为LibraryName_src)。

  2. 选择所有这些项目,右键单击,选择构建路径 - >从构建路径中删除

  3. 选择同时取消文件夹与项目的链接,然后点击

  4. 清理,重建和重新部署项目。



似乎原因是某些先前版本的ADT将库项目源文件夹链接到子项目,并且当前的ADT/Dex组合不再与该解决方案兼容。


编辑:这是由Android Dev Blog条目确认的,特别是这一条 - 请参阅第8段。[38]

其它参考7


转到项目,然后取消选中自动构建。然后尝试导出项目,错误消失。

其它参考8


如果您已将Android.jar文件添加到构建路径,也可能是因为Eclipse中的意外快速修复,也会导致这种情况。右键单击项目 - > 构建路径 - > 配置构建路径 - > android.jar 删除它,删除。

其它参考9


每次出现此错误时,简单地清理项目对我都有用。

其它参考10


我在测试所有解决方案四小时后发现的我自己唯一的解决方案是这里提供的许多解决方案的组合:



    来自Eclipse的
  • Delete项目

  • 从项目文件夹
  • 中删除\bin\gen中的文件
  • 将对库的引用删除到根项目文件夹
  • 中的.classpath文件中
  • 使用命令行重启Eclipse:eclipse -clean

  • Import project

  • 右键点击项目 - 选择Properties> Java Build Path> Libraries并删除Android XX.Y
  • 以外的所有内容
  • 最后clean项目,等待自动建筑或Build

  • 启动,现在可以使用了!至少对我来说......



我一次尝试了每一步和许多组合,但只有所有步骤的连续性一次成功!我希望我再也不会面对这个......

其它参考11


只是对于仍然有这个问题的其他人,他们已经尝试了上述答案,但仍然得到错误(这是我的情况),那么我的解决方案是从Eclipse中删除项目并再次重新导入它。


这使得Android库再次添加到我引用的库中,所以现在我引用了两个Android JAR文件,因此我删除了其中一个,现在它编译得很好。


解决方案:从Eclipse IDE中删除项目,然后再次重新导入,然后检查上述解决方案。

其它参考12


我今天自己陷入了这个问题。清理和重建并没有解决问题。删除和重新导入项目也没有任何帮助。


我终于追溯到我的.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>




其它参考13


对我来说,我的构建路径中出现了额外的JAR引用。我删除了它,它现在有效。

其它参考14


我的问题是由ADT版本12.0和ProGuard集成引起的。
此错误已有详细记录,解决方案在文档中


解决方案就在这里


ProGuard命令行[39]

其它参考15


我在项目中使用Sherlock ActionBar库时遇到了这个问题。
您可以执行以下步骤,它对我有用。



  1. 右键单击您的项目,选择属性。

  2. 将出现一个对话框,在左侧菜单中选择Java build path。

  3. 在右侧面板中删除Android依赖项和Android私有库,然后单击确定

  4. 清理项目(选择菜单项目 - >清除)

  5. 右键单击您的项目,选择Android工具 - >修复项目属性

  6. 再次清理项目。

  7. 重新启动计算机

  8. 打开eclipse和Export apk



希望能帮到你。

其它参考16


在我的情况下,问题实际上是OpenFeint API项目。我已将OpenFeint添加为库项目:


call %java_exe% -jar "%PROGUARD_HOME%"\lib\proguard.jar %* ![[在此处输入图像说明>。


它也被添加到构建路径中,ADT工具16给出了此场景的错误。


右键单击您的项目并单击构建路径,配置构建路径,然后查看图像并从此处删除您的项目OpenFeint并完成所有操作:)




其它参考17


我发现了别的东西。 Android将/libs目录用于JAR文件。我曾经多次看到转换为Dalvik格式失败并出现错误1错误,总是在我的JAR文件中出错时。


现在我通过将新的JAR文件放在/libs目录中并将类路径切换到新版本,将Roboguice升级到更新版本。这导致了Dalvik错误。


当我从/libs文件夹中删除其中一个Roboguice JAR文件时,错误消失了。显然,Android会从/libs中获取所有JAR文件,无论您在Java构建路径中指定哪些文件。我不记得确切,但我认为Android默认开始使用/libs从Android 4.0开始(冰淇淋三明治,ICS)。[40]

其它参考18


将Proguard更新到最新版本为我解决了这个问题。



  • 我的计划路径是C:\Program Files (x86)\Android\android-sdk\tools\proguard\

  • 我从这里下载了新版本

  • 并替换了bin和lib文件夹



感谢上帝![41]

其它参考19


通常,当构建路径中存在不必要的JAR文件时,似乎会出现此问题。


我在使用IntelliJ IDEA时遇到了这个问题。对我来说,这是因为我添加了JUnit和Mockito库,这些库是在运行时编译的。这需要设置为模块属性中的测试。 [42] [43] [44]

其它参考20


以前提出的解决方案都不适合我。就我而言,当我从引用库源代码文件夹切换到使用库JAR文件时,问题就出现了。
最初在Android应用程序项目Properties \\ Android page \\ Library部分下列出了一个Android库项目,该库也在项目资源管理器树中作为库源目录的链接进行了比较。


首先,我刚从项目树中删除了目录链接,并将JAR库添加到构建路径,但这导致了异常。


正确的过程是(在更改构建路径并将引用放回库源之后):



  • 通过从应用程序项目Properties \\ Android页面实际删除引用来正确删除库源目录链接

  • 像往常一样将库JAR添加到应用程序项目构建路径。


其它参考21


列出的解决方案都不适合我。


这是我遇到问题的地方:


我将jSoup外部JAR文件添加到项目的路径中,首先将其放在名为libs的源文件夹中,然后右键单击它,构建路径 - >添加到构建路径。抛出Dalvik转换错误。它说我已经已经包含了该JAR文件中的一个类。我环顾了项目的目录,发现它已经包含的地方实际上是bin目录。我从bin目录中删除了JAR文件,并在Eclipse中刷新了项目,错误消失了!

其它参考22


上面的所有解决方案都不适用于我。我没有使用任何预编译的.jar。我使用的LVL和Dalvik错误都与市场许可库有关。


通过删除主项目并重新导入(从现有源创建新项目)解决了该问题。

其它参考23


我有同样的问题,这些解决方案都没有奏效。
最后,我在控制台中看到错误是由于重复的类(现有项目中的一个,添加的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。
如果是,请尝试删除其中一个。


它对我有用。

其它参考24


通常对我来说,清理项目并不能解决这个问题。


但是在Eclipse中关闭项目然后重新打开它似乎确实在那些情况下修复它...

其它参考25


我遇到了这个问题,但我的解决方案是双重的。
1.)我必须在项目 - > 属性 - > Android 下添加Android目标版本。
2.)我没有所有谷歌第三方附加组件。点击可用软件包下的AVD SDK管理器 - > 第三方附加组件 - > Google Inc 。我下载了所有SDK,解决了我的问题。

其它参考26


我使用的是Android 1.6并且有一个外部JAR文件。对我有用的是删除所有库,右键单击项目并选择 Android Tools - > *修复项目属性(添加回Android 1.6),然后添加回外部JAR文件。

其它参考27


我遇到了这个问题,因为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>

其它参考28


在我的情况下


project-> properties-> java build path - > in order and export tab - > 取消选中 android-support-v4.jar

其它参考29


只需清理项目


如果这不起作用,请尝试其他解决方案