首页 > 解决方案 > 在 CI 构建中使用 Facebook iOS SDK - 未找到框架

问题描述

我的 React Native 应用程序使用了这个react-native-fbsdk包,我试图让 iOS 构建在 CI 服务器 (Azure DevOps) 上工作。主要问题是 Facebook SDK 预计将安装在 中~/Documents/FacebookSDK,这在 CI 构建服务器上不起作用。

我遇到了很多问题。我目前得到的错误是:

▸ Linking TzoApp
⚠️  ld: directory not found for option '-L/Users/vsts/Library/Developer/Xcode/DerivedData/TzoApp-bghowrtdysrbywbsslmkxejgzgoc/Build/Products/Release-iphoneos/React'
⚠️  ld: directory not found for option '-F/Users/vsts/agent/2.149.2/work/1/s/tzoapp-mobile/ios/Pods/FirebaseCore/Frameworks'
⚠️  ld: directory not found for option '-F/Users/vsts/agent/2.149.2/work/1/s/tzoapp-mobile/ios/Pods/FirebaseMessaging/Frameworks'
⚠️  ld: directory not found for option '-F/Users/vsts/Documents/FacebookSDK'

❌  ld: framework not found FBSDKCoreKit

❌  clang: error: linker command failed with exit code 1 (use -v to see invocation)

我正在通过 Cocoapods 安装 Facebook SDK,并在我的 podfile 中有以下内容:

pod 'FBSDKCoreKit', '~> 4.40.0'
pod 'FBSDKLoginKit', '~> 4.40.0'
pod 'FBSDKShareKit', '~> 4.40.0'

我的框架搜索路径如下:

FRAMEWORK_SEARCH_PATHS = (
    "$(inherited)",
    "\"${PODS_ROOT}/FirebaseAnalytics/Frameworks\"",
    "\"${PODS_ROOT}/FirebaseCore/Frameworks\"",
    "\"${PODS_ROOT}/FirebaseInstanceID/Frameworks\"",
    "\"${PODS_ROOT}/FirebaseMessaging/Frameworks\"",
    "\"$(HOME)/Documents/FacebookSDK\"",
);

我的标题搜索路径是:

HEADER_SEARCH_PATHS = (
    "$(inherited)",
    "$(SRCROOT)/../node_modules/react-native-firebase/ios/RNFirebase/**",
    "$(SRCROOT)/../node_modules/react-native-fbsdk/ios/RCTFBSDK/**",
    "$(SRCROOT)/Pods/Headers/**",
    "${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",
);

有人可以帮助构建工作吗?

标签: iosreact-nativeazure-devopscocoapodsreact-native-fbsdk

解决方案


我一直觉得 Cocoapods 有点受欢迎。如果您阅读 Cocoapods 文档,他们建议您不要在 .gitignore 中包含您的 Pods 目录。我们目前将 Pod 包含在源代码控制中。这部分是因为一些内部托管在 Azure DevOps 无法访问的内部网络上。它还具有开发人员能够立即克隆和构建的好处。


推荐阅读