我已经通过将SDK下载到~/Documents/FacebookSDK
,然后将框架拖到XCode中的框架文件夹中,安装了FBSDKCoreKit、FBSDKLoginKitB SDKShareKit。如果需要,我选中了复制文件的选项,以便它们出现在项目中。
然后我添加了正确的框架搜索路径~/Documents/FacebookSDK
本地构建工作正常,但是,在Bitrise(CI)上构建失败,并出现错误:
/Users/floatint/git/node_modules/areact native fbsdk/ios/RCTFBSDK/share/RCTFBSDKShareDialog.h:21:9:找不到"FBSDKShareKit/FBSDKShareKit.h"文件
框架搜索路径还包含$(PROJECT_DIR)
,它应该可以找到位于appname/Frameworks/
中的框架,但我似乎无法修复这个未找到的错误。
我使用BuddyBuild(另一个CI系统)遇到了这个问题,并通过此处文档页面上链接的说明解决了这个问题http://docs.buddybuild.com/docs/common-react-native-errors#section-错误-fbsdksharekit-fbsdksharekit-h--file-not-found,特别是本节:
错误:找不到'FBSDKShareKit/FBSDKShareKit.h'文件
这通常是由于错误配置的存储库关于FBSDK依赖项的位置。如果你看一下:https://github.com/facebook/react-native-fbsdk/blob/master/ios/RCTFBSDK.xcodeproj/project.pbxproj
您会注意到,RCTFBSDK将在以下其中一个中查找依赖项位置:
- ~/Documents/FacebookSDK
- $(PROJECT_DIR)/../..//ios/框架
第二个选项是连续集成系统的正确选项比如Buddybuild。换句话说,你必须放置你的FBSDK";ios/Frameworks";文件夹以便其工作关于持续集成系统。
问题是,正如Viktor所指出的,CI系统没有对包含所需框架的FacebookSDK
文件夹的引用,因此您需要将框架本身实际复制到项目本身中,以便所有内容都包含在存储库中。这是必要的,因为RCTFBSDK
库希望在项目中的文件夹$PROJECT_ROOT/ios/Frameworks
中准确地找到它所需要的框架(请参阅BuddyBuild文档),如果它们在其他地方,它就会崩溃。
为了清晰起见,我采取的步骤是:
- 在我的项目中创建文件夹
$PROJECT_ROOT/ios/Frameworks
(Frameworks
可能不存在) - 将
~/Documents/FacebookSDK
中的Facebook框架文件复制到此新文件夹中 - 根据fbsdk Github页面上的安装说明,参考Xcode中的Frameworks
希望这对未来的读者有所帮助。
请参阅:https://discuss.bitrise.io/t/build-failing-with-file-not-found-fbsdk-in-ios-build/399/11
看起来你的Mac上的~/Documents/FacebookSDK
上有FacebookSDK
,但你没有在bitrise.io上下载,所以它根本不适用于你的构建。
我在Bitrise中使用ZIP Unarchive步骤,路径如下:~/Documents/FacebookSDK
,但我无法使其工作。当我将框架搜索路径更改为${HOME}/Documents/FacebookSDK
时,我能够成功地继续构建。