FBSDKCoreKit/FBSDKCoreKit.h 未找到错误

FBSDKCoreKit/FBSDKCoreKit.h not found error

我正在实施 FB 登录,所以我从 https://developers.facebook.com/docs/ios 下载了 SDK。 然后我将 FBSDKCoreKitFBSDKLoginKitFBSDKShareKit 框架拖到我的项目中。

当我 运行 投影时它工作正常。但是当我关闭并重新打开它时,会出现 "FBSDKCoreKit/FBSDKCoreKit.h not found error" 。然后我再次将粘贴 FBSDKCoreKit 框架复制到我的项目库中 错误消失,这个过程继续。有人以前遇到过这个问题吗?

我应该怎么做才能解决这个错误?

确保遵循此步骤:

取消选择将项目复制到目标组的文件夹中。 https://developers.facebook.com/docs/ios/getting-started/

此外,在您的构建设置中,查看此字段:"Framework Search Paths" 你应该有这样的东西:

/Users/[username]/Documents/FacebookSDK

或更通用的配置

~/Documents/FacebookSDK

此外,查看 Finder 并确保该框架确实存在

我必须通过删除框架并通过右键单击项目->添加文件...再次添加它来解决这个问题,然后选择框架和 SELECT 如果需要复制文件选项。我知道这不是 Facebook 推荐的,但我无法做到这一点,但这样就成功了! 我正在使用 FBSDK 的 v4.6 和 Xcode 7 beta 6。 希望它能帮助你和其他面临同样问题的人:)

/Users/[username]/Documents/FacebookSDK/ 目录更改为 Documents/FacebookSDK,如下所示:

我遇到了类似的问题,无论如何都无法解决编译器错误。

我遵循并执行了几次准确的集成步骤,直到我注意到我的项目文件夹 中有 FBSDKCoreKit.framework 的副本](可能是错误发生的)。此外 Framework Search Paths 除了 /Users/{username}/Documents/FacebookSDK 之外已经包含 $(PROJECT_DIR)

所以我从项目目录中删除了FBSDKCoreKit.framework的副本,现在一切正常。

我遇到了同样的问题。我通过在我的框架搜索路径值周围使用引号来修复它,即“/Users/.....”。显然,我的文件路径中有一些空格。

使用 CocoaPods,唯一对我有用的是:

  1. 更新Header搜索路径 ( NOT 框架搜索路径 ) Build Settings 下 Xcode:

    - "\"${PODS_ROOT}/Headers/Public/Facebook-iOS-SDK\"",

    - "\"${PODS_ROOT}/Headers/Public/Facebook-iOS-SDK/FacebookSDK\"",

    + "\"${PODS_ROOT}/Headers/Public/FBSDKCoreKit\"",

    + "\"${PODS_ROOT}/Headers/Public/FBSDKCoreKit/FBSDKCoreKit\"",

  2. 添加缺失的header(s?):

    cd Pods/Headers/Public/FBSDKCoreKit/FBSDKCoreKit/ && ln -s ../../../../FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKCoreKit+Internal.h FBSDKCoreKit+Internal.h

编辑: 第 2 点显然需要在每次调用 pod install.

后重复

FB 开发人员不要select 复制 文件。这会产生问题。但是我做的恰恰相反

  1. 我 select 如果需要复制项目。它在我的项目中复制了框架。 xcode 7.2 也自动添加了 Search Path

  2. 还要仔细检查 Framework Search Pathsunder Search Paths under Build Settings 字段中是否没有任何内容,然后只需添加 $(PROJECT_DIR) 即可等于 /Users/user/Documents/....PROJECT..DIR...

在 2 个项目中编译成功。

我有同样的 issue.I 使用 Facebook SDK 版本 4.10.0。
我知道我的解决方案不好但对我有用。我更改了 Facebook 源代码。 将导入文件路径从 #import <FBSDKCoreKit/FBSDKCoreKit+Internal.h> 更改为 #import <FBSDKCoreKit/Internal/FBSDKCoreKit+Internal.h>

对于 Xcode 7.3,以下对我有用。 按照 FB 指南中提到的步骤进行操作,并另外执行以下操作:

第 1 步。转到 Document/FacebookSDK 文件夹

步骤 2. 点击 FBSDKCoreKit.framework

第 3 步。在此文件夹中删除 Modules 文件夹,然后拖放到您的 Xcode 项目中。

参考资料:

谢谢

更新 Cocoapods 1.0.0 后,我删除了 pod.lock 并安装了 FBSDKCoreKit、[=17] 的当前稳定 pod 版本(4.7.04.11.0) =], FBSDKShareKit

然后我遇到了同样的错误。我所做的是:

  1. 在 Xcode 中添加了 Header 搜索路径构建设置:

    "${PODS_ROOT}/Headers/Public/Facebook-iOS-SDK\"
    "${PODS_ROOT}/Headers/Public/Facebook-iOS-SDK/FacebookSDK\"
    "${PODS_ROOT}/Headers/Public/FBSDKCoreKit\"
    "${PODS_ROOT}/Headers/Public/FBSDKCoreKit/FBSDKCoreKit\"
    

然后我仍然有另一个文件的错误。因为 XCode 正在使用预构建框架。

FBSDKCoreKit/FBSDKCopying.h not found

  1. Clean Build -> ⇧⌘K (Shift + Command + K) - 清理构建的框架。
  2. 清理构建文件夹 -> ⌥⇧⌘K (Option+Shift+Command+K)
  3. 关闭Xcode // 重要! - 否则它会自动为当前打开的项目重新创建 DerivedData
  4. 运行终端中的这个命令

    rm -rf ~/Library/Developer/Xcode/DerivedData
    
  5. 打开XCode并构建成功

我昨晚 运行 解决了这个问题,想 post 我的解决方案以防其他人遇到同样的问题。我的问题是我的应用程序正在构建并且 运行 在 sim 卡和我的设备上运行良好,但是每当我尝试 运行 我的单元测试时,构建都会因为 FBSDKCoreKit 而失败。我花了大约 30 分钟才找到问题,当我找到问题时,我觉得自己像个傻瓜。

确保 FBSDKCoreKit 包也针对您的测试,而不仅仅是您的常规应用程序构建。

我在升级到 Xcode 8 时遇到了这个问题,并且能够通过更改

来解决它

#import <FBSDKCoreKit / FBSDKCoreKit.h>

#import <FBSDKCoreKit/FBSDKCoreKit.h>

这也让我痛苦了好几个小时!终于找到问题的根源了。

Facebook SDK 必须 位于 ~/Documents/FacebookSDK

这是因为在RCTFBSDK项目中这个路径是硬编码的。但是您可以通过将自定义位置添加到 RCTFBSDK 项目的框架搜索路径中来添加自定义位置(它将显示在错误控制台中)!

如果上述任何答案均无效,请尝试以下操作:

打开您的 ~/Documents/FacebookSDK 文件夹。 检查文件名右侧是否有云图标:

screenshot.png

如果是这样,macOS 从您的计算机中删除了您的文件并将它们上传到 iCloud! (感谢苹果)

您可以:

  1. 点击所有的云图标,它会下载文件回来
  2. 在您的 mac 上禁用存储优化以防止它再次发生

将目录添加到构建设置 -> "Framework Search Paths" 时,请确保将其添加到调试和发布中。

愚蠢的错误,但如果你是 xcode 中的 iOS 开发新手,你可能会错过这个。

对于从 Carthage 迁移到 Cocoapods 的人,请确保从 Link Binary With Libraries 下的构建阶段选项中删除 FBSDKCoreKit 的 Carthage 引用。

->构建配置。

     -> Framework Search paths.

将FacebookSDK目录放入我的案例中 ~/Documents/FacebookSDK 在 :

调试,

任何架构 I 任何 Sdk,

发布.

特别是这个错误,因为在 Any architecture I Any Sdk 中没有路径 就我而言

~/文档/FacebookSDK 并且需要注意的是FacebookSDK文件夹必须在Domuments

示例

https://photos.app.goo.gl/5bD4d39a11AalYsx1

就我个人而言,我在各种路径(包括应用程序名称)中遇到空格问题。删除空格(或在各处添加“”以确保路径安全)解决了问题。

如果您的 FacebookSDK 与

不同,问题的解决方案

~/Documents/FacebookSDK

因为您不希望 iCloud Drive 使用 FacebookSDK 加载; 您必须为添加的

更改 "Framework Search Paths"

react-native-fbsdk

这是因为在RCTFBSDK.xcodeproj里面Libraires;路径是硬编码的。但是您可以通过将其添加到 RCTFBSDK 项目的框架搜索路径来添加您的自定义位置。

  1. Select 项目
  2. 图书馆
  3. Select "RCTFBSDK.xcodeproj"
  4. 构建设置
  5. 在 "Framework Search Paths" 中添加您的自定义路径 例如:/Users/rajanmaharjan/FacebookSDK
  6. Clean Build -> ⇧⌘K (Shift + Command + K) - 清理构建框架。
  7. 构建项目;它应该构建成功。

我必须将框架搜索路径中的 FacebookSDK 路径移动到 $(PROJECT_DIR)

以上
$(SRCROOT)/../../../Documents/FacebookSDK
$(inherited)
$(PROJECT_DIR)

我有类似的问题。修复包括我选择: "COPY FILES IF NECESSARY" 当手动将不同的框架添加到 XCode 框架时。

我将框架拖到 xcode 内的 Framework 文件夹中,如果需要选择复制文件,并且在没有任何其他配置更改的情况下一切正常。

For React Native devs:

建议完成的步骤:

1.Make sure that the Facebook SDK frameworks are installed in ~/Documents/FacebookSDK.

2)Make sure that FBSDK[Core, Login, Share]Kit.framework show up in the Link Binary with Libraries section of your build target's Build Phases.

3)确保您的框架搜索路径 构建目标的构建设置是

$(HOME)/Documents/FacebookSDK

而不是

~/Documents/FacebookSDK 

如果还是不行,那么:

1)sudo chmod -R 755 ~/Documents/FacebookSDK

2) 将RCTFBSDK.xcodeproj的框架搜索路径设置为

  $(HOME)/Documents/FacebookSDK 

(在您的项目文件夹的库下) set RCTFBSDK framework searchpath as here

clean your project (command+ shift + k ) and build.

我已经安装了 react-native-fbsdk 和 link 使用 react-native-link react-native-fbsdk。

按照link

的说明进行操作

https://developers.facebook.com/docs/react-native/configure-ios

这提供给 link react-native 库使用 ios_setup.js 我遵循了以下步骤。

  1. 设置 facebook developer account.

  2. 通过执行以下命令安装文件ios_setup.js 项目根文件夹中的命令提示符。

curl -O https://raw.githubusercontent.com/facebook/react-native-fbsdk/master/bin/ios_setup.js

  1. 通过执行以下命令安装 plist 包、xcode 包和 adm-zip 包。 npm install plist xcode adm-zip
  2. 运行 脚本 ios_setup.js 通过执行以下命令,并插入您的应用程序的应用程序 ID 和应用程序名称。如果您的应用名称超过一个字,请用引号括起来。

node ios_setup.js [App ID] [App Name]

当 运行 节点 ios_setup.js 它会自动 link ios.

中的所有文件

在使用此处的几个答案进行故障排除之后。这就是我所做的。

  1. 我将 ~/Documents/FacebookSDK 更改为 "$(HOME)/Documents/FacebookSDK" 注意:我使用引号 "
  2. 我将 "$(HOME)/Documents/FacebookSDK" 移到了 header 搜索路径中的列表顶部。

Xcode 11 + CocoaPods 解决方案

在您的项目的根目录中,即您 MyApp.xcworkspace 打开终端和初始化 pod 的 pod init 的相同路径,然后添加所需的 FBSDK pods - 你的 Podfile 应该看起来像这样:

# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'
target 'MyApp' do
  # Comment the next line if you don't want to use dynamic frameworks
  use_frameworks!

  # Pods for MyApp
  pod 'FBSDKCoreKit'
  pod 'FBSDKLoginKit'
  pod 'FBSDKShareKit'   
end

现在在您的终端 pod install 中打开 MyApp.xcworkspace 而不是 MyApp.xcodeproj)。转到 MyApp -> Build Phases -> Link Binary with Libraries,你应该会在框架列表的底部看到 Pods_MyApp.framework。如果您单击 Pods_MyApp.framework 下面的 +,您应该在 Workspace 下面的新 window 中列出 Pods,其中应该包含与 FBSDK 相关的所有内容。

注意:确保您安装的是 FBSDK,而不是 Facebook SDK,因为第二个已经过时了。

FBSDKLoginKit

中有同样的错误

如果您使用多个 pod 项目

install! 'cocoapods',
  :generate_multiple_pod_projects => true

那么你应该强制 cocoapods 将所有 FBSDK pods 放入同一个项目中以使私有 headers 可见

pod 'FBSDKCoreKit', '5.11.0', :project_name => 'FBSDK'
pod 'Bolts', '1.9.0', :project_name => 'FBSDK'
pod 'FBSDKShareKit', '5.11.0', :project_name => 'FBSDK'
pod 'FBSDKLoginKit', '5.11.0', :project_name => 'FBSDK'