构建APK时出现错误 - “Multiple dex files define Lcom/google/ads/Ad”

6
我已经为此烦恼了很久,过去三个小时我一直在尝试解决这个问题,但一直无法解决。我创建了一个Android应用程序,并准备将其放在Android市场上,但当我尝试导出到apk时,会出现以下错误:

无法执行dex:多个dex文件定义Lcom / google / ads / Ad;

我已经阅读了很多关于这个问题的内容,并尝试了很多解决方案,但似乎没有什么帮助。我已经清理并重建了项目,删除了bin文件夹,确保bin文件夹被排除在构建路径之外,但都无济于事。如果有人能帮助我,我会非常感激。
6个回答

9
在“配置构建路径”的“顺序和导出”部分中取消勾选admob jar文件。

Matt的回答“在“配置构建路径”的“订单和导出”部分取消勾选admob jar文件。”完美地解决了问题。在遵循admob设置指南时,我按照这里的说明https://developers.google.com/mobile-ads-sdk/docs/进行操作。它在提供的屏幕截图中将该框标记为已选中,但是当我取消选择它时,所有广告都可以正常显示,而且所有错误都消失了。 - user2084337
不是我取消了我的选择,而是我查找了另一个AdMob的jar包,而不是那个应用程序libs文件夹中的jar包。 - mr.j05hua

5
在另一篇与您类似的问题帖子中,唯一提到的您尚未考虑的事情是更新Eclipse。我不知道您已经按照什么顺序进行了这些“修复”,但是另一个发帖者提到他一次性删除了项目的bin目录,清理并重新构建了项目,然后重启了Eclipse。之后错误消失了。
祝好运 - Lijap

这就是我最终做的事情,卸载/重新安装所有东西。 - Stratus
感谢您接受我的答案!希望您的应用程序也能畅销。 - Lijap
1
@Lijap 为什么这听起来(和感觉)像巫术?我对更新一个完美工作的Eclipse持谨慎态度,因为问题只存在于一个应用程序中:Google的市场计费示例。任何可以帮助我理解为什么会出现这个问题以及它意味着什么的提示或见解都将不胜感激。同时+1... - Bill The Ape
我不确定为什么会出现这个问题。也许与谷歌广告程序和Eclipse或ADT的依赖冲突有关。官方开发者网站上的一些其他示例应用程序也存在错误,有些更新速度不够快。希望谷歌能尽快解决这个问题。谢谢! - Lijap

1
对我来说,错误是由于意外包含了2个不同版本的AdMob SDK。 移除其中一个修复了它。

1
正如其他人所指出的那样,这个问题应该是由于在应用程序构建中包含了多个Goodle广告SDK类的版本。但我还没有看到一个注释,即最近的Google Play服务库包括一些与Admob SDK相同名称的类--例如,我遇到了这个错误,因为我试图同时使用admob sdk v.4.0.4和Google-play-services_lib工程作为引用项目进行构建;后者包含google-play-services.jar,其中包含com.google.ads包和许多与admob sdk相同的类。因此,似乎Google Play服务库和Admob SDK不能同时在一个给定的应用程序中使用。我的解决方案是完全从构建中删除Admob SDK。

0
对我来说,我只需从构建路径中取出包含android-support-v4.jar的libs文件夹,就可以使其工作。

0
我遇到了同样或相似的问题。我的问题是我的应用程序导入了一个使用不同版本AdMob SDK的库。
我的问题细节:
  • 库使用AdMob SDK 6.3.0
  • 应用使用AdMob SDK 6.1.0
通过包含相同的版本来解决它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接