安卓Facebook SDK依赖中存在重复的支持库问题

34

我已经实现了新的Facebook SDK 3.0 beta版本。该库项目包含Android支持库v4。我还在自己的项目中使用了一种不同版本的支持库。当我将Facebook SDK添加为库时,在控制台上会出现以下错误:

Jar mismatch! Fix your dependencies
Found 2 versions of android-support-v4.jar in the dependency list,
but not all the versions are identical (check is based on SHA-1 only at this time).
All versions of the libraries must be the same at this time.

我尝试在构建路径中排除libs文件夹,但错误仍然存在。

我必须在两个地方放置相同的.jar文件。这里是否有什么我遗漏的东西?我的想法是使用自己项目的支持库(以保持其更新)。

3个回答

122
似乎不同的项目正在使用两个不同的支持库,因此校验和不同。
你必须对Facebook SDK项目和你正在构建的应用程序都重复这个步骤。
当我遇到这个错误时,我会做以下操作:
1. 右键点击项目。 2. 悬停在Android工具上。 3. 点击“添加支持库…”。 4. 接受库的下载。
这样做确保了两件事:a. 你从Google源获取了最新版本的支持库,b. 你在所有项目中都有完全相同的库。

1
好的,那么每当支持库更新时,我都需要同时更新我的项目和FB的库项目吗?点b是我没有想过的事情。谢谢! - nsemeniuk
2
很多答案告诉人们删除一个jar文件,但我有两个独立的库项目,每个项目都有自己的支持jar文件,所以我不能删除任何一个。这个问题困扰了我很长时间,但是通过将您的解决方案应用于我所有的库项目,jar文件不匹配的错误消失了!非常感谢! - AndroidNoob
3
别忘了事后清理你的项目。 - Gal Bracha
哦!你需要对Facebook SDK和你的应用程序都进行这样的操作。糟糕。 - David T.
7
非常感谢。对于我们这些新手,请更新你的回答,说明这个操作必须在两个项目上完成。 - Swapnil Luktuke
我在我的Android项目中遇到了同样的问题,所以我更新了库,然后我得到了“无法执行dex:多个dex文件定义Lcom/intel/inde/mp/android/AndroidEffectWrapper”的错误信息。“转换为Dalvik格式失败:无法执行dex:多个dex文件定义Lcom/intel/inde/mp/android/AndroidEffectWrapper;”这是什么原因呢? - Mr.G

1

只需删除项目中的一个文件,将其从类路径中移除,然后尝试重新构建您的项目。


1
通过顶部答案提到的菜单安装相同版本的支持库是一个不错的解决方案。虽然有时候这对我来说不起作用(我认为这与我的Workspace文件夹与Dropbox同步有关,因此Eclipse有时不会覆盖文件),所以我采用的方法是从中央位置链接支持库。您的SDK文件夹(例如在Windows上的C:\ Program Files(x86)\ Android \ android-sdk \ extras \ android \)内有这些JAR文件,当您运行SDK管理器时,它们会更新,因此您可以将其从Facebook(或任何其他库)和您的项目引用。由于最终,JAR文件中的代码被打包到您的classes.dex中。您甚至不需要在libs文件夹中使用支持库。另外:如果您使用Gradle构建系统及其依赖项管理甚至Maven,则不会遇到这样的问题,但需要更多时间和知识来正确地设置。

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