安卓 AddThis SDK 和 Facebook SDK 在安卓工作室中无法构建

3

我正在Android Studio上开发一个项目,目前使用Facebook SDK获取Facebook用户的一些信息,效果还不错。

我还需要实现AddThis功能,但是当我尝试同时引用两个SDK编译这个项目时,出现了以下错误:

Android Dex: [<removed>] com.android.dx.util.DexException: Multiple dex files define Lcom/facebook/android/AsyncFacebookRunner$1;

在AddThis .jar中,如预期的那样,存在com.facebook.android.AsyncFacebookRunner。显然,它也存在于Facebook SDK模块中。我需要在AddThis中存在但在Facebook中不存在的功能,反之亦然。
有谁知道处理这种情况的方法吗?

这是使用Facebook SDK版本3.0和AddThis SDK版本0.0.8。 - Shaggy
1个回答

3
我成功解决了这个问题:
因为Facebook SDK是一个模块而不是jar文件,所以我从Facebook SDK模块引用了AddThis0.8.8.jar,并从我的项目直接中删除了对它的引用。
尽管如此,在 Facebook SDK 中的 com.facebook.android.* 和 AddThis jar 中重复的(com.facebook.android.*)之间仍然存在冲突。所以,我删除了 com.facebook.android 包及其内容 - 从 Facebook SDK 中 - 然后在 classpath (我想是类路径?) 中包含了 com.addthis(当我在代码中输入“ATButton”时,Android Studio建议我包含它。我说“当然了,谢谢JetBrains!”)。
现在我能够同时使用AddThis和Facebook SDK而没有任何冲突。
希望这个过程能在某种程度上帮助到某个人。
[编辑]
这个还有问题。我恢复了Facebook SDK,并从AddThis jar中删除了Facebook内容。虽然不是100%可行,但将所有Facebook内容都保留在Facebook模块中可能是更好的想法。如果你有更好的解决方案,请发表答案。

1
这种方法很不专业,会导致一些问题,包括在项目的AndroidManifest.xml中定义的com.addthis.*活动没有强类型。我强烈鼓励任何有更好解决方案的人分享它作为答案。 - Shaggy
+1 你太棒了!非常感谢。我花了一整天的时间解决这个问题,其实这是一个有点愚蠢的事情,AddThis包含了FacebookSDK的一部分,让可怜的开发者只能选择接受库或FacebookSDK,但感谢你的解决方案,问题已经解决 :) - Youans
你知道如何从 addthis0.0.8.jar 中删除 Facebook 目录吗?我解压了它,删除了目录,然后使用 jar cf addthis0.0.8.jar addthis0.0.8,但现在 Android Studio 说找不到 com.addthis.core 等。 - Chris
你可以查看我的评论,了解我是如何使其工作的。http://stackoverflow.com/questions/25964223/android-studio-app-crashing-on-addthis-jar-sources-not-found-message/25979176#25979176 - Chris

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