Flutter Facebook Login CocoaPods 依赖错误

8

我正在尝试在Flutter应用程序中添加Facebook登录。我使用的是flutter_facebook_login插件。但是当我尝试构建iOS版本时出现错误:

    Resolving dependencies of `Podfile`
    [!] CocoaPods could not find compatible versions for pod "FBSDKLoginKit":
      In Podfile:
        flutter_facebook_login (from `.symlinks/plugins/flutter_facebook_login/ios`) was resolved to 0.0.1, which depends on
          FBSDKLoginKit (= 4.39.1)

    None of your spec sources contain a spec satisfying the dependency: `FBSDKLoginKit (= 4.39.1)`.

    You have either:
     * out-of-date source repos which you can update with `pod repo update` or with `pod install --repo-update`.
     * mistyped the name or version.
     * not added the source repo that hosts the Podspec to your Podfile.




Error: CocoaPods's specs repository is too out-of-date to satisfy dependencies.
To update the CocoaPods specs, run:
  pod repo update

Error running pod install
Error launching application on iPhone X.

我没有手动安装pod,因为flutter_facebook_login的自述文件中提到:

(注意:您可以跳过“第二步:设置开发环境”。)

有人能帮忙吗? 谢谢!

4个回答

25
根据这个diegoveloper的回答,flutter_facebook_login的github问题。

https://github.com/roughike/flutter_facebook_login/issues/201

  • flutter clean清除缓存
  • 删除ios/Podfile.lock文件
  • 前往Podfile文件并将platform :ios, '9.0'更改为platform :ios, '11.0'(在我的情况下,有些库不支持11.0,我使用了platform :ios, '9.0',然后将运行目标设置为9.0即可正常工作)
  • 前往终端,进入ios目录并运行pod install
  • 再次运行项目。

2
确保“platform :ios,'11.0'”这一行没有被注释掉。 - ruwan800

4

只需更新您的Podfile即可。

platform :ios, '11.0'

请在终端中再次尝试进行 pod install 操作。 pod install


2
  1. 打开终端并使用cd the_root_package_path命令进入根目录
  2. 输入flutter clean命令
  3. 打开podfile文件,取消注释:# platform :ios, '11.0'
  4. 运行pod install命令

我之前也遇到了同样的问题,尝试了各种方法后,这个方法对我很有用。


2

我之前也遇到过这个问题,我通过手动方法解决了它。 确保在你的pubspec.yaml中声明并获取了flutter_facebook_login: ˆ2.0.0

在你的项目根目录中导航到ios > .symlinks > plugins > flutter_facebook_login > ios > flutter_facebook_login.podspec

你需要更改flutter_facebook_login.podspec中的一些字段。

s.version          = '2.0.0'

并且

s.dependency 'FBSDKLoginKit', '~> 4.29'

在您的OSX框中,在项目的ios目录中运行pod deintegratepod update,然后返回到根项目目录运行flutter clean,尝试重新构建您的项目。

这是我的flutter_facebook_login.podspec的示例,它可以在我的一个项目中正常工作。希望能对您有所帮助。

# To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html
#
Pod::Spec.new do |s|
  s.name             = 'flutter_facebook_login'
  s.version          = '2.0.0'
  s.summary          = 'A Flutter plugin for allowing users to authenticate with native Android & iOS Facebook login SDKs.'
  s.description      = <<-DESC
A Flutter plugin for allowing users to authenticate with native Android &amp; iOS Facebook login SDKs.
                       DESC
  s.homepage         = 'http://example.com'
  s.license          = { :file => '../LICENSE' }
  s.author           = { 'Your Company' => 'email@example.com' }
  s.source           = { :path => '.' }
  s.source_files = 'Classes/**/*'
  s.public_header_files = 'Classes/**/*.h'
  s.dependency 'Flutter'
  s.dependency 'FBSDKLoginKit', '~> 4.29'

  # https://github.com/flutter/flutter/issues/14161
  #s.static_framework = true

  s.ios.deployment_target = '8.0'
end

谢谢回复!我还没有尝试过这个。修改它是安全的吗?如果 flutter_facebook_login 得到新的更新,这个也会更新吗?还是被锁定了? - FlutterFirebase
我在一段时间前对一个项目进行了这个更改,直到现在都很好。关于更新,很难说,因为在你进行这些更改之前,插件版本已经被锁定了,对吧...?你可以进行一些测试,但我可以保证,通过这些更改,你将成功构建。 - Marcos Boaventura
谢谢回复!我问这个问题是因为我想确保当依赖项获得新版本时(例如作者发布版本2.1.0时),它会被更新。 - FlutterFirebase

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接