我的React Native项目在Xcode上遇到构建失败。
错误是'folly/Portability.h' file not found
最近几天,我一直在尝试自行解决此问题,但无法解决。
RN信息:
React Native Environment Info:
System:
OS: macOS 10.14
CPU: (4) x64 Intel(R) Core(TM) i5-4670 CPU @ 3.40GHz
Memory: 641.79 MB / 8.00 GB
Shell: 3.2.57 - /bin/bash
Binaries:
Node: 12.6.0 - /usr/local/bin/node
Yarn: 1.17.3 - /usr/local/bin/yarn
npm: 6.9.0 - /usr/local/bin/npm
Watchman: 4.9.0 - /usr/local/bin/watchman
SDKs:
iOS SDK:
Platforms: iOS 12.1, macOS 10.14, tvOS 12.1, watchOS 5.1
IDEs:
Xcode: 10.1/10B61 - /usr/bin/xcodebuild
npmPackages:
react: 16.8.3 => 16.8.3
react-native: 0.59.8 => 0.59.8
npmGlobalPackages:
react-native-cli: 2.0.1
podfile
# Uncomment the next line to define a global platform for your project
platform :ios, '9.0'
# Required by RNFirebase
pod 'Firebase/Core', '~> 5.20.1'
target 'WhosThat_app' do
# Uncomment the next line if you're using Swift or would like to use dynamic frameworks
# use_frameworks!
pod 'Firebase/Firestore'
pod 'Firebase/Storage'
pod 'Firebase/Auth'
pod 'GoogleMaps', '~> 2.7.0'
pod 'Fabric', '~> 1.10.1'
pod 'Crashlytics', '~> 3.13.1'
# Pods for WhosThat_app
pod 'RNImageCropPicker', :path => '../node_modules/react-native-image-crop-picker'
pod 'RNBackgroundGeolocation', :path => '../node_modules/react-native-background-geolocation'
pod 'RNBackgroundFetch', :path => '../node_modules/react-native-background-fetch'
pod 'RNDeviceInfo', :path => '../node_modules/react-native-device-info'
pod 'React', :path => '../node_modules/react-native'
pod 'yoga', :path => '../node_modules/react-native/ReactCommon/yoga'
pod 'Folly', podspec: '../node_modules/react-native/third-party-podspecs/Folly.podspec'
target 'WhosThat_app-tvOSTests' do
inherit! :search_paths
# Pods for testing
end
target 'WhosThat_appTests' do
inherit! :search_paths
# Pods for testing
end
end
试图删除pods文件夹,然后重新安装它们并删除node-modules文件夹
答案 0 :(得分:1)
在Podfile
内的target 'WhosThat_app' do
中添加以下内容:
target 'WhosThat_app' do
# ...everything else
post_install do |installer|
installer.pods_project.targets.each do |target|
if target.name == 'React'
target.remove_from_project
end
end
end
我不需要以下行,并且相信您可以删除它:
pod 'Folly', podspec: '../node_modules/react-native/third-party-podspecs/Folly.podspec'
注释:
59
。答案 1 :(得分:0)
要解决此问题,您应该做两件事:
1)添加 CxxBridge 子规范
2)直接为愚蠢
指向 DoubleConversion 和 glog 依赖关系规范Podfile示例:
# React Native
rn_path = '../node_modules/react-native'
pod 'React', path: rn_path, subspecs: [
'CxxBridge',
'RCTText',
'RCTNetwork',
'RCTWebSocket',
'RCTAnimation',
'RCTActionSheet',
'RCTGeolocation',
'RCTImage',
'RCTSettings',
'RCTVibration',
'RCTLinkingIOS'
]
pod 'yoga', :path => "#{rn_path}/ReactCommon/yoga"
pod 'DoubleConversion', :podspec => "#{rn_path}/third-party-podspecs/DoubleConversion.podspec"
pod 'glog', :podspec => "#{rn_path}/third-party-podspecs/glog.podspec"
pod 'Folly', :podspec => "#{rn_path}/third-party-podspecs/Folly.podspec"
答案 2 :(得分:0)
pod 'React', path: rn_path, subspecs: [
'ART',
'Core',
'CxxBridge',
'RCTText',
'RCTNetwork',
'RCTLinkingIOS',
'RCTImage',
'RCTAnimation',
'RCTWebSocket', # needed for debugging
'RCTActionSheet',
'RCTGeolocation',
'RCTSettings',
'RCTVibration',
'DevSupport',
'RCTPushNotification'
]
添加这些内容即可成功解决我的问题。