Skip to content
This repository has been archived by the owner on Jul 8, 2024. It is now read-only.

fatal error: 'BridgeAPI/FBSDKBridgeAPIProtocol.h' file not found #20

Open
g123k opened this issue Apr 15, 2018 · 16 comments
Open

fatal error: 'BridgeAPI/FBSDKBridgeAPIProtocol.h' file not found #20

g123k opened this issue Apr 15, 2018 · 16 comments
Labels

Comments

@g123k
Copy link

g123k commented Apr 15, 2018

Hello,

I have a strange problem with the library and the iOS build.
Every time I try to build the Flutter app, I have this error:

In file included from /Users/g123k/IdeaProjects/untitled/ios/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKAccessToken.m:21:
    In file included from /Users/g123k/IdeaProjects/untitled/ios/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/Network/FBSDKGraphRequestPiggybackManager.h:19:
    /Users/g123k/IdeaProjects/untitled/ios/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKCoreKit+Internal.h:24:9: fatal error: 'BridgeAPI/FBSDKBridgeAPIProtocol.h' file not found
    #import "BridgeAPI/FBSDKBridgeAPIProtocol.h"
            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    4 warnings and 1 error generated.

How to reproduce the bug:

  1. Create a new Flutter app with Objective C for the iOS build
  2. Add the following dependency in the pubspec.yaml : flutter_facebook_login: "^1.1.1"
  3. Run the app

I have tried to change the Podfile, but the error is still the same:

# Uncomment this line to define a global platform for your project
# platform :ios, '9.0'

# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'

def parse_KV_file(file, separator='=')
  file_abs_path = File.expand_path(file)
  if !File.exists? file_abs_path
    return [];
  end
  pods_ary = []
  skip_line_start_symbols = ["#", "/"]
  File.foreach(file_abs_path) { |line|
      next if skip_line_start_symbols.any? { |symbol| line =~ /^\s*#{symbol}/ }
      plugin = line.split(pattern=separator)
      if plugin.length == 2
        podname = plugin[0].strip()
        path = plugin[1].strip()
        podpath = File.expand_path("#{path}", file_abs_path)
        pods_ary.push({:name => podname, :path => podpath});
      else
        puts "Invalid plugin specification: #{line}"
      end
  }
  return pods_ary
end

target 'Runner' do
  use_frameworks!

  # Prepare symlinks folder. We use symlinks to avoid having Podfile.lock
  # referring to absolute paths on developers' machines.
  system('rm -rf Pods/.symlinks')
  system('mkdir -p Pods/.symlinks/plugins')

  # Flutter Pods
  generated_xcode_build_settings = parse_KV_file('./Flutter/Generated.xcconfig')
  if generated_xcode_build_settings.empty?
    puts "Generated.xcconfig must exist. If you're running pod install manually, make sure flutter packages get is executed first."
  end
  generated_xcode_build_settings.map { |p|
    if p[:name] == 'FLUTTER_FRAMEWORK_DIR'
      symlink = File.join('Pods', '.symlinks', 'flutter')
      File.symlink(File.dirname(p[:path]), symlink)
      pod 'Flutter', :path => File.join(symlink, File.basename(p[:path]))
    end
  }

  # Plugin Pods
  plugin_pods = parse_KV_file('../.flutter-plugins')
  plugin_pods.map { |p|
    symlink = File.join('Pods', '.symlinks', 'plugins', p[:name])
    File.symlink(p[:path], symlink)
    pod p[:name], :path => File.join(symlink, 'ios')
  }
end

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['ENABLE_BITCODE'] = 'NO'
      config.build_settings['SWIFT_VERSION'] = '3.2'
    end
    # workaround for https://github.com/CocoaPods/CocoaPods/issues/7463
    target.headers_build_phase.files.each do |file|
      file.settings = { 'ATTRIBUTES' => ['Public'] }
    end
  end
end
@roughike
Copy link
Owner

Thanks for reporting.

Could you:

  1. paste the output from flutter doctor here
  2. see what's the output from pod install command run from the ios folder?

I couldn't debug this on a fresh project on the latest Flutter beta since the pod install command failed due to some CocoaPods error.

@g123k
Copy link
Author

g123k commented Apr 15, 2018

Thanks for your answer.

The flutter doctor output:

Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel beta, v0.2.8, on Mac OS X 10.13.4 17E199, locale en-FR)
[✓] Android toolchain - develop for Android devices (Android SDK 27.0.3)
[✓] iOS toolchain - develop for iOS devices (Xcode 9.3)
[✓] Android Studio
[✓] Android Studio (version 3.1)
[✓] IntelliJ IDEA Community Edition (version 2018.1)
[✓] VS Code (version 1.21.1)
[✓] Connected devices (1 available)

• No issues found!

And the pod install result:

Downloading dependencies
Installing Bolts (1.9.0)
Installing FBSDKCoreKit (4.32.0)
Installing FBSDKLoginKit (4.32.0)
Installing Flutter (1.0.0)
Installing flutter_facebook_login (0.0.1)
Generating Pods project
Integrating client project
Pod installation complete! There are 2 dependencies from the Podfile and 5 total pods installed.

@roughike
Copy link
Owner

Hmm.

I'll look into resolving this when I have the time, can't promise anything currently. Hopefully, you can develop on Android for a while.

@roughike
Copy link
Owner

One thing: are you sure that you're adding this in your dependencies block, and NOT dev_dependencies?

@g123k
Copy link
Author

g123k commented Apr 15, 2018

Yes the dependency is in the dependencies block

@g123k
Copy link
Author

g123k commented Apr 18, 2018

After digging a little bit, if I use the Podfile from the example/ios folder, the app will compile again.
However it means that with the latest beta of Flutter your package should not build, because the Podfile has changed a little bit.

@roughike
Copy link
Owner

That's really useful information, thanks a lot!

I'll try to:

  1. Fix the problem, hopefully by just updating the Podfile or something similar
  2. Incorporate a "will it build with latest Flutter version" test for Android & iOS with Travis

Still no ETA when I'm able to fix it, hopefully soon.

@Samaritan1011001
Copy link

Having the same issue. I tried looking into the Podfile but I couldn't do anything because of my lack of knowledge about it. So, it would be really helpful if you could look into this sooner, @roughike? Thank you for the amazing plugin.

@roughike
Copy link
Owner

Not able to reproduce on a fresh project created with Flutter v0.2.8 and flutter_facebook_login version v1.1.1. @g123k @Samaritan1011001 are you able to repro with a fresh new project created with v0.2.8 of Flutter?

@Ajit121
Copy link

Ajit121 commented Jun 4, 2018

Having the same issue :'(

@roughike
Copy link
Owner

roughike commented Jun 5, 2018

@Ajit121
When did you create your project? Does it use Swift or ObjC for iOS code?

@roughike roughike added the ios label Jun 5, 2018
@Ajit121
Copy link

Ajit121 commented Jun 6, 2018

Created one day ago and used swift. Its working fine for android (Kotlin) but unable to build in ios because of this error.

@Ajit121
Copy link

Ajit121 commented Jun 6, 2018

Oh! this issue is happening for flutter project for using swift only.. Working fine for the project using Objective C. Please fix this issue ASAP.

@roughike
Copy link
Owner

roughike commented Jun 6, 2018

This has been an issue with Swift projects before, and IIRC, it's not particularly related to this plugin, but more of a Flutter issue.

I can help you debug once I get home. Meanwhile, could you run "flutter --version" and paste the output here?

@freewheelnat
Copy link

I had the same issue, so I thought I would detail the steps that worked for me in case someone else lands on this issue too.

Background: My project is a Swift project created quite a few months ago, with a change added to Podfile to deal with Swift plugin issue (so firebase plugin could work). Flutter on dev channel, v0.5.4

Steps that worked for me:

  1. Upgrade cocoa to 1.5 (command line)
  2. Run pod setup (command line)
  3. Delete Pod folder and Podfile.lock file (project was open in XCode when I did this but I did this using IntellijIDEA)
  4. flutter clean (command line)
  5. Edit my Podfile file so it matches the latest from flutter for Swift project https://github.com/flutter/flutter/blob/master/packages/flutter_tools/templates/cocoapods/Podfile-swift (project was open in XCode when I did this but I did this using IntellijIDEA)
  6. flutter run (command line)
  7. Error message about Bolts/BFURL.h not found in Bolts/BFURL_Internal.h
  8. Quit XCode
  9. flutter run (command line)

It worked! I have no idea why step 9 worked when step 6 didn't, except maybe for step 8 (building for iOS is a bit of a mystery to me, I'm an Android developer)

@candamotek
Copy link

I can confirm the above works, at least with y setup and xCode 9.3. + Pod 1.5.3. Basically, just do 'pod clean' followed by changing your Podfile to match https://github.com/flutter/flutter/blob/master/packages/flutter_tools/templates/cocoapods/Podfile-swift and then re-build using xCode. No need to make any manual changes to Podfile

@roughike roughike modified the milestone: v1.2.0 Jan 14, 2019
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

No branches or pull requests

6 participants