invertase / firestore-ios-sdk-frameworks

⚡ Precompiled Firestore iOS SDKs extracted from the Firebase iOS SDK repository release downloads for faster build times.
Apache License 2.0
427 stars 48 forks source link

ld error with BoringSSL-GRPC #65

Closed dougg0k closed 1 year ago

dougg0k commented 1 year ago
❌  ld: '/Users/[REDACTED]/Library/Developer/Xcode/DerivedData/App-crddnaqtledltaaoywtaqkllohdm/Build/Intermediates.noindex/ArchiveIntermediates/App/BuildProductsPath/Release-iphoneos/XCFrameworkIntermediates/FirebaseFirestore/Base/BoringSSL-GRPC.framework/BoringSSL-GRPC(BoringSSL-GRPC-dummy.o)' does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. file '/Users/[REDACTED]/Library/Developer/Xcode/DerivedData/App-crddnaqtledltaaoywtaqkllohdm/Build/Intermediates.noindex/ArchiveIntermediates/App/BuildProductsPath/Release-iphoneos/XCFrameworkIntermediates/FirebaseFirestore/Base/BoringSSL-GRPC.framework/BoringSSL-GRPC' for architecture arm64

Podfile

require_relative '../node_modules/react-native/scripts/react_native_pods'
require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'

$RNFirebaseAsStaticFramework = true

platform :ios, '11.0'

target 'App' do
    use_frameworks! :linkage => :static
  config = use_native_modules!

  use_react_native!(
        :path => config["reactNativePath"],
        :hermes_enabled => true
    )

    permissions_path = '../node_modules/react-native-permissions/ios'
    pod 'Permission-Notifications', :path => "#{permissions_path}/Notifications"

    pod 'FirebaseFirestore', :git => 'https://github.com/invertase/firestore-ios-sdk-frameworks.git', :tag => '10.1.0'
    pod 'RNFS', :path => '../node_modules/react-native-fs'

    pod 'Firebase', :modular_headers => true
    pod 'FirebaseCoreInternal', :modular_headers => true
    pod 'GoogleUtilities', :modular_headers => true
    pod 'FirebaseCore', :modular_headers => true
    pod 'FirebaseCoreExtension', :modular_headers => true
    pod 'FirebaseAppCheckInterop', :modular_headers => true
    pod 'FirebaseAuthInterop', :modular_headers => true
    pod 'FirebaseMessagingInterop', :modular_headers => true
    pod 'GTMSessionFetcher', :modular_headers => true

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

        installer.pods_project.targets.each do |target|
                if target.name == 'RCT-Folly'
                    target.build_configurations.each do |config|
                        config.build_settings['HEADER_SEARCH_PATHS'] = "$(inherited) ${PODS_ROOT}/fmt/include"
                    end
                end
                target.build_configurations.each do |config|
                    config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '11.0'
                end
        end

    end

end
paulb777 commented 1 year ago

Xcode 14 dropped bitcode support and Firebase dropped bitcode generation in 10.1.0.

mikehardy commented 1 year ago

Yep - bitcode is dead, long live bitcode: https://stackoverflow.com/questions/72543728/xcode-14-deprecates-bitcode-but-why/73219854#73219854

You can put this in your Podfile (and also make sure in the Xcode UI it is disabled) in order to purge it out programmatically:

should go in your post_install section:


    installer.pods_project.targets.each do |target|
      target.build_configurations.each do |config|
        config.build_settings["ENABLE_BITCODE"] = "NO"
      end
    end
dougg0k commented 1 year ago

One problem led to the next. I end up just downgrading to 8.15.0 and react-native-firebase to 14.11.1 which was the last version before the one that started requiring changes that caused more issues after fixing more issues.

Thanks for the help though.

mikehardy commented 1 year ago

You might like: https://github.com/mikehardy/rnfbdemo/blob/main/make-demo.sh

It will generate a fully working project from scratch on current versions, just to see what it's supposed to look like (and the script has descriptive comments explaining why it does the things it does...)