FBSDKCoreKit的Facebook iOS8 SDK构建模块错误

sta*_*nne 42 objective-c facebook-ios-sdk ios8

我正在尝试将Facebook SDK添加到Xcode中的iOS 8 Objective-C应用程序中.我根据FB-dev说明进行了安装.但是,当我将标头添加到AppDelegate.m文件时,出现"无法构建模块'FBSDKCoreKit'"错误.

#import "AppDelegate.h"
#import <FBSDKCoreKit/FBSDKCoreKit.h>
Run Code Online (Sandbox Code Playgroud)

基于我在别处读到的内容

  1. 我已经清理了构建并重新安装了Xcode.
  2. 我还重新安装了Facebook SDK安装程序,并尝试将其添加到空白项目中(以防我的应用程序出现损坏的情况).
  3. 我在指令中仔细检查了plist和框架文件FB列表,但似乎没有任何遗漏.

我很难过.

abj*_*ato 47

FBSDKCoreKit无法构建,因为FBSDKAppLinkResolver.h头文件中的" 包含框架模块内的非模块化头 "错误: #import <Bolts/BFAppLinkResolving.h>在行中.

来自Swift编译器错误的解决方案:"框架模块内部的非模块化头"(切换CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES)对我没有帮助.

我的解决方案

  1. 在Bolts.framework文件模块映射中创建:Modules/module.modulemap(如在FBSDKCoreKit.framework中)
  2. 把这些代码放在里面

    framework module Bolts {
    umbrella header "Bolts.h"
    
    export *
    module * { export * }
    
    
    explicit module BFAppLinkResolver {
        header "BFAppLinkResolver.h"
        link "BFAppLinkResolver"
        export *
    }}
    
    Run Code Online (Sandbox Code Playgroud)

有趣的事实是,在FBSDKCoreKit这样的方案是由Facebook实现的,为什么他们不把它应用到Bolts ......

  • 你是什​​么意思'在螺栓框架中创建' - 你的意思是在螺栓framework.framework中添加一个标题? (4认同)
  • 我试过这个,但我仍然有同样的错误. (3认同)

小智 39

不确定它是否有副作用,但在构建设置中将"允许非模块化包含在框架模块中"设置为"是"为我解决了问题.希望它也适合你.

  • @vladiMilk我使用pod来集成fb并且所有建议的解决方案都不适合我,请尽快帮助我. (2认同)

Ran*_*man 14

只需执行以下操作即可成功构建应用程序.

在构建设置中将"允许框架模块中的非模块化包含"标志设置为"是"

而且我不想将"启用模块"(c和Objective-C)设置为NO

在此输入图像描述


Dan*_*rov 11

对于Objective-C,我使用Paul Lehn回答:https: //developers.facebook.com/bugs/362995353893156/

  1. 将-ObjC标志添加到项目的Other Linker Flags构建设置中.(如果你不想添加项目配置,初始化按钮类)
  2. "构建设置"中的"允许框架模块中的非模块化包含"设置为"是"
  3. 将"启用模块"(c和Objective-C)设置为No.

(也不要忘记添加框架,对我来说它是:"AdressBook""QuartzCore""CoreLocation""CoreGraphics"如果还没有添加,还有"UIKit""基础""CoreData")

它终于为我工作了

所有这些都用于我的项目文件夹中的自定义文件夹中的链接FBSDK,而不是来自〜/ Documents/FacebookSDK


Muh*_*man 10

从FacebookCoreKit.framwork中删除模块目录.

在此输入图像描述


小智 9

来自Chris Pan(Facebook团队):https: //developers.facebook.com/bugs/362995353893156/

4.0.1版本添加了模块映射(应该已经避免了桥接头的需要)但看起来可能会导致一些其他兼容性问题.我们正在进行适当的修复,但另一种解决方法是从每个FBSDK*Kit.framework包中手动删除模块映射; 例如,rm -r ~/Documents/FacebookSDK/FBSDKCoreKit.framework/Modules/(并重复FBSDKLoginKit和FBSDKShareKit)

据我所知,我们有2个选项来处理这个问题:

  1. 克里斯说,删除所有模块映射.
  2. 在Bolts.framework文件夹(在FacebookSDK文件夹中)中添加临时(非官方)缺失模块映射文件.您应该检查此文件夹是否丢失.


ABS*_*ABS 8

如果您遇到"FBSDKCoreKit"问题,可以尝试以下解决方案:

  1. 转到构建设置并搜索"允许非模块化" 和"设置"

    "允许框架模块中的非模块化包含"标记为YES

在此输入图像描述

  1. 转到Document/FacebookSDK文件夹

    然后转到FBSDKCoreKit.framework

    在此文件夹中删除模块文件夹.然后在项目中添加FacebookSDK库.

  2. 将Framework搜索路径设置为"〜/ Documents/FacebookSDK"

    查找框架搜索路径的步骤

    转到项目的构建设置并搜索"框架搜索路径".

    然后添加"〜/ Documents/FacebookSDK"

在此输入图像描述

编辑:

请在Facebook应用程序中打开框架搜索路径并复制粘贴您应用程序中提到的所有路径.类似于我在下面的屏幕截图中附加的路径

在此输入图像描述

这将解决您的问题