“转换为 Dalvik 格式失败,错误 1”更新到 ADT 14 后
更新到最新的开发人员工具 ADT 14 后,包含库项目的 Android 项目将不再运行并产生错误:
Dx UNEXPECTED TOP-LEVEL EXCEPTION: ... already added: ...
...
Conversion to Dalvik format failed with error 1
描述此问题的其他线程及其解决方案(包括删除和重新添加项目)不起作用。
After updating to the latest developer tools, ADT 14, my Android project that includes library projects will no longer run producing the error:
Dx UNEXPECTED TOP-LEVEL EXCEPTION: ... already added: ...
...
Conversion to Dalvik format failed with error 1
The other threads describing this issue with solutions that include removing and re-adding the projects do not work.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

发布评论
评论(10)
我也遇到了这个问题,但以上方法都没有解决它:
- 尝试删除/重新添加带有干净构建的库,
- 尝试删除并重新导入项目
没有骰子。每次我尝试导出到 apk 时,“转换为 Dalvik 格式失败,错误 1”仍然在我面前出现。
我可以看出问题与 ProGuard 有关,因为当我在 project.properties 文件中注释掉这一行时,一切正常:
proguard.config=proguard.cfg
但是,直到我发现 < a href="http://davematthew.blogspot.com/2011/10/compiling-with-android-adt-14.html" rel="noreferrer">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 再次工作!
你好,我想我会在这里投入两分钱。正如我所做的那样,
“_src -> 从路径中删除”
然后我清理并重建它,我可以让它在我的手机上以调试模式运行就好了。我也可以导出它;但前提是我禁用了 proguard。当然,我不能就这样让我的代码开放给所有人看。所以这很让人抓狂。但我终于找到了一种治疗方法,奇怪的是,他们在 r12 上遇到了与此相同的问题(并修复了)。
它位于:[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
我尝试了很多其他东西,但这就是所做的对我来说。
只是这个问题再次出现(通过删除其他答案中提到的 _src 项目第一次修复) - 这次没有 _src 文件要删除。该错误与 android-support-v4.jar 相关,它作为链接库项目的一部分以及主项目本身的一部分包含在内。
错误 Dx 意外的顶级异常:
java.lang.IllegalArgumentException:已添加:Landroid/support/v4/content/ModernAsyncTask$WorkerRunnable;
从主项目的构建路径中删除 android-support-v4.jar 文件后,问题就消失了。我不认为这是导致错误的可能原因。
转到项目 » 属性 » 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 有多个引用,并且无法正确构建它。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
此问题被列为 ADT 14 的已知问题。以下是 Android Tools 项目网站的引用:
解决方案:
作为它说,解决方案是从项目中删除
_src
源文件夹。您可以通过右键单击它们并选择“构建路径 -> 从构建路径中删除”或在项目属性中(Java 构建路径 -> 源选项卡)来完成此操作。This problem is listed as a known issue of ADT 14. Here's the quote from the Android Tools Project Site:
Solution:
As it says, the solution is to remove the
<libraryname>_src
source folders from your projects. You can do this by right clicking them and choose "Build Path -> Remove from Build Path" or in your project properties (Java Build Path -> Source tab).