自从更新到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创建一个新项目。


当前回答

以上这些都没用。 这最终是个简单的问题。

我有一个使用FacebookSDK和ViewPagerIndicator作为图书馆项目的项目。 所有这些都是基于Android API 16构建的,这两个项目使用了Android支持库vX (X不是16!)

我添加了一个外部JAR到这两个项目,并指向\extras\android\v4… 并且还删除了v4 jar我在他们的libs文件夹。

清理所有项目并重建。

用黄油!

我收到的确切错误:无法执行dex:多个dex文件定义Landroid/support/v4/view/PagerAdapter;转换为Dalvik格式失败:无法执行dex:多个dex文件定义landoid /support/v4/view/PagerAdapter;

其他回答

如果您有两个包含相同类名的jar,则会发生此错误,例如,我有两个库:jsr311-api-1.1.1.jar和jersey-core-1.17.1.jar,它们都包含类javax.ws.rs.ApplicationPath。我删除了jsr311-api-1.1.1.jar,它工作得很好。

对我来说,这个问题只存在,只要有Android库项目涉及到我的项目。所以当我删除所有的库,并按照你说的那样,我可以再次运行我的应用程序。 如果涉及到库,即使是删除箱子的技巧也行不通。

我不明白为什么这个错误今天第一次出现,因为我现在使用ADT 14好几天了。不过还有其他虫子让我很开心。

拆分谷歌播放服务可以帮助您: https://developers.google.com/android/guides/setup#split

所以除了添加游戏服务之外:

compile 'com.google.android.gms:play-services:7.5.0'

你只需要添加你需要的:

// Google Maps only
compile 'com.google.android.gms:play-services-maps:7.5.0'

ADT R14更新更改了类进入bin/classes目录的位置(参见http://tools.android.com/recent/buildchangesinrevision14)。如果使用ANT,则应该将类的路径从bin更改为bin/classes。这对我很管用。

我在我的项目中通过删除一个库来解决这个问题:

原因:我在我的项目中包含了一个库项目,错误地没有从我的项目中删除之前的库,所以当我运行项目时,相同的库dex文件生成了两次,当我从项目的lib文件夹中删除相同的库时,错误消失了,构建成功创建,我希望其他人可能会面临同样的问题。