在CI构建中使用Facebook iOS SDK - 找不到框架

3
我的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",
);

有人可以帮忙让构建工作起来吗?

2个回答

0

不确定这是否有帮助,但至少让我们尝试一下。请尝试将 Facebook SDK(FBSDKCoreKit、FBSDKLoginKit、FBSDKShareKit)文件夹中的每个框架文件复制到 Xcode 库部分中 RCTFBSDK 框架文件夹中,如下图所示。

enter image description here

注意:当您将文件放入框架文件夹中时,请不要忘记检查(如果需要,请复制文件)。此外,清理项目并重新运行它。
希望这能解决您的问题。

0

我一直觉得Cocoapods有点靠运气。如果你阅读Cocoapods文档,他们建议不要在.gitignore中包含你的Pods目录。我们目前将我们的Pods包含在源代码控制中。这部分是因为有些Pods托管在内部网络上,Azure DevOps无法访问。它还有一个好处,就是开发人员可以克隆并立即构建。


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