facebook / flipper

A desktop debugging platform for mobile developers.
https://fbflipper.com/
MIT License
13.33k stars 952 forks source link

error while installing Flipper-Boost-iOSX with use_frameworks! #3938

Closed matinzd closed 6 days ago

matinzd commented 2 years ago

🐛 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

Environment

baveku commented 2 years ago

Can you show your Podfile?

matinzd commented 2 years ago
source 'https://cdn.cocoapods.org/'
require_relative '../node_modules/react-native/scripts/react_native_pods'
require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'

$RNFirebaseAnalyticsWithoutAdIdSupport = true # Disable Ad Id usage
$RNFirebaseAsStaticFramework = true

production = ENV["PRODUCTION"] == "1" || ENV['CI'] == "1"

project 'DietDoctorRN',
    'Debug-prod' => :debug,
    'Release-prod' => :release,
    'Debug-dev' => :debug,
    'Release-dev' => :release

platform :ios, '12.4'
install! 'cocoapods', :deterministic_uuids => false
use_frameworks!

target 'DietDoctorRN' do
  config = use_native_modules!

  # Flags change depending on the env values.
  flags = get_default_flags()

  use_react_native!(
      :path => config[:reactNativePath],
      :production => production,
      # to enable hermes on iOS, change `false` to `true` and then install pods
      :hermes_enabled => flags[:hermes_enabled],
      :fabric_enabled => flags[:fabric_enabled],
      :flipper_configuration => FlipperConfiguration.new(!production, ['Release-prod','Release-dev','Debug-prod', 'Debug-dev'], {}),
      # An absolute path to your application root.
      :app_path => "#{Pod::Config.instance.installation_root}/.."
  )
  pod 'KeychainSwift'

  # permission handlers for ios
  # https://github.com/zoontek/react-native-permissions
  permissions_path = '../node_modules/react-native-permissions/ios'
  pod 'Permission-Camera', :path => "#{permissions_path}/Camera"
  pod 'Permission-PhotoLibrary', :path => "#{permissions_path}/PhotoLibrary"

  target 'DietDoctorRNTests' do
    inherit! :complete
    # Pods for testing
  end

  post_install do |installer|
    react_native_post_install(installer)
    __apply_Xcode_12_5_M1_post_install_workaround(installer)
  end
end

I tried your workaround in your document but that breaks the build.

@baveku

baveku commented 2 years ago

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

liamjones commented 2 years ago

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

liamjones commented 2 years ago

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

matinzd commented 2 years ago

@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

MCervenka commented 2 years ago

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.

nighttiger1990 commented 2 years ago

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

Killdaneighbor187 commented 2 years ago

Looks like something suspicious to me

TheRogue76 commented 2 years ago

Is there any progress on this issue? We need it for our app as we can't update our Firebase and RN until this is fixed

mengshun commented 2 years ago

I got the same problem, when i run pod install and use_frameworks!.

[!] The 'Pods-xxxx' target has transitive dependencies that include statically linked binaries: (Flipper-Boost-iOSX and Flipper-RSocket) I try remove use_flipper!() in podfile, error disappeared.

matinzd commented 2 years ago

I got the same problem, when i run pod install and use_frameworks!.

[!] The 'Pods-xxxx' target has transitive dependencies that include statically linked binaries: (Flipper-Boost-iOSX and Flipper-RSocket) I try remove use_flipper!() in podfile, error disappeared.

Yeah we know removing flipper can fix the issue but this needs to be fixed in Flipper.

guiathayde commented 2 years ago

@matinzd Did you fix this issue?

douglassoldan commented 2 years ago

use_flipper

Remove: use_frameworks! Add: use_modular_headers!

# use_frameworks! use_modular_headers!

Works here!

caferyukseloglu commented 2 years ago

_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 useframeworks support for New Architecture is welcome! Getting Error Flipper.h not found

EnettyTech commented 1 year ago

use_flipper

Remove: use_frameworks! Add: use_modular_headers!

# use_frameworks! use_modular_headers!

Works here!

Not work for me. issue https://github.com/facebook/react-native/issues/26217

amerllica commented 1 year ago

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.

matinzd commented 1 year ago

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.

bedirhangull commented 1 year ago

@matinzd Which version are you using?

oguzhandegirmen commented 1 year ago

++

Alobar12 commented 1 year ago

++++++

xpt300 commented 1 year ago

Same issue here

tanqu2013 commented 1 year ago

+1

leonardoballand commented 1 year ago

+1

trickeyd commented 1 year ago

+1

matinzd commented 1 year ago

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.

xueqiulou commented 1 year ago

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
wmonecke commented 1 year ago

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?

gimi-anders commented 11 months ago

How is this not fixed?

➕ ➕ ➕ ➕

ahmedbhd commented 9 months ago

Still got the same error with react 0.73 while following the 'AwesomeProject' tutorial, I kept retrying until it worked.

boukelalhanane commented 9 months ago

You have to replace this use_frameworks! :linkage => linkage.to_sym and use use_frameworks! :linkage => :static, use static linkage instead of linkage.to_sym in your podfile

raj360 commented 6 months ago

Screenshot 2024-04-02 at 12 41 35

amerllica commented 6 days ago

I think this issue should be closed, Flipper doesn't exist in the React Native package anymore.

cc: @matinzd