react-native: 'folly/Portability.h' file not found

Screenshot 2019-03-29 at 11 54 51 AM

🐛 Bug Report

To Reproduce

Expected Behavior

Code Example

Environment

About this issue

  • Original URL
  • State: closed
  • Created 5 years ago
  • Reactions: 18
  • Comments: 35

Most upvoted comments

This is my current podfile

platform :ios, '9.0'

target 'MyCoolProj' do
  # Uncomment the next line if you're using Swift or would like to use dynamic frameworks
  # use_frameworks!

  rn_path = '../node_modules/react-native'

  pod 'yoga', path: "#{rn_path}/ReactCommon/yoga"
  pod 'React', path: rn_path, subspecs: [
    'Core',
    'CxxBridge',
    'DevSupport',
    'RCTActionSheet',
    'RCTAnimation',
    'RCTGeolocation',
    'RCTImage',
    'RCTLinkingIOS',
    'RCTNetwork',
    'RCTSettings',
    'RCTText',
    'RCTVibration',
    'RCTWebSocket',
  ]
  pod 'Folly', :podspec => "#{rn_path}/third-party-podspecs/Folly.podspec"

  post_install do |installer|
    installer.pods_project.targets.each do |target|
      if target.name == "React"
        target.remove_from_project
      end
    end
  end

end

Adding the post_install is a confirmed workaround:

post_install do |installer|
    installer.pods_project.targets.each do |target|
      if target.name == "React"
        target.remove_from_project
      end
    end
  end

Leaving the issue open until we resolve the root cause (or update the doc to recommend this workaround 😄 ).

Thanks @gabrieletondi !

Hello there 👋 this issue seems to be related to your experience upgrading between versions. We know this has been a long lasting pain for the community so starting v0.59 we have introduced a new flow via the new CLI.

To upgrade to that version, you may still need to do some manual steps – we suggest you use rn-diff-repo to accomplish this.

Given that this is not strictly a bug with the library itself I’ll close this, but if someone can create a repro that has this issue with a freshly created react-native init project we can reopen it and discuss it further 🤗

same problem still goin for me. ‘folly/Portability.h’ file not found

Encountered when I upgraded to 0.59.3

 post_install do |installer|
    installer.pods_project.targets.each do |target|
      if target.name == "React"
        target.remove_from_project
      end
    end
  end

This worked! Thanks @gabrieletondi

I had this issue and it seemed to resolve when I added ‘CxxBridge’ to the React subspecs. I then removed my Podfile.lock and Pods folder and pod installed. I hope maybe this helps?

Do confirm a fix without the post install script by adding CxxBridge to subspecs. Using RN0.59.8.

target 'app' do
  # use_frameworks!
  pod 'React', :path => '../node_modules/react-native', :subspecs => [
    'Core',
    'CxxBridge'
  ]

  pod 'yoga', :path => '../node_modules/react-native/ReactCommon/yoga'

  # Third party deps podspec link
  pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec'

end

Sorry if this is a bit messy but this is my react native pod setup and it seems to be building successfully.

# Pods for React
  pod 'React', :path => '../node_modules/react-native', subspecs: [
    'Core',
    'CxxBridge',
    'DevSupport',
    'RCTText',
    'RCTNetwork',
    'RCTWebSocket',
    'RCTAnimation',
    'RCTActionSheet',
    'RCTBlob',
    'RCTCameraRoll',
    'RCTGeolocation',
    'RCTImage',
    'RCTPushNotification',
    'RCTSettings',
    'RCTTest',
    'RCTVibration',
    'RCTLinkingIOS'
  ]

  # Explicitly include Yoga if you are using RN >= 0.42.0
  pod 'yoga', :path => '../node_modules/react-native/ReactCommon/yoga'

  # Third party deps podspec link
  pod 'DoubleConversion', :podspec => '../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec'
  pod 'glog', :podspec => '../node_modules/react-native/third-party-podspecs/glog.podspec'
  pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec'

That’s interesting. I’ve got this working without the post_install. I had to add it because archiving was not working… 😮

I resolved (on both 0.59.2 and 0.59.3) my removing from the Podfile:

pod ‘DoubleConversion’, :podspec => “#{rn_path}/third-party-podspecs/DoubleConversion.podspec” pod ‘glog’, :podspec => “#{rn_path}/third-party-podspecs/glog.podspec”

Now I have only:

rn_path = ‘…/node_modules/react-native’

pod ‘yoga’, path: “#{rn_path}/ReactCommon/yoga” pod ‘React’, path: rn_path, subspecs: [ ‘Core’, ‘CxxBridge’, ‘DevSupport’, ‘RCTActionSheet’, ‘RCTAnimation’, ‘RCTGeolocation’, ‘RCTImage’, ‘RCTLinkingIOS’, ‘RCTNetwork’, ‘RCTSettings’, ‘RCTText’, ‘RCTVibration’, ‘RCTWebSocket’, ] pod ‘Folly’, :podspec => “#{rn_path}/third-party-podspecs/Folly.podspec”

and my other custom dependencies.

So far using the workaround. This fixed the podfile issue on react native 0.59.8 allowing me to consume @mapbox/react-native-mapbox-gl

I am curious about the difference between

post_install do |installer|
    installer.pods_project.targets.each do |target|
        if target.name == "React"
            target.remove_from_project
        end
    end
end  

and

post_install do |installer|
  installer.pods_project.targets.each do |target|
    if target.name == "React"
      target.remove_from_project
    end

    if target.name == "yoga"
      target.remove_from_project
    end
  end
end

Should yoga be included for the workaround?

Also after the workaround I am getting an error regarding duplicate UUIDs in the xcodeproject:

[!] [Xcodeproj] Generated duplicate UUIDs:

XCBuildConfiguration -- 
XCBuildConfiguration -- 
PBXBuildFile -- 
PBXBuildFile -- 
PBXBuildFile -- 
PBXBuildFile -- 

Is this anything to be worried about? The projects runs perfectly on android and ios, but just want to take precautions going forward.

Worked for me like this:

In Xcode -> File -> Workspaces settings -> Build System changed to “Legacy Build System” (both, shared and per-user)

and following what they have already put:

  rn_path = '../node_modules/react-native'

  pod 'yoga', path: "#{rn_path}/ReactCommon/yoga"
  pod 'React', path: rn_path, subspecs: [
    'Core',
    'CxxBridge',
    'DevSupport',
    'RCTActionSheet',
    'RCTAnimation',
    'RCTGeolocation',
    'RCTImage',
    'RCTLinkingIOS',
    'RCTNetwork',
    'RCTSettings',
    'RCTText',
    'RCTVibration',
    'RCTWebSocket',
  ]
  pod 'Folly', podspec: "#{rn_path}/third-party-podspecs/Folly.podspec"  
  
  # Project libs
  # pod 'RNCAsyncStorage', path: '../node_modules/@react-native-community/async-storage'

  post_install do |installer|
    installer.pods_project.targets.each do |target|
      if target.name == "React"
        target.remove_from_project
      end
    end
  end  

Hey guys, I got the same issue, but I’m not sure what’s wrong, I’m using RN + RNFirebase.

I’ve already tried the @gabrieletondi solution and is not working using RN 0.59.3 or 0.59.6 the same result.

this is my config:

    System:
      OS: macOS 10.14.4
      CPU: (4) x64 Intel(R) Core(TM) i7-7567U CPU @ 3.50GHz
      Memory: 165.95 MB / 16.00 GB
      Shell: 3.2.57 - /bin/bash
    Binaries:
      Node: 8.15.0 - ~/.nvm/versions/node/v8.15.0/bin/node
      Yarn: 1.13.0 - ~/.nvm/versions/node/v8.15.0/bin/yarn
      npm: 6.4.1 - ~/.nvm/versions/node/v8.15.0/bin/npm
      Watchman: 4.9.0 - /usr/local/bin/watchman
    SDKs:
      iOS SDK:
        Platforms: iOS 12.2, macOS 10.14, tvOS 12.2, watchOS 5.2
      Android SDK:
        API Levels: 22, 24, 25, 26, 27, 28
        Build Tools: 25.0.0, 27.0.3, 28.0.2, 28.0.3
        System Images: android-22 | Google APIs Intel x86 Atom, android-27 | Google APIs Intel x86 Atom, android-28 | Google APIs Intel x86 Atom
    IDEs:
      Android Studio: 3.2 AI-181.5540.7.32.5056338
      Xcode: 10.2.1/10E1001 - /usr/bin/xcodebuild
    npmPackages:
      react: ^16.8.6 => 16.8.6 
      react-native: ^0.59.3 => 0.59.3 
    npmGlobalPackages:
      react-native-cli: 2.0.1

When run react-native run-ios this is the output.

error Failed to build iOS project. We ran "xcodebuild" command but it exited with error code 65. To debug build logs further, consider building your app with Xcode.app, by opening goingTubeApp.xcworkspace

Also using the @amphithere solution is not working.

PODFILE

platform :ios, '9.0'
target 'gtApp' do

pod 'React', :path => '../node_modules/react-native', subspecs: [
  'Core',
  'CxxBridge',
  'DevSupport',
  'RCTText',
  'RCTNetwork',
  'RCTWebSocket',
  'RCTAnimation',
  'RCTActionSheet',
  'RCTBlob',
  'RCTCameraRoll',
  'RCTGeolocation',
  'RCTImage',
  'RCTPushNotification',
  'RCTSettings',
  'RCTTest',
  'RCTVibration',
  'RCTLinkingIOS'
]

pod 'yoga', :path => '../node_modules/react-native/ReactCommon/yoga'

pod 'DoubleConversion', :podspec => '../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec'
pod 'glog', :podspec => '../node_modules/react-native/third-party-podspecs/glog.podspec'
pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec'

  pod 'Firebase/Core', '~> 5.20.1'
  pod 'Firebase/Firestore', '~> 5.20.1'
  pod 'Firebase/Messaging', '~> 5.20.1'
  pod 'Firebase/Analytics', '~> 5.20.1'
  pod 'GoogleAppMeasurement', '~> 5.8.0'
  pod 'GoogleSignIn'

  pod 'Fabric', '~> 1.9.0'
  pod 'Crashlytics', '~> 3.12.0'

  target 'goingTubeApp-tvOSTests' do
    inherit! :search_paths
    pod 'RNVectorIcons', :path => '../node_modules/react-native-vector-icons'

  end

  target 'goingTubeAppTests' do
    inherit! :search_paths
  end

  post_install do |installer|
    installer.pods_project.targets.each do |target|
      if target.name == "React"
        target.remove_from_project
      end
    end
  end

end

I’ve already updated my Xcode, to 10.2.1 and now it’s not working, my last RN was 0.57.7, so I need to fix this problem.

The problem starts when I’ve installed Crashlytics on IOS because on Android is on production.

  pod 'Fabric', '~> 1.9.0'
  pod 'Crashlytics', '~> 3.12.0' 

Please let me know if anyone knows what can I do?