在 CI 上找不到 React Native FBSDK 文件
React Native FBSDK file not found on CI
我已经安装了 FBSDKCoreKit、FBSDKLoginKit 和 FBSDKShareKit 11=] 然后将框架拖到 XCode 中的框架文件夹中。如果需要,我选中了复制文件的选项,以便它们出现在项目中。
然后我添加了正确的框架搜索路径~/Documents/FacebookSDK
本地构建工作正常,但是,在 Bitrise (CI) 上构建失败并出现错误:
/Users/vagrant/git/node_modules/react-native-fbsdk/ios/RCTFBSDK/share/RCTFBSDKShareDialog.h:21:9:
'FBSDKShareKit/FBSDKShareKit.h' file not found
框架搜索路径还包含 $(PROJECT_DIR)
,应该可以找到位于 appname/Frameworks/
中的框架,但我似乎无法修复这个未找到的错误。
参见:https://discuss.bitrise.io/t/build-failing-with-file-not-found-fbsdk-in-ios-build/399/11
您的 Mac 上似乎有 FacebookSDK
~/Documents/FacebookSDK
,但您没有在 bitrise.io 上下载它,所以它根本不可用为您打造。
我 运行 使用 BuddyBuild(另一个 CI 系统)解决了这个问题,并通过此处 http://docs.buddybuild.com/docs/common-react-native-errors#section-error-fbsdksharekit-fbsdksharekit-h-file-not-found 文档页面上链接的说明解决了这个问题,特别是本节:
error: 'FBSDKShareKit/FBSDKShareKit.h' file not found
This is generally a result of an incorrectly configured repository with
regards to the location of FBSDK dependencies. If you take a look at:
https://github.com/facebook/react-native-fbsdk/blob/master/ios/RCTFBSDK.xcodeproj/project.pbxproj
You will notice that RCTFBSDK will look for dependencies in one of two
locations:
- ~/Documents/FacebookSDK
- $(PROJECT_DIR)/../../../ios/Frameworks
The second option is the correct option for continuous integration systems
like Buddybuild. In other words, you MUST place your FBSDK
dependencies under the "ios/Frameworks" folder in order for it to work
on a continuous integration system.
问题是,正如 Viktor 指出的那样,CI 系统没有对包含所需框架的 FacebookSDK
文件夹的引用,因此您需要实际将框架本身复制到您的项目本身,以便所有内容都包含在您的存储库中。这是必要的,因为 RCTFBSDK
库希望在项目中的文件夹 $PROJECT_ROOT/ios/Frameworks
中准确找到它需要的框架(请参阅 BuddyBuild 文档),如果它们在其他任何地方,它就会崩溃。
为清楚起见,我为使我的构建工作所采取的步骤是:
- 在我的项目中创建文件夹
$PROJECT_ROOT/ios/Frameworks
(Frameworks
可能不存在)
- 将 Facebook 框架文件从
~/Documents/FacebookSDK
复制到这个新文件夹中
- 根据 fbsdk Github 页面上的安装说明参考 Xcode 中的框架。
希望这对未来的读者有所帮助。
我在 Bitrise 中通过以下路径使用 ZIP Unarchive 步骤:~/Documents/FacebookSDK
但我无法使其工作。
当我将框架搜索路径更改为 ${HOME}/Documents/FacebookSDK
时,我能够成功地继续我的构建。
我已经安装了 FBSDKCoreKit、FBSDKLoginKit 和 FBSDKShareKit 11=] 然后将框架拖到 XCode 中的框架文件夹中。如果需要,我选中了复制文件的选项,以便它们出现在项目中。
然后我添加了正确的框架搜索路径~/Documents/FacebookSDK
本地构建工作正常,但是,在 Bitrise (CI) 上构建失败并出现错误:
/Users/vagrant/git/node_modules/react-native-fbsdk/ios/RCTFBSDK/share/RCTFBSDKShareDialog.h:21:9: 'FBSDKShareKit/FBSDKShareKit.h' file not found
框架搜索路径还包含 $(PROJECT_DIR)
,应该可以找到位于 appname/Frameworks/
中的框架,但我似乎无法修复这个未找到的错误。
参见:https://discuss.bitrise.io/t/build-failing-with-file-not-found-fbsdk-in-ios-build/399/11
您的 Mac 上似乎有 FacebookSDK
~/Documents/FacebookSDK
,但您没有在 bitrise.io 上下载它,所以它根本不可用为您打造。
我 运行 使用 BuddyBuild(另一个 CI 系统)解决了这个问题,并通过此处 http://docs.buddybuild.com/docs/common-react-native-errors#section-error-fbsdksharekit-fbsdksharekit-h-file-not-found 文档页面上链接的说明解决了这个问题,特别是本节:
error: 'FBSDKShareKit/FBSDKShareKit.h' file not found
This is generally a result of an incorrectly configured repository with regards to the location of FBSDK dependencies. If you take a look at: https://github.com/facebook/react-native-fbsdk/blob/master/ios/RCTFBSDK.xcodeproj/project.pbxproj
You will notice that RCTFBSDK will look for dependencies in one of two locations:
- ~/Documents/FacebookSDK
- $(PROJECT_DIR)/../../../ios/Frameworks
The second option is the correct option for continuous integration systems like Buddybuild. In other words, you MUST place your FBSDK dependencies under the "ios/Frameworks" folder in order for it to work on a continuous integration system.
问题是,正如 Viktor 指出的那样,CI 系统没有对包含所需框架的 FacebookSDK
文件夹的引用,因此您需要实际将框架本身复制到您的项目本身,以便所有内容都包含在您的存储库中。这是必要的,因为 RCTFBSDK
库希望在项目中的文件夹 $PROJECT_ROOT/ios/Frameworks
中准确找到它需要的框架(请参阅 BuddyBuild 文档),如果它们在其他任何地方,它就会崩溃。
为清楚起见,我为使我的构建工作所采取的步骤是:
- 在我的项目中创建文件夹
$PROJECT_ROOT/ios/Frameworks
(Frameworks
可能不存在) - 将 Facebook 框架文件从
~/Documents/FacebookSDK
复制到这个新文件夹中 - 根据 fbsdk Github 页面上的安装说明参考 Xcode 中的框架。
希望这对未来的读者有所帮助。
我在 Bitrise 中通过以下路径使用 ZIP Unarchive 步骤:~/Documents/FacebookSDK
但我无法使其工作。
当我将框架搜索路径更改为 ${HOME}/Documents/FacebookSDK
时,我能够成功地继续我的构建。