8

我无法构建我的应用程序我正在运行今天下载的最新构建工具,这在更新后开始发生。

-dex:
   [dex] Converting compiled files and external libraries into 
         /Users/rob/Repos/my_app/bin/classes.dex...
    [dx] 
    [dx] UNEXPECTED TOP-LEVEL EXCEPTION:
    [dx] com.android.dx.util.DexException: Multiple dex files define 
         Lcom/robaldred/myapp/About$1;

我试过清理和重建,我也在 E​​clipse 中尝试过,但它给出了同样的错误。有人有什么想法吗?我现在在这里的一堵砖墙上。

4

8 回答 8

9

我花了几个小时清理,创建新项目,卸载 - 重新安装 sdk ......没有任何效果。我也没有任何库项目(我只是在 lib 下有一些 jar 文件)。但是,最后我修复了它,我的步骤是:

  • 搜索并清理所有 .apk 文件(我在 .svn 文件夹中有一些...grr .. 一些开发人员在 svn 下添加了一些与构建相关的文件夹)
  • 删除 bin 和 gen。
  • 从 Eclipse 项目属性中删除对库 jar 的引用,按确定。然后再次将它们添加回来。我有一些java编译的jar库。我不知道为什么我必须删除并重新添加它,但这肯定是需要的。
于 2011-10-28T08:53:18.207 回答
5

昨天我的系统(以及另一个正在工作的系统)发生了一些事情,SDK 想要推送平台工具更新,但后来我根本无法使用它,等等。

我最终将我的 SDK 移开并重新安装它,然后一切都像往常一样工作。我没有你的 dex 特定问题,但我怀疑昨天的更新推送破坏了很多东西。祝你好运。

于 2011-10-21T20:43:03.133 回答
3

你可以:

  • 删除文件夹<.settings><bin>、和<gen>文件<.classpath>和。<.project><project.properties>

  • 在 Eclipse 中删除您的项目(右键,<Delete>)而不删除源文件。

  • 创建一个新的 Android 项目并<Create project from existing sources>从您以前的源中进行选择。

  • 如果需要,在构建路径中导入外部库。

它应该可以解决这个烦人的问题。

于 2011-12-12T08:49:52.333 回答
2

对您附加到/在项目中的所有源文件要非常小心。我在两种情况下发现了这个问题:

  1. 当我有两个不同的 android 支持库 jars
  2. 当我不小心把过去的一些 Facebooksrc没有作为库,而是直接放到我的 src 目录中时

因此,所有表明您不应该将 bin/ 目录放入类路径的答案也是正确的,但在出现以下错误的情况下:

[2013-08-02 20:22:03 - Dex Loader] Unable to execute dex: Multiple dex files define Lcom/facebook/android/AsyncFacebookRunner$1;
[2013-08-02 20:22:03 - Activity] Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Lcom/facebook/android/AsyncFacebookRunner$1;

您应该在项目/库中查找相同的 jar(在大多数情况下,这应该由 Android Eclipse 环境创建)或查看附加到项目的所有源以查找类的多次出现(如上面的示例代码)com.facebook.android.AsyncFacebookRunner

于 2013-08-02T20:01:01.287 回答
0

我认为 bin 中的目录从

com/XXX/XXX

classes/com/XXX.

你可以清理你的项目并解决它。

于 2011-10-27T10:24:31.140 回答
0

我看到了同样的问题。如果您使用的是 Android Studio,则需要确保在编译时您的任何项目中都没有包含“bin”或“gen”文件夹。

删除它后,我能够成功编译

于 2013-06-11T20:17:20.613 回答
0

如果您因为多个 DEX 文件而遇到问题

删除整个目标文件夹并再次构建项目。这不会影响您的项目,因为目标文件夹中的所有内容都会重新构建。

于 2014-03-12T05:52:54.367 回答
0

在您的应用程序 gradle.build> 依赖项中将实现 fileTree(include: [' .jar'], dir: 'libs') 更改为提供的 fileTree(include: [' .jar'], dir: 'libs')。

确保它在您的 Module Settings> Dependencies {include=[*jar] dir=libs} 中也发生了变化。它旁边必须有一个提供的范围,而不是实现。

于 2017-12-09T08:14:40.140 回答