在 CI 上找不到 React Native FBSDK 文件
Posted
技术标签:
【中文标题】在 CI 上找不到 React Native FBSDK 文件【英文标题】:React Native FBSDK file not found on CI 【发布时间】:2017-01-19 18:33:33 【问题描述】:我已经安装了 FBSDKCoreKit、FBSDKLoginKit 和 FBSDKShareKit,方法是将 SDK 下载到 ~/Documents/FacebookSDK
,然后将框架拖到框架文件夹中在 XCode 中。如果需要,我选中了复制文件的选项,以便它们出现在项目中。
然后我添加了正确的框架搜索路径~/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/
的框架,但我似乎无法修复这个未找到的错误。
【问题讨论】:
【参考方案1】:我在使用 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/Frameworks
(Frameworks
可能不存在)
将 Facebook 框架文件从 ~/Documents/FacebookSDK
复制到这个新文件夹中
按照 fbsdk Github 页面上的安装说明参考 Xcode 中的框架。
希望这对以后的读者有所帮助。
【讨论】:
【参考方案2】:见:https://discuss.bitrise.io/t/build-failing-with-file-not-found-fbsdk-in-ios-build/399/11
您的 Mac 上的 ~/Documents/FacebookSDK
似乎有 FacebookSDK
,但您没有在 bitrise.io 上下载它,所以它根本不适用于您的构建。
【讨论】:
我们如何下载并解压到 bitrise? @WitaloBenicio ***.com/a/44321452/974381 解释它的方式(我建议这个解决方案,将它包含在你的存储库中),或者通过像 bitrise.io/integrations/steps/resource-archive 这样的步骤,它可以下载 ZIP 文件并解压缩它到您提供的路径。【参考方案3】:我在 Bitrise 中使用 ZIP Unarchive 步骤,路径如下:~/Documents/FacebookSDK
,但我无法使其工作。
当我将框架搜索路径更改为 $HOME/Documents/FacebookSDK
时,我能够成功地继续构建。
【讨论】:
$HOME/Documens/FacebookSDK
,我猜你的意思是Documents
?那个错字可能会让人有点绊倒。
谢谢@Bataleonand以上是关于在 CI 上找不到 React Native FBSDK 文件的主要内容,如果未能解决你的问题,请参考以下文章
java.lang.ClassNotFoundException:在路径上找不到类“.MainActivity”:DexPathList react-native [重复]
在“UIDatePicker”类型的对象上找不到属性“preferredDatePickerStyle”