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

问题描述 投票:2回答:2

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

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

ios react-native azure-devops cocoapods react-native-fbsdk
2个回答
0
投票

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

enter image description here

注意:将文件放在框架文件夹中时,不要忘记检查(如果需要,请复制文件)。此外,清理您的项目并重新运行它。

希望这将解决您的问题。


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.