无法导入使用 Cocoapods 安装的依赖项

Can't import dependency installed with Cocoapods

我已经安装了带有 Cocoapods 的 FBSDK,但由于某些原因无法将其导入到我的 AppDelegate.swift 文件中。 FBSDK 工具包出现在我的 Xcode 项目中,所以我觉得它应该可以工作。

无论如何我都不是 iOS 开发人员,我只是想为 Flutter SDK 编写一个简单的本机插件。有人有想法吗?

--这是pod文件的样子--

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

if ENV['FLUTTER_FRAMEWORK_DIR'] == nil
  abort('Please set FLUTTER_FRAMEWORK_DIR to the directory containing Flutter.framework')
end

target 'Runner' do
  use_frameworks!

  # Pods for Runner
pod 'FBSDKCoreKit'
pod 'FBSDKLoginKit'
pod 'FBSDKShareKit'

  # Flutter Pods
  pod 'Flutter', :path => ENV['FLUTTER_FRAMEWORK_DIR']

  if File.exists? '../.flutter-plugins'
    flutter_root = File.expand_path('..')
    File.foreach('../.flutter-plugins') { |line|
      plugin = line.split(pattern='=')
      if plugin.length == 2
        name = plugin[0].strip()
        path = plugin[1].strip()
        resolved_path = File.expand_path("#{path}/ios", flutter_root)
        pod name, :path => resolved_path
      else
        puts "Invalid plugin specification: #{line}"
      end
    }
  end
end

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['ENABLE_BITCODE'] = 'NO'
    end
  end
end

---编辑---

我收到以下错误 atm:FBSDKCoreKit.framework: No such file or directory。当我打开 xCode 中的 Frameworks 文件夹时,所有文件名都是红色的: 但 Finder 中的确切文件夹是空的。所以我想这就是显示错误的原因。问题是如何解决这个问题...

这是我的 embedded binarieslinked frameworks and libraries 在项目中的样子:

如果您使用 cocoapods,它应该已经为您生成了一个 *.xcworkspace 文件。打开此文件,以便您的项目可以看到 FBSDK 安装并引用它。

我会天真地假设你 use_frameworks! Podfile。如果这是真的,那么您有两种方法可以从这里开始:

  1. 在您的 Runner-Bridging-Header.h 中添加 #import <FBSDKCoreKit/FBSDKCoreKit.h>,从 AppDelegate.swift 中删除 import FBSDKCoreKit,然后继续编写代码。

  2. 再次将 use_frameworks! 添加到您的 Podfile 和 运行 pod install。这可能会带来一些其他问题,但如果可行,我会建议这样做。

首先使用 Command + Shift + K 清理您的项目,然后关闭项目并删除 pods 文件夹和 pod.lock 文件以及您的 .xcworkspace 文件。然后 运行 pod install 看看是否能解决问题。

首先清理你的项目目录。并在构建设置中的框架搜索路径中添加 $(inherited)。

当使用 CocoaPods 时,导入 FBSDKCoreKit.framework 等将在 [CP] Embed Pods Frameworks 构建阶段执行,您应该在 Embed Frameworks 中删除对这些框架的引用] 构建阶段。

CocoaPods 不会创建这些引用,我假设您已经尝试过其他导入 Facebook 框架的方法,并且这些 link 已在此过程中创建。您还可以在您的 App-Project 的框架文件夹中删除对 Facebook 框架的引用(在您的屏幕截图中用红色书写的,而不是 Pods-Project 中的!),但保留 Pods_Runner.framework那里。

据我所知,您的 Linked Frameworks and Libraries 部分看起来有效。

如果它仍然不起作用,我建议您创建一个新的 Xcode 项目,其中包含一个空的 Podfile,并且仅通过 CocoaPods 包含 Facebook 框架。在 AppDelegate 中导入 Facebook-SDK 应该可以,否则我可以与您分享一个示例项目。然后你应该检查你的构建设置和构建阶段,也许那里有问题。如果您仍然无法找出问题所在,您可能需要重新创建 xcode-项目并再次导入所有文件。

没有重现错误的示例项目,这是我能提供的最佳建议。

祝你好运! :)

为什么不简单地使用 Swift pods?-

pod 'FacebookCore'
pod 'FacebookLogin'
pod 'FacebookShare'

然后正常导入,比如-

import FBSDKLoginKit
import FacebookLogin

完成后,进行清理并构建 (command/⌘ + Shift + K) 和构建 (command/⌘ + B)。确保您使用 .xcworkspace 文件打开项目。

有关 Swift FBSDK here 的更多信息。

使用 Swift pods 后,您应该会在项目中看到这些框架。

如果您仍然继续看到错误,那么 "Clean the build folder" 使用 command + shift + alt + K.

  1. Select 您的项目目标
  2. 转到构建设置。
  3. 搜索 Header 个搜索路径。
  4. 递归添加此值 $(SRCROOT)/Pods,然后 Xcode 将为您解析路径。

Header 搜索路径的上述解决方案应该有效。 如果你懒得去那里。 复制 podfile 内容,删除所有 pods,pod install,然后还原您的 podfile,再次 pod install...。应该可以工作 ;-)

您是打开 .xcodeproj 还是 .xcworkspace?每当你安装 cocoapod

时确保它是工作空间

安装 pods 时,您必须先构建应用程序。然后您的导入停止显示错误。

就我而言,它已正确安装,但我意识到 pod 是 Objective-C,无法将其导入 Swift 文件。我必须创建一个 桥接头 才能使其工作。

参考这个Whosebug线程 How to import existing Objective C classes in Swift