“更新到ADT 14后,转换为Dalvik格式失败,错误1”

时间:2011-10-22 17:19:21

标签: android exception adt dalvik android-library

在更新到最新的开发人员工具ADT 14之后,我的包含库项目的Android项目将不再运行产生错误:

Dx UNEXPECTED TOP-LEVEL EXCEPTION: ... already added: ...
...
Conversion to Dalvik format failed with error 1

使用包含删除和重新添加项目的解决方案描述此问题的其他线程不起作用。

10 个答案:

答案 0 :(得分:8)

此问题列为ADT 14的known issue。以下是Android工具项目网站的引用:

  

项目未构建错误   [2011-10-20 23:32:04 - MyApp] Dx UNEXPECTED TOP-LEVEL EXCEPTION:<class>: already added: <class>   这是由于无法从中删除以前的库源文件夹   主要项目。顺便提一下,这些相关来源的脆弱性   文件夹是我们摆脱这种机制的原因之一   (请参阅更多信息   http://tools.android.com/recent/buildchangesinrevision14)。该   解决方案是从中删除那些<libraryname>_src源文件夹   你的项目。只需右键单击它们,然后选择Build Path > Remove from Build Path。您还应该被提示删除链接   你应该做的文件夹。如果未提示您,请将其删除   手动。你可以看到这个问题的截图   职位:   http://android.foxykeep.com/dev/fix-the-conversion-to-dalvik-format-failed-with-error-1-with-adt-14

<强>解决方案:

正如它所说,解决方案是从项目中删除<libraryname>_src源文件夹。您可以通过右键单击它们并选择“构建路径 - &gt;从构建路径中删除”或项目属性(Java构建路径 - &gt;源选项卡)来执行此操作。

答案 1 :(得分:6)

我也遇到了这个问题,但上面都没有修复它:

  • 尝试在整个过程中删除/重新添加带有干净构建的库
  • 尝试删除并重新导入项目

没有骰子。每当我尝试导出到apk时,“转换为Dalvik格式失败并出现错误1”仍然盯着我。

我可以说问题与ProGuard有关,因为当我在 project.properties 文件中注释掉这一行时,一切正常:

proguard.config=proguard.cfg

但是,在找到this post by David M Young之前,我无法解决问题。显然,ADK / ADT 14附带了错误版本的ProGuard(oops!)。我下载了ProGuard version 4.6。用 proguard4.6.zip \ proguard4.6 \ lib(3 * .jar文件)替换 android-sdk \ android-sdk \ tools \ proguard \ lib目录内容,重新启动Eclipse并导出到apk再次工作!

答案 2 :(得分:5)

解决你应该:

  • 右键单击您的项目&gt;属性&gt; Java Build Path并删除所有库,但删除一个Android I.J(取决于您的版本)
  • 项目&GT;清洁
  • 添加您已删除的库

如果问题再次出现,将libs放在项目之外并将其作为“外部JAR”导入是很有用的

答案 3 :(得分:1)

你好以为我会在这里扔两分钱。正如我那样做的,

“_ src - &gt;从路径中删除”

然后我清理它并重建,我可以让它在我的手机上以调试模式运行就好了。我也可以出口它;但只有我禁用了proguard。当然我不能把它留下来,我的代码开放给所有人看。所以这很令人讨厌。但是我终于找到了治疗方法,奇怪的是他们和r12有同样的问题(和修复),就像他们用这个一样。

它位于:[Android SDK安装目录] \ tools \ proguard \ bin \ proguard.bat

更改

调用%java_exe%-jar“%PROGUARD_HOME%”\ lib \ proguard.jar%*

调用%java_exe%-jar“%PROGUARD_HOME%”\ lib \ proguard.jar%1%2%3%4%5%6%7%8%9

我尝试了很多其他的东西,但这就是为我做的。

答案 4 :(得分:0)

这是android sdk的一个已知问题。请查看此blogpost以获取修复方法。

答案 5 :(得分:0)

我为我的项目使用了一个库并遇到了同样的错误 - 它通过删除库和src文件夹,清理并添加回来并再次清理来解决。

删除

  1. 项目属性 - &gt; Android:删除库,“应用”
  2. 删除包含的库src-folder
  3. 更好的清洁,
  4. 再次添加

    1. 项目属性 - &gt; Android:再次添加库,“应用”
    2. 清理项目

答案 6 :(得分:0)

刚刚再次出现此问题(通过删除其他答案中提到的_src项目第一次修复) - 这次没有要删除的_src文件。该错误与android-support-v4.jar有关,它包含在链接库项目的一部分中,也包含在主项目本身的一部分中。

错误Dx意外顶级异常: java.lang.IllegalArgumentException:已添加:Landroid / support / v4 / content / ModernAsyncTask $ WorkerRunnable;

从主项目的构建路径中删除android-support-v4.jar文件后问题消失了。不要以为我偶然发现了这个错误。

答案 7 :(得分:0)

转到项目»属性»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的引用,无法正确构建它。

答案 8 :(得分:0)

我有同样的问题,我正在使用ADT 20.0.3。

我遵循的步骤来解决这个问题。

删除project / lib文件夹中的所有jar并将它们作为外部jar引用。 检查项目中的android依赖项/引用库是否有重复项,

答案 9 :(得分:0)

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

右键单击您的项目,选择属性。 将显示一个对话框,在左侧菜单中选择“Java build path”。 在右侧面板中删除“Android依赖项”和“Android私有库”,然后单击“确定” 清理您的项目(选择菜单项目 - &gt;清洁) 右键单击您的项目,选择Android Tools - &gt;修复项目属性 再次清理项目。 重启你的电脑 打开eclipse和Export apk 希望能帮到你。