2013-03-29 52 views
5

我有一个Android应用程序,它调用一个罐子库说b.jar。 这个b.jar库。然后调用facebook sdk lib。 当我编译我的应用程序在这种情况下,它总是说

无法执行dex:多个dex文件定义Lcom/facebook/android/AsyncFacebookRunner $ 1; 转换为Dalvik格式失败:无法执行dex:多个dex文件定义了Lcom/facebook/android/AsyncFacebookRunner $ 1;

我已经用了几天的时间使它工作,但是,我没有解决这个问题。 有谁知道如何解决这个问题?

+1

这可能是因为在您的项目中多次包含同一个jar。 facebook sdk lib如何包含在内,它是一个jar吗?如果是这样,请确保您的项目只包含一次(它不会出现在引用的库项目中,或者构建路径等)。 – ab11

+0

我从属性 - > Android->库 - >添加到我的b lib项目包括facebook lib项目。然后,我将b lib项目从Properties-> Android-> Library-> Add添加到我的主应用程序中。当我在这种情况下设置它时,我遇到了这个问题。有没有人有想法解决它? –

+1

@JackyLam嗨,我面临同样的问题。我希望你解决了这个问题?请分享你是如何做到这一点的? –

回答

4

转到项目属性,然后Java构建路径 - >库 - >删除Android的依赖关系,并确定运行项目

从推介:https://stackoverflow.com/a/15247670/1585773

对我来说非常完美。

+0

对我不起作用 – ajbraus

+0

如果Facebook sdks被引用为库,那么如果您从java构建路径中删除Android依赖关系,则项目将无法编译,因为Facebook jar会出现在Android依赖项 – Jasper

3

所有的答案是解决。他们没有解决问题的根源。如果你看看你的项目结构,有一个FacebookSDK项目和你的项目。在这两个项目中,你都有com.facebook.android(第一个java文件是AsyncFacebookRunner)包,它们包含相同的java文件。显然多个dex文件将定义你的类文件,你会得到错误。

解决方案 - 从您的主项目(而不是FacebookSDK)中删除com.facebook.android。

+0

+1中,因为“所有答案都是解决方法”。我正在搜索互联网,除了寻找工作外,什么也找不到。我会为一篇关于多个项目德兴如何工作的文章而杀人 – slezica

0

对我来说,这是由于与AddThis SDK发生冲突而导致的,因为AddThis SDK包含嵌入其中的Facebook SDK的部分副本。所以com/facebook/android/AsyncFacebookRunner类定义了两次。

我能解决这个使用这些问题的答案:

Android AddThis sdk + Facebook sdk won't build in Android Studio

Android Studio - App Crashing on AddThis.jar - "Sources Not Found" Message

特别是,通过使用从第二个答案此步骤:

使用的命令zip -d addthis0.0.8.jar com/facebook/*在客运站 从addthis0.0.8.jar删除Facebook文件

由于我使用Eclipse,因此我不需要在这些答案中执行任何其他步骤。

相关问题