flipper: error while installing Flipper-Boost-iOSX with use_frameworks!

🐛 Bug Report

I know that Flipper is not compatible with use_frameworks yet but this topic will get too heated. If we enable use_frameworks! there are some issues installing statically linked binaries:

[!] The 'Pods-xxx' target has transitive dependencies that include statically linked binaries: (Flipper-Boost-iOSX)

Related issue: https://github.com/facebook/flipper/issues/2414

To Reproduce

  • Add use_frameworks! in podfile
  • Run pod install

Environment

  • Flipper desktop: 0.155.0
System:
    OS: macOS 12.4
    CPU: (12) x64 Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz
    Memory: 26.71 MB / 16.00 GB
    Shell: 5.8.1 - /bin/zsh
  Binaries:
    Node: 16.15.0 - ~/.nvm/versions/node/v16.15.0/bin/node
    Yarn: 1.22.18 - ~/w/dietdoctor/rnapp/node_modules/.bin/yarn
    npm: 8.5.5 - ~/.nvm/versions/node/v16.15.0/bin/npm
    Watchman: 2022.05.16.00 - /usr/local/bin/watchman
  Managers:
    CocoaPods: 1.11.2 - /Users/matin/.rvm/gems/ruby-3.0.2/bin/pod
  SDKs:
    iOS SDK:
      Platforms: DriverKit 21.4, iOS 15.5, macOS 12.3, tvOS 15.4, watchOS 8.5
    Android SDK:
      API Levels: 28, 29, 30, 31
      Build Tools: 28.0.3, 29.0.2, 30.0.2, 30.0.3, 31.0.0, 31.0.0
      System Images: android-27 | Google APIs Intel x86 Atom, android-29 | Google Play Intel x86 Atom, android-29 | Google Play Intel x86 Atom_64, android-30 | Google APIs Intel x86 Atom, android-30 | Google Play ARM 64 v8a, android-30 | Google Play Intel x86 Atom, android-30 | Google Play Intel x86 Atom_64, android-31 | Google APIs Intel x86 Atom_64, android-S | Google Play Intel x86 Atom_64
      Android NDK: 23.0.7344513-beta4
  IDEs:
    Android Studio: 4.2 AI-202.7660.26.42.7351085
    Xcode: 13.4.1/13F100 - /usr/bin/xcodebuild
  Languages:
    Java: 11.0.10 - /usr/local/opt/openjdk@11/bin/javac
  npmPackages:
    @react-native-community/cli: Not Found
    react: Not Found
    react-native: Not Found
    react-native-macos: Not Found
  npmGlobalPackages:
    *react-native*: Not Found

About this issue

  • Original URL
  • State: open
  • Created 2 years ago
  • Reactions: 9
  • Comments: 33 (4 by maintainers)

Most upvoted comments

ReactNative doesn’t support use_framework!, so You need remove it on Podfile.

ReactNative doesn’t support use_framework!, so You need remove it on Podfile

I have the same problem with react-native 0.69.3 and firebase 15.2.0. After updating the firebase the issue arise with Flipper.

https://rnfirebase.io Note use_frameworks is not compatible with Flipper. A fix was put in place in react-native release 0.69.1 that makes it work with and without Hermes. To use it with Hermes make sure you have set static linkage with use_frameworks! :linkage => :static. To use without Flipper, comment out the :flipper_configuration line in your Podfile. Community support to help fix use_frameworks support for New Architecture is welcome! Getting Error Flipper.h not found

use_flipper

Remove: use_frameworks! Add: use_modular_headers!

# use_frameworks! use_modular_headers!

Works here!

@matinzd Which version are you using?

I got same issue with “react-native”: “0.69.3”, and “@react-native-firebase/app”: “^15.2.0”

ReactNative doesn’t support use_framework!, so You need remove it on Podfile.

@baveku Are you sure?

https://github.com/facebook/react-native/pull/34011 starts with “use_frameworks! is broken again in react-native 0.69…” which implies it worked in the past and the release notes for 0.69.1 state it should work again: https://github.com/facebook/react-native/releases/tag/v0.69.1

How is this not fixed?

You are literally stuck if you use the latest Firebase and Hermes. No way to debug your API calls.

@xueqiulou you mean to put the static lib (in my case react-native-firebase) inside the $static_framework array?

++++++

@matinzd you’re not trying this with RN 0.69.0 by any chance are you?

I am trying with 0.69.3.

ReactNative doesn’t support use_framework!, so You need remove it on Podfile.

This should be fixed AFAIK but not for Flipper-Boost-iOSX. https://github.com/facebook/react-native/commit/79baca678a743560fa16fdd551f1d0d018d34304

I solved this problem with the following code in my project (react native version: 0.68.3) 1、 use_frameworks! :linkage => :static 2、rewrite the dependent library as the static_library type

use_frameworks! :linkage => :static

$static_framework = ['FlipperKit', 'Flipper', 'Flipper-Folly', 'ComponentKit', 'Flipper-DoubleConversion',
      'Flipper-Glog', 'Flipper-PeerTalk', 'Flipper-RSocket', 'Yoga', 'YogaKit',
      'CocoaLibEvent', 'OpenSSL-Universal', 'boost-for-react-native', 'Flipper-Fmt', 'React-hermes']

installer.pod_targets.each do |pod|
    if $static_framework.include?(pod.name)
       def pod.build_type
           Pod::BuildType.static_library
       end
    end
end

use_flipper

Remove: use_frameworks!

Add: use_modular_headers!

# use_frameworks!

use_modular_headers!

Works here!

That doesn’t help for statically linked libraries such as react native firebase or react native video.

remove: use_frameworks! add: use_modular_headers!

Dear @douglassoldan, Does the above change work on RN v0.68.2? after installing Firebase stuff the flipper network plugin doesn’t work anymore.

For now, you can either downgrade Firebase SDK to 14.x.x or try removing incompatible modules with use_frameworks. It depends on a project and dependencies. use_modular_headers may not work as well. So what we did was to keep Firebase SDK on 14.x.x for now and we’ll upgrade it in the future when everything is fixed.