无法执行dex:多个dex文件定义了Lcom/google/android/gcm/GCMBaseIntentService;。

7

我忙于为学校任务创建一个时间表应用程序,该应用程序通过JSON从我的数据库获取数据。

我使用GCM服务进行推送通知和Johan Nilsson的Android Actionbar。

然而,当我尝试将我的应用程序导出为.APK文件时,会出现以下错误。

[2012-12-10 10:28:03 - Dex Loader] Unable to execute dex: Multiple dex files define Lcom/google/android/gcm/GCMBaseIntentService;
[2012-12-10 10:28:03 - TimeTable] Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Lcom/google/android/gcm/GCMBaseIntentService;

在导出Android应用时,会创建一个依赖图并创建一个副本。其中包含对GCM和android actionbar的引用。在将gcm添加到libs文件夹中的构建路径后,在已引用的库映射中已经有了GCM。

因此,如果删除这些依赖项,则无法运行和导出应用程序,因为会出现错误。

我已尝试清理并重新构建应用程序。请帮助我。

5个回答

18

只需在libs/中放置一个GCM JAR文件的副本。请勿手动更改构建路径。


我从构建路径和/libs中删除了GCM,然后重新添加它。 - Mattias te Wierik
@MattiasteWierik:然后将您的项目配置与我在答案中提供的配置进行比较,并尝试确定额外的GCM JAR副本来自哪里。 - CommonsWare
好的,谢谢您的帖子。几个小时后会提供更多信息。 - Mattias te Wierik
感谢您的帮助。找到了解决方案。由于某种原因,现在它可以工作了,但仍然不知道我做错了什么。感谢您的帮助! :) - Mattias te Wierik

2

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

这对我立即起作用了...

我尝试了删除Bin目录或删除gen目录,重新启动Eclipse或清理并再次构建,但除了上述步骤外什么都没用。


我在使用Drive API时也遇到了同样的问题。在“Order and export”中取消勾选它就解决了问题。 - Juuso Ohtonen

1
我在“配置构建路径”的“顺序和导出”部分中取消了google-play-services.jat的勾选,然后它就正常工作了。

0
在我的情况下,我只是直接将我的JAR文件复制到Eclipse项目libs文件夹中,并使用小写字母重命名。这样我的问题就解决了。

0

不要将 GCM.jar 添加到您的项目中,而是作为外部 jar 包添加。


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