多个dex文件定义了Lcom/google/ads/AdRequest$ErrorCode和Multiple dex files define Lcom/google/ads/AdRequest$ErrorCode。

16

我创建了一个安卓应用,并尝试为它添加admob广告,但是不起作用。请问有谁能帮助我修复这个错误。

[2014-04-09 15:16:51 - Dex Loader] Unable to execute dex: Multiple dex files define Lcom/google/ads/AdRequest$ErrorCode;
[2014-04-09 15:16:51 - Aurudhu_App] Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Lcom/google/ads/AdRequest$ErrorCode;

这是应用程序的架构。

在此输入图片描述


不需要保留GoogleAdMobSdk.jar文件,您可以使用google-play-service.jar中的AdMob类。 - Vishesh Chandra
@vishesh chandra 我应该删除它吗? - anuruddhika
是的,并从google-play-services.jar导入类。 - Vishesh Chandra
只需删除 libs 文件夹并重新构建。 - astroanu
12个回答

22

在AdMob中,google-pay-services.jar和GoogleAdMobAdsSdk.jar具有相同的类名。可能是由于这个原因导致你得到了多个.dex文件。

请按照文档步骤使用google-pay-services.jar替换GoogleAdMobAdsSdk.jar,此示例代码链接可以帮助你。

希望这可以帮助你,如果仍然有问题,请告诉我...


我该如何移除那个GoogleAdMobAdsSdk.jar文件? - anuruddhika
1
右键单击项目 -> 构建路径 -> 配置构建路径 -> 选择库 -> 选择jar -> 删除 -> 确定。 - Vishesh Chandra
1
我添加了google-pay-services.jar,现在无法删除GoogleAdMobAdsSdk.jar。 - anuruddhika
取消勾选“自动构建项目”,然后清理您的项目,然后尝试删除该jar文件。 - Vishesh Chandra
只需从“lib”文件夹中删除它并清理项目,它就可以工作。 - UMAR-MOBITSOLUTIONS

7

我遇到了这个错误。

请确保 google-play-service.jar 没有被重复添加(即使在不同的模块中也是如此...就像我遇到的情况一样)。调试这些错误需要花费很长时间。


我投票支持这个问题,因为它涉及到了我遇到的一个问题。但是删除多个jar文件需要一些技巧。我的做法是在eclipse-properties中取消勾选play-service,然后关闭eclipse,删除重复的jar文件,再回到eclipse,重新添加库。经过一段时间,这个方法解决了我的问题。但还是感谢你的指导。 - Riverside

4

Eclipse项目属性->Java构建路径->顺序和导出

取消选择Android私有库。


3

你已经导入了google-play-services并将其用作库。你还添加了google-play-services外部的jar文件,这会产生歧义。不要将google-play-services用作库。


2

在添加了Google Play服务后,我遇到了这个问题,但是它发生在一个没有使用AdMob sdk的项目上。在进行了干净的重建之后,我不再收到此错误。所以,如果您遇到了这个问题,但没有使用AdMob或因为任何原因仍然无法解决,请尝试进行项目的清理和重建。这就是对我起作用的方法。


1
我遇到了这个问题,因为我在libs文件夹中放置了google-play-services.jar文件,并像下面这样在build.gradle中包含了play services:
dependencies {
  ...
  compile 'com.google.android.gms:play-services:5.0.89'
  ...
}

所以,我从libs文件夹中删除了google-play-services.jar文件,这样应用程序就可以正常工作了。

0

通过编写 Cordova 插件移除 Google Play 服务插件,命令为 cordova plugin remove com.google.playservices,并通过编写 cordova plugin add [您的 AdMob 插件名称] 命令添加 Cordova AdMob 插件。


0

我遇到了这个问题,还有这个问题:

java.lang.NoClassDefFoundError: com.google.ads.AdView

尽管经过多个小时的尝试了解和实践所有列出的解决方案,但我唯一能让我的应用程序正常工作的方法是使用AdMob横幅示例在这里重建我的项目,并将我的文件复制到该项目中。如果你陷入了困境,请尝试一下。

我不知道为什么它行得通,但现在它可以了。我的项目中有些东西非常不对劲。现在我可以继续我的工作了。我喜欢Google/Android,但真的是一团糟!


0
在我的情况下,问题出现在我转移到Firebase时。
从“app \ libs”文件夹中删除旧的“GoogleAdMobAdsSdk” SDK后,问题消失了。

0

选择项目 右键单击项目-->构建路径-->配置构建路径-->选择库-->取消选中googleplaylib,并清理。 然后运行,希望它能够正常工作, 我可以使用这种方法解决我的问题。试试吧


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