在CI上找不到React Native FBSDK文件

时间:2017-01-19 18:33:34

标签: react-native react-native-ios react-native-fbsdk fbsdksharekit

我已经安装了 FBSDKCoreKit FBSDKLoginKit FBSDKShareKit ,将SDK下载到~/Documents/FacebookSDK,然后将框架拖到 XCode 中的frameworks文件夹。我检查了复制文件的选项,如果需要,它们会出现在项目中。

然后我添加了正确的框架搜索路径~/Documents/FacebookSDK

本地构建工作正常,但是,在Bitrise(CI)上构建失败并显示错误:

  

/Users/vagrant/git/node_modules/react-native-fbsdk/ios/RCTFBSDK/share/RCTFBSDKShareDialog.h:21:9:   找不到'FBSDKShareKit / FBSDKShareKit.h'文件

框架搜索路径还包含$(PROJECT_DIR),它应该找到appname/Frameworks/中的框架,但我似乎无法修复此未找到的错误。

3 个答案:

答案 0 :(得分:2)

我使用BuddyBuild(另一个CI系统)遇到了这个问题,并通过其文档页面http://docs.buddybuild.com/docs/common-react-native-errors#section-error-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 / Frameworks
  •   
     

第二个选项是持续集成系统的正确选项   像Buddybuild。换句话说,你必须放置你的FBSDK   " ios / Frameworks"下的依赖关系文件夹,以使其工作   在持续集成系统上。

问题是,由于Viktor指出CI系统没有引用包含所需框架的FacebookSDK文件夹,因此您需要将框架本身实际复制到项目本身中,以便一切都包含在您的存储库中。这是必要的,因为RCTFBSDK库希望在项目中的文件夹$PROJECT_ROOT/ios/Frameworks中找到它所需的框架(请参阅BuddyBuild文档),如果它们在其他任何地方都会发现它会变得怪异出。

为清楚起见,我为使构建工作而采取的步骤是:

  • 在我的项目中创建文件夹$PROJECT_ROOT/ios/FrameworksFrameworks可能尚不存在)
  • 将Facebook框架文件从~/Documents/FacebookSDK复制到此新文件夹
  • 根据fbsdk Github页面上的安装说明引用Xcode中的Frameworks。

希望这对未来的读者有所帮助。

答案 1 :(得分:1)

请参阅:https://discuss.bitrise.io/t/build-failing-with-file-not-found-fbsdk-in-ios-build/399/11

您的Mac上的FacebookSDK似乎在~/Documents/FacebookSDK,但您不能在bitrise.io上下载,因此它根本无法用于您的建立。

答案 2 :(得分:1)

我在Bitrise中使用ZIP Unarchive步骤,其路径如下:~/Documents/FacebookSDK,但我无法使其正常工作。 当我将框架搜索路径更改为${HOME}/Documents/FacebookSDK时,我就能够成功继续进行构建。