【问题标题】:NoClassDefFoundError & Multiple dex files define issues.. UGHNoClassDefFoundError & 多个 dex 文件定义问题.. UGH
【发布时间】:2014-07-14 07:55:23
【问题描述】:

Ok 所以我现在是愚蠢的问题..

我正在尝试在我的应用中使用 Google Play 服务。

我在我的应用程序和 BaseGameUtils 中都引用了库,google play services,然后我将 google play services 作为库引用到 BaseGameUtiles 库,我遇到了这个问题.. Unable to execute dex: Multiple dex files定义 Lcom/google/android/gms/ads/AdActivity; "

通常这意味着您有两个具有相同类名的 .jar 文件。我唯一的问题是我不知道哪些 jar 文件具有相同的类。

另外,我的 libs 文件夹中没有 google-play-services 作为 jar,也没有在“java 构建路径”菜单中将其添加为外部 jar。

所以我只有两个依赖项 google-play-servies 和 BaseGameUtils,后者也使用 google-play-servies 作为库。但在“私人图书馆”中,我为我添加的所有 .jar 下拉选项,然后它还包含 google-play-services。我认为不应该在那里..

如果我取消选中“私有库”选项,它会加载,但随后出现“NoClassDefFoundError Android 项目”错误。我将 ADT 更新到 23.0.2 或者今天 7/13/14 的最新版本 -

所以如果我检查“私有库”选项我得到多个 dex 文件问题,这就是问题的关键,我认为这与 android 支持库 v4.但是否“多个 dex 文件定义了 Lcom/google/android/gms/ads/AdActivity;”是我得到的错误。

如果我取消选中“私人图书馆”选项,我会得到 NoClassDefFoundError 呃.. 有人能告诉我发生了什么吗?

这是我所做的照片.. 在你要求我做之后.. 先生.. rahandandn(抱歉毁了你的名字)

它向我展示了更多问题..

这是 basegameutiles 的 java 构建路径菜单选项。

尝试使用 google play 服务获取排行榜和成就。

他们说将 google play 服务用作您的应用程序和 BaseGameUtils 的库。

他们还说使用谷歌平台服务作为 BaseGameUtils 的库。

当我这样做时..我明白了

"无法执行dex:多个dex文件定义了Lcom/google/android/gms/ads/AdActivity; "

这意味着两个同名的jar文件或具有相同类名的类似文件..

好的,这意味着删除重复的..但是家伙在哪里?

这是 google play 服务的 java 构建路径和顺序导出。​​

这里有一些关于 BaseGameUtils 的信息

最后是我正在使用的应用程序..

【问题讨论】:

  • 检查您的项目库文件夹。你有重复的罐子吗?它们可能是不同的版本,在这种情况下,您可以将最新的支持库复制到您的项目库文件夹
  • @raghunandan uhm.. 我的 lib 文件夹中每个 jar 只有 1 个副本..
  • 从图片中看,jar 位于 android 私有库中,也位于 Android 4.4w 以上。检查他们
  • 你的问题是 jars 应该只在你的 andorid 私有库中。如果您引用依赖项下的库项目。请确保你摆脱重复的罐子。
  • @raghunandan 好的,谢谢先生的帮助,我想我理解了这个问题.. 你是说我在 libs 文件夹中添加的库不应该出现在我的“java构建路径”中“这意味着停止添加外部罐子,其次你说如果我添加一个库,它将显示在 android 依赖项下拉列表中,但它不需要在那里,因为它们只需要在 android 库中放置场景下来。。是这样吗?如果是,我如何删除 android 依赖项下拉菜单中的库?

标签: java android google-play-services noclassdeffounderror dex


【解决方案1】:

你有重复的罐子。确保删除它们。我不能指出哪些是重复的,只看图片。所以贴了我的一个样本

我在 Eclipse 中的项目示例,带有 jars 和 referencede 库项目

注意:我在 FaceBook、EventBus 和我自己的项目中都有 android-support-v4.jar。它们是相同的版本。

看着关闭的图片你也无法解析目标android-17...

Unable to resolve target 'android-XX'

【讨论】:

  • 哦,您说在您的 facebook 库中,它在某处具有 android 支持 .jar 并且由于您在发布的实际项目中拥有它,因此您在 facebook 项目中不需要它,所以你删除了吗? @raghunandan
  • 我想提一下,我必须在 BaseGameUtiles 和我正在发布的项目中引用 google play 服务作为库。我只在我的项目中引用了 BaseGameUtiles。所以引用了 google play services两次,BaseGameUtiles 一次..
  • 我有没有说过要删除。在我的示例图片中,没有重复的罐子。库项目的 libs 文件夹中有 andorid-support-v4.jar。都是同一个版本。库项目仅被引用一次。注意:从您的项目构建路径中删除重复的 jars
  • 哦,意思是删除basegameutiles和google play服务库中的android支持.jar或导入用作库的项目..
  • 我在我的问题中添加了一张图片,显示了 basegameutils 的 java 构建路径菜单,谢谢您的帮助和耐心先生..
猜你喜欢
  • 1970-01-01
  • 2015-03-24
  • 1970-01-01
  • 1970-01-01
  • 2014-03-14
  • 2023-03-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多