自从更新到ADT 14,我不能再构建我的项目。它在更新之前构建得很好。

错误:

[2011-10-23 16:23:29 - Dex Loader] Unable to execute dex: Multiple dex files define Lcom/myapp/R$array;
[2011-10-23 16:23:29 - myProj] Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Lcom/myapp/R$array;

类似的问题也有报道,我尝试了其中的建议,包括

重新启动Eclipse。 清理项目和重建-禁用“项目->自动生成”选项,然后“清理”和“生成”项目,然后尝试运行。将“自动构建”选项重置为开启 重新安装Android开发者工具 重新安装Eclipse(更新到最新版本3.7.1) 创建一个从文件系统导入的新项目 从subversion创建一个新项目。


当前回答

在阅读terry关于删除bin目录的回复和Larrys关于ANT目录位置的回复后:

我将位于我的项目BIN目录的文件移动到BIN/CLASSES和im启动和运行。

编辑1 然后第二轮就失败了

编辑2 所以关闭Eclipse移动文件回到原来的位置,它所有的工作…嗯什么? 我不想假装知道为什么会这样。如果有任何变化将更新。

编辑3 我从备份中注意到BIN目录和BIN/CLASSES中确实有重复的文件。

所以答案是:不要在两个位置都有文件。至少对我来说,这是有效的。

其他回答

这个问题发生在我身上,我在我的libs文件夹中有一个外部的。jar,名为gson-2.2.2.jar,但出于某种原因,其中有两个,gson-2.2.2.jar和gson-2.2.2.jar(1),我简单地删除了后者,我的项目再次建立良好。

这是我在谷歌中搜索此错误时的顶部结果。

虽然这个问题并没有问如何解决React Native的这个问题,但我想我还是会分享给那些在这里使用React Native的人。

从项目根运行:

cd android && ./gradlew clean [Mac - Bash终端] cd android & gradlew clean [Windows -命令提示符]

然后react-native run-android来构建并再次运行。

如果你使用com.google.android.gms:play-services 你可以在下面的列表中添加你真正需要看的东西:

谷歌+ com.google.android.gms: play-services-plus: 10.0.1

谷歌帐号登录 com.google.android.gms: play-services-auth: 10.0.1

谷歌动作,基本客户端库 com.google.android.gms: play-services-base: 10.0.1

谷歌地址API com.google.android.gms: play-services-identity: 10.0.1

Firebase应用程序索引 com.google.firebase: firebase-appindexing: 10.0.1 谷歌分析 com.google.android.gms: play-services-analytics: 10.0.1

谷歌意识 com.google.android.gms: play-services-awareness: 10.0.1

谷歌把 com.google.android.gms: play-services-cast: 10.0.1

谷歌云消息 com.google.android.gms: play-services-gcm: 10.0.1

谷歌驱动 com.google.android.gms: play-services-drive: 10.0.1

谷歌健康 com.google.android.gms: play-services-fitness: 10.0.1

谷歌位置和活动识别 com.google.android.gms: play-services-location: 10.0.1

谷歌地图 com.google.android.gms: play-services-maps: 10.0.1

谷歌手机广告 com.google.android.gms: play-services-ads: 10.0.1

谷歌的地方 com.google.android.gms: play-services-places: 10.0.1

移动的愿景 com.google.android.gms: play-services-vision: 10.0.1

谷歌附近 com.google.android.gms: play-services-nearby: 10.0.1

谷歌全景查看器 com.google.android.gms: play-services-panorama: 10.0.1

谷歌播放游戏服务 com.google.android.gms: play-services-games: 10.0.1

社保网 com.google.android.gms: play-services-safetynet: 10.0.1

Android支付 com.google.android.gms: play-services-wallet: 10.0.1

Android穿 com.google.android.gms: play-services-wearable: 10.0.1

在清理了之前版本工具遗留的一些目录和文件后,我的问题得到了解决。ADT Rev 14更改二进制文件的存储位置。我删除了整个bin目录,重新启动Eclipse,清理构建并强制重新构建。起初,这似乎奏效了,但在下一次运行后,问题又出现了。

我最终发现我的bin目录包含在项目构建路径中。我将bin从构建路径中排除,并重复上述步骤。这解决了我的问题。

正如其他人所提到的,当您的构建路径中有同一个类的多个副本时,就会发生这种情况——在类路径中包含bin/是保证这个问题的一种方法。

对我来说,这发生在我将android-support-v4.jar添加到我的libs/文件夹时,eclipse不知怎么地在bin/classes/android-support-v4.jar中添加了第二个副本。

删除bin/classes中的额外副本解决了问题-不确定Eclipse为什么要在那里复制。

你可以用

grep jar -r yourroffendingclassname YourApp | grep jar