7

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

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

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

4

10 回答 10

8

这个问题被列为 ADT 14 的一个已知问题。这是来自 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从您的项目中删除源文件夹。您可以通过右键单击它们并选择“Build Path -> Remove from Build Path”或在您的项目属性(Java Build Path -> Source 选项卡)中执行此操作。

于 2011-10-24T19:38:41.597 回答
6

我也遇到了这个问题,但以上都没有解决它:

  • 在此过程中尝试使用干净的构建删除/重新添加库
  • 尝试删除并重新导入项目

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

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

proguard.config=proguard.cfg

但是,直到我找到了 David M Young 的这篇文章,我才解决了这个问题。显然,ADK/ADT 14 附带的 ProGuard 版本不正确(哎呀!)。我下载 了 ProGuard 4.6 版。将android-sdk \android-sdk\tools\proguard\lib 目录内容替换为proguard4.6.zip \proguard4.6\lib(3 个 *.jar 文件),重新启动 Eclipse 并再次导出到 apk !

于 2011-10-28T07:49:35.020 回答
5

要解决您应该:

  • 右键单击您的项目>Properties>Java Build Path 并删除除一个 Android IJ 之外的所有库(取决于您的版本)
  • 项目>清洁
  • 重新添加您已删除的库

如果问题再次出现,将库放在项目之外并将它们作为“外部 JAR”导入会很有用

于 2011-10-24T11:18:38.320 回答
1

你好,我想我会把我的两分钱扔在这里。正如我所做的那样,

“_src -> 从路径中删除”

然后我清理它并重建它,我可以让它在我的手机上以调试模式运行就好了。我也可以导出它;但前提是我禁用了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

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

于 2011-11-14T04:25:05.430 回答
0

转到项目»属性»Java构建路径»库并删除除“Android XY”之外的所有内容(在我的情况下为Android 1.5)。单击确定。转到项目»清理»清理下面选择的项目»选择您的项目并单击确定。那应该行得通。

您也可能在项目文件夹中的某个位置有一个 JAR 文件(我已将 Admob JAR 文件复制到我的 src 文件夹中),然后将其添加为 Java 路径库。它不会出现在 Package Explorer 下,所以你不会注意到它,但它确实被计算了两次,导致可怕的 Dalvik 错误 1。

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

于 2013-02-26T07:24:57.963 回答
0

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

消除

  1. 项目属性-> Android:删除库,“应用”
  2. 删除包含的库 src 文件夹
  3. 更干净,

再次添加

  1. 项目属性-> Android:再次添加库,“应用”
  2. 清洁项目
于 2011-10-24T11:09:38.517 回答
0

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

右键单击您的项目,选择属性。将显示一个对话框,在左侧菜单中选择“Java 构建路径”。删除右侧面板上的“Android 依赖项”和“Android 私有库”,然后单击 OK 清理您的项目(选择菜单项目 --> 清理)右键单击您的项目,选择 Android 工具 -> 修复项目属性 再次清理项目。重启你的电脑 打开 eclipse 和 Export apk 希望对你有帮助。

于 2014-06-15T15:04:59.287 回答
0

这是 android sdk 的一个已知问题。查看此博客文章以获取修复。

于 2011-10-22T19:46:22.470 回答
0

刚刚再次出现此问题(第一次通过删除其他答案中提到的 _src 项目来解决)-这次没有要删除的 _src 文件。该错误与作为链接库项目的一部分以及主项目本身的一部分包含的 android-support-v4.jar 相关。

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

从主项目的构建路径中删除 android-support-v4.jar 文件后,问题就消失了。不要认为我遇到了这个错误的可能原因。

于 2011-11-15T16:45:57.677 回答
0

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

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

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

于 2013-03-13T10:26:32.143 回答