[英]Conversion to Dalvik format failed with error 1 with android-support-v4.jar
[英]“Conversion to Dalvik format failed with error 1” on external JAR
在 Eclipse 中的 Android 应用程序中,我收到以下错误。
意外的顶级例外:
java.lang.IllegalArgumentException:已添加:Lorg/xmlpull/v1/XmlPullParser;
....
转换为 Dalvik 格式失败,错误 1
仅当我将特定的外部 JAR 文件添加到我的项目时才会出现此错误。 我搜索了很长时间以寻找可能的解决方案,但没有一个可能的解决方案有效。
我什至尝试更改为 Android 1.6 而不是 1.5(我使用的当前版本)。
转到 Project » Properties » Java Build Path » Libraries 并删除除“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。在生成 javadoc 后删除该路径代码将正常工作。如果仍然出现任何问题,请检查此内容。
我解决了这个问题。
这是 JAR 文件冲突。
我的构建路径上似乎有两个 JAR 文件,其中包含相同的包和类。
smack.jar
和android_maps_lib-1.0.2
从其中一个 JAR 文件中删除这个包解决了这个问题。
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
您可以通过在导出(未)签名的 Android 应用程序时关闭菜单 >“项目”>“自动构建”来轻松解决此问题(使用 Eclipse Android 开发者工具,构建:v22.0.1-685705)。 之后,不要忘记再次打开它。
如果你有ADT修订12+,你应该从4.4更新您的ProGuard - > 4.6(描述在这里)。 此外,您应该保留原始格式的 ...\\bin\\proguard.bat 文件。
只需从网上下载它,然后将下载的包中的 lib 文件夹复制到:
【Android SDK安装目录】\\tools\\proguard\\lib
编辑(新解决方案):
看起来以前的解决方案只是一个旁路。 我最终设法永久解决了这个问题:就我而言,我的项目和我的项目中引用的 Facebook 项目中的 android-support-v4 文件不匹配。
我通过执行 Lint 检查发现了这个错误(Android 工具/运行 Lint:检查常见错误)
我以前的解决方案:
我已经在这个网站上尝试了任何可能的解决方案 - 没有任何帮助!!!
最后我在这里找到了答案: https : //groups.google.com/forum/#!topic/actionbarsherlock/drzI7pEvKd4
简单的步骤:
转到项目-> 取消选中自动构建
转到 Project -> Clean... ,同时清理库项目和您的应用项目
将您的应用导出为已签名的 APK,而“自动构建”仍处于禁用状态
这是另一个场景和解决方案:
如果您最近在为 Eclipse 更新 ADT 后遇到此问题:
原因似乎是某些先前版本的 ADT 将库项目源文件夹链接到“子”项目,而当前的 ADT/Dex 组合不再与该解决方案兼容。
编辑:这是由一个 Android 开发博客条目确认的,特别是这个- 请参阅第 8 段以后。
转到项目,然后取消选中“自动构建”。然后尝试导出项目,错误消失了。
如果您已将Android.jar
文件添加到您的构建路径,这也可能是由于 Eclipse 中的意外快速修复造成的。 右键单击Project -> build path -> configure build path -> android.jar删除它,删除。
每次出现此错误时,简单地清理项目对我都有效。
在对所有解决方案进行四个小时的测试后,我今天找到的唯一的解决方案是这里提供的许多解决方案的组合:
Delete
项目\\bin
和\\gen
文件.classpath
文件中eclipse -clean
Import
项目Properties
> Java Build Path
> Libraries
并删除除Android XX.Y
之外的所有内容clean
项目,等待自动构建或Build
它我一次尝试了每一步和许多组合,但只有一次连续所有步骤才能成功! 我希望我不会再遇到这种情况......
仅对于仍然存在此问题的其他人并且他们已经尝试了上述答案但仍然出现错误(这是我的情况),然后我的解决方案是从 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>
对我来说,我的构建路径中出现了一个额外的 JAR 引用。 我删除了它,现在可以使用了。
我在我的项目中使用 Sherlock ActionBar 库时处理过这个问题。 您可以执行以下步骤,这对我有用。
希望这会帮助你。
我发现了别的东西。 Android 将/libs
目录用于 JAR 文件。 我已经多次看到“Conversion to Dalvik format failed with error 1”错误,总是当我在 JAR 文件中出错时。
现在我将 Roboguice 升级到新版本,将新的 JAR 文件放在/libs
目录中并将类路径切换到新版本。 这导致了 Dalvik 错误。
当我从/libs
文件夹中删除 Roboguice JAR 文件之一时,错误消失了。 显然,Android 会从/libs
提取所有 JAR 文件,无论您在 Java 构建路径中指定了哪些文件。 我记不太清楚了,但我认为 Android 默认从Android 4.0 (Ice Cream Sandwich,ICS)开始使用/libs
。
一般来说,这个问题似乎是在构建路径中有不必要的 JAR 文件时出现的。
我在处理IntelliJ IDEA时遇到了这个问题。 对我来说,这是因为我添加了在运行时编译的JUnit和Mockito库。 这需要在模块属性中设置为“测试”。
将 Proguard 更新到最新版本为我解决了这个问题。
C:\\Program Files (x86)\\Android\\android-sdk\\tools\\proguard\\
感谢上帝!
就我而言,问题实际上出在 OpenFeint API 项目上。 我已将 OpenFeint 添加为库项目:
.
它也被添加到构建路径中,ADT 工具 16 给出了这个场景的错误。
右键单击您的项目并单击构建路径,配置构建路径,然后查看图像并从此处删除您的项目 OpenFeint,一切都完成了:)
以前提出的解决方案都不适合我。 就我而言,问题发生在我从引用库源代码文件夹切换到使用库 JAR 文件时。 最初在 Android 应用程序项目 Properties\\Android page\\Library 部分下列出了一个 Android 库项目,该库也在项目资源管理器树中作为指向库源目录的链接进行比较。
首先,我只是从项目树中删除了目录链接,并将 JAR 库添加到构建路径中,但这导致了异常。
正确的过程是(在改回构建路径并放回对库源的引用之后):
通过从应用程序项目 Properties\\ Android 页面中实际删除引用来正确删除库源目录链接
像往常一样将库 JAR 添加到应用程序项目构建路径。
列出的解决方案都不适合我。
这是我遇到问题的地方:
我首先将 jSoup 外部 JAR 文件添加到我的项目路径中,方法是将其放在名为“libs”的源文件夹中,然后右键单击它,构建路径-> 添加到构建路径。 这引发了 Dalvik 转换错误。 它说我“已经包含”了那个 JAR 文件中的一个类。 我查看了项目的目录,发现它“已包含”的地方实际上是bin
目录。 我从bin
目录中删除了 JAR 文件并在 Eclipse 中刷新了项目,错误消失了!
就我而言
项目-> 属性-> java 构建路径-> 按顺序和导出选项卡->取消选中android-support-v4.jar
只需清理项目
如果这不起作用,请尝试其他解决方案
上面的所有解决方案对我都不起作用。 我没有使用任何预编译的 .jar。 我正在使用 LVL 和 Dalvik 错误,这些错误都与市场许可库有关。
通过删除主项目并重新导入(从现有源创建一个新项目)解决了问题。
我遇到了同样的问题,但这些解决方案都没有奏效。 最后,我在控制台中看到错误是由于重复的类(一个在现有项目中,一个在添加的 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。 如果是,请尝试删除其中之一。
它对我有用。
通常对我来说,清理项目并不能解决这个问题。
但是在 Eclipse 中关闭项目然后重新打开它似乎在这些情况下修复了它......
我遇到了这个问题,但我的解决方案是双重的。 1.) 我必须在project -> properties -> Android下添加一个 Android 目标版本。 2.) 我没有所有的谷歌“第三方附加组件”。 单击可用包下的 AVD SDK 管理器->第三方附加组件-> Google Inc 。 我下载了所有的 SDK,这解决了我的问题。
我使用的是 Android 1.6 并且有一个外部 JAR 文件。 对我有用的是删除所有库,右键单击项目并选择Android Tools -> *Fix Project Properties(它添加回 Android 1.6),然后添加回外部 JAR 文件。
我遇到了这个问题,因为 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>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.