Facebook SDK 与 Android Studio 的集成
Posted
技术标签:
【中文标题】Facebook SDK 与 Android Studio 的集成【英文标题】:Facebook SDK integration with Android Studio 【发布时间】:2014-08-27 22:21:05 【问题描述】:我正在尝试将 Facebook SDK 集成到我的 android 项目中,但无法这样做。我已按照 facebook 文档中提到的步骤进行操作。但我得到的错误是 -
FAILURE:构建失败并出现异常。
* What went wrong:
Execution failed for task ':dexDebug'.
> com.android.ide.common.internal.LoggedErrorException: Failed to run command:
/Applications/Android Studio.app/sdk/build-tools/19.1.0/dx --dex --num-threads=4 --output /Volumes/Data/projects/project_name/build/intermediates/dex/debug /Volumes/Data/projects/project_name/build/intermediates/classes/debug /Volumes/Data/projects/project_name/build/intermediates/dependency-cache/debug /Volumes/Data/projects/project_name/build/intermediates/pre-dexed/debug/bolts-57446fde6c024f562e020fd9e003407a5fc2a578.jar /Volumes/Data/projects/project_name/build/intermediates/pre-dexed/debug/bugsense-3.5-8ab33d75af263f7f86f49230e10099a1c2c9a549.jar /Volumes/Data/projects/project_name/build/intermediates/pre-dexed/debug/classes-0523eab2b91bd947bf3140cde551a15ef204bab4.jar /Volumes/Data/projects/project_name/build/intermediates/pre-dexed/debug/classes-1bf58233e09b0ba3df3b170e5976ea8835ce9dbc.jar /Volumes/Data/projects/project_name/build/intermediates/pre-dexed/debug/classes-50cb56f46834855caa39a5bee8fee3da46d5c1eb.jar /Volumes/Data/projects/project_name/build/intermediates/pre-dexed/debug/classes-5656b1a26fb9cf46c5e761b517ec752c47e7afe7.jar /Volumes/Data/projects/project_name/build/intermediates/pre-dexed/debug/classes-d98d71fc376b8658355216fd82eb5433791f3b1d.jar /Volumes/Data/projects/project_name/build/intermediates/pre-dexed/debug/custom-linkedin-j-android-46399e5197dc53ee00e0370db8440536b745b26a.jar /Volumes/Data/projects/project_name/build/intermediates/pre-dexed/debug/droidText.0.5-809fa4af200fcd621ea1d4d33c187c85ccfb4721.jar /Volumes/Data/projects/project_name/build/intermediates/pre-dexed/debug/gson-2.2.4-1f9beaae96795dd030e7971a8a89b53987904e64.jar /Volumes/Data/projects/project_name/build/intermediates/pre-dexed/debug/libGoogleAnalyticsServices-969197b4a3de6e6538e72f3e6d598b94488ccd57.jar /Volumes/Data/projects/project_name/build/intermediates/pre-dexed/debug/Parse-1.5.0-e86e2456aff7f83bdad45e275836d6a3e12c84c9.jar /Volumes/Data/projects/project_name/build/intermediates/pre-dexed/debug/signpost-commonshttp4-1.2.1.1-ad7399087713b6c6e45b1e45950da833fcc81870.jar /Volumes/Data/projects/project_name/build/intermediates/pre-dexed/debug/signpost-core-1.2.1.1-50384ca3c3962abba499d71f329139d20bac4475.jar /Volumes/Data/projects/project_name/build/intermediates/pre-dexed/debug/signpost-jetty6-1.2.1.1-96a3b59a9846e0434e4213c2f1c063549d7f2b83.jar /Volumes/Data/projects/project_name/build/intermediates/pre-dexed/debug/support-v4-19.0.1-3bf117e59e2e0f41bbf9219f2be90cdcf1dd583d.jar
Error Code:
2
Output:
UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Cannot merge new index 67781 into a non-jumbo instruction!
at com.android.dx.merge.InstructionTransformer.jumboCheck(InstructionTransformer.java:108)
at com.android.dx.merge.InstructionTransformer.access$800(InstructionTransformer.java:25)
at com.android.dx.merge.InstructionTransformer$StringVisitor.visit(InstructionTransformer.java:71)
at com.android.dx.io.CodeReader.callVisit(CodeReader.java:114)
at com.android.dx.io.CodeReader.visitAll(CodeReader.java:89)
at com.android.dx.merge.InstructionTransformer.transform(InstructionTransformer.java:48)
at com.android.dx.merge.DexMerger.transformCode(DexMerger.java:840)
at com.android.dx.merge.DexMerger.transformMethods(DexMerger.java:811)
at com.android.dx.merge.DexMerger.transformClassData(DexMerger.java:783)
at com.android.dx.merge.DexMerger.transformClassDef(DexMerger.java:680)
at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:540)
at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:170)
at com.android.dx.merge.DexMerger.merge(DexMerger.java:188)
at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:439)
at com.android.dx.command.dexer.Main.runMonoDex(Main.java:287)
at com.android.dx.command.dexer.Main.run(Main.java:230)
at com.android.dx.command.dexer.Main.main(Main.java:199)
at com.android.dx.command.Main.main(Main.java:103)
这是我的 Facebook gradle 文件
dependencies
compile 'com.android.support:support-v4:13.0.0'
compile files('libs/bolts.jar')
这是我的项目 gradle 文件
dependencies
compile fileTree(dir: 'libs', include: '*.jar')
compile project(':libraries:actionbarsherlock')
compile project(':libraries:sliding-menu')
compile project(':libraries:cwac-touchlist')
compile files('libs/Parse-1.5.0.jar')
compile 'com.bugsense.trace:bugsense:3.5'
compile files('libs/gson-2.2.4.jar')
compile project(':facebook')
对此有什么建议吗?如果您需要任何其他信息,请告诉我。
【问题讨论】:
【参考方案1】:您可以检查是否再次导入相同的 JAR。假设一个 jar 中有一个类被导入到另一个 jar 中。因此,只需检查是否包含任何 lib / class 文件两次。
或 如果你只是导入一些 jar 文件,你可以尝试删除它们,然后一次添加一个,看看是哪一个出错了。 就我而言,我就是这样做的,当我导入最后一个时,应用程序确实编译了。所以我认为,我可能一次导入了很多,这才是真正的问题。但现在一切正常。
【讨论】:
【参考方案2】:Android 应用程序有一个构建步骤,其中 dex 工具获取您的 Java 类文件并将它们转换为 Android 设备可以直接运行的格式。输出文件格式存在限制,其中之一是文件可以包含的字符串数量限制,除非将选项设置为打开“巨型模式”。您可以将标志设置为打开巨型模式,这可能会帮助您解决此错误,但请注意您也可能接近其他限制(特别是,您的应用程序中可以使用的方法总数存在限制, 除非您将其拆分为多个 dex 文件)。如果您看到未来的错误,请按照这些思路进行一些研究。
无论如何,要启用巨型模式,请尝试将其放入出现错误的模块的 build.gradle 文件的 android
块中:
dexOptions
jumboMode = true
【讨论】:
以上是关于Facebook SDK 与 Android Studio 的集成的主要内容,如果未能解决你的问题,请参考以下文章
共享回调不适用于 Facebook SDK 4 Android
Android Facebook SDK 3.0 在登录时给出“remote_app_id 与存储的 id 不匹配”
Facebook React Native SDK LoginButton 在 Android 中呈现带红色边框的 UnimplementedView
Android Studio 中的 Facebook SDK 4 ExceptionInitializeError Login v2.3
在 Facebook SDK Android 上找不到文件“com.facebook.android.facebook”