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

ash*_*hes 7 android exception dalvik adt android-library

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

Dx UNEXPECTED TOP-LEVEL EXCEPTION: ... already added: ...
...
Conversion to Dalvik format failed with error 1
Run Code Online (Sandbox Code Playgroud)

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

ash*_*hes 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从项目中删除源文件夹.您可以通过右键单击它们并选择"构建路径 - >从构建路径中删除"或在项目属性(Java构建路径 - >源选项卡)中执行此操作.


Joe*_*dez 6

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

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

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

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

proguard.config=proguard.cfg
Run Code Online (Sandbox Code Playgroud)

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


Man*_*sto 5

解决你应该:

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

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