【问题标题】:Can't import dependency installed with Cocoapods无法导入使用 Cocoapods 安装的依赖项
【发布时间】:2017-12-02 03:52:43
【问题描述】:

我已经使用 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 在项目中的样子:

【问题讨论】:

  • 请检查我从这个线程stackoverflow.com/a/44787352/3632832的回答
  • 将框架添加到嵌入式二进制文件。
  • @KKRocks 如何做到这一点?
  • 选择项目目标,你可以在那里看到这个选项。
  • @KKRocks 我在“构建阶段”下的 Pods 项目中找到了它,但在我的 Runner 项目中似乎找不到它。就像我说的,我只是想制作一个插件。该项目是预先创建的,所以可能有点奇怪:/

标签: ios swift xcode cocoapods flutter


【解决方案1】:
  1. 选择您的项目目标
  2. 转到构建设置。
  3. 搜索标题搜索路径。
  4. 将此值 $(SRCROOT)/Pods 递归添加,然后 Xcode 将为您解析路径。

【讨论】:

  • 在 xcode v11 中,以下内容对我有用:$(SOURCE_ROOT)/Pods/**
  • @BramVanbilsen 非常感谢 - 你拯救了我的一天。我希望我也可以奖励你。
  • @bryan 非常感谢。经过一天的头痛,我找到了解决方案。超级!!!
  • 我已经这样做了,但它仍然无法正常工作。请帮忙。
【解决方案2】:

您打开的是.xcodeproj 还是.xcworkspace?安装 cocoapod 时确保它是工作区

【讨论】:

    【解决方案3】:

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

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

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

    【讨论】:

    • 使用框架!已经在里面了。另一个选项给了我一个错误:/Users/bramvanbilsen/Desktop/facebook_sign_in/facebook_sign_in/example/ios/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/Internal/AppEvents/FBSDKAppEvents+Internal.h:19:9:致命错误:'FBSDKCoreKit /FBSDKAppEvents.h' 文件未找到 #import
    • 你能显示你的Podfile吗?考虑到您的应用名为Runner,这看起来像是您发送的一些奇怪路径
    • 我将它添加到我的问题中!该应用程序实际上是 Flutter(谷歌框架)的一个插件,允许 iOS 用户使用 Facebook 登录。所以 iOS 项目是自动生成的,这就是为什么它很奇怪......我让它在一个全新的项目上工作,但也需要它与这个自动生成的项目一起工作。
    【解决方案4】:

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

    【讨论】:

    • 不知道为什么这没有得到更多的关注。我没有意识到这一点,运行我的应用程序立即允许我导入可可豆荚 - 谢谢!
    • 这个答案需要更高
    【解决方案5】:

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

    【讨论】:

      【解决方案6】:

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

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

      然后正常导入,比如-

      import FBSDKLoginKit
      import FacebookLogin
      

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

      更多关于 Swift FBSDK 的信息here

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

      如果您仍然看到错误,则“清理构建文件夹”使用 command + shift + alt + K .

      【讨论】:

      • 但是我使用的 pod 在一个全新的 swift 项目中工作。所以我不明白为什么他们不应该为这个工作......
      • 您想使用什么取决于您。每个项目都会安装 Pod,并且该项目的 pod 安装可能会出现许多问题。检查已安装框架的目标,或者只是尝试重新安装 pod(从 pod 文件中删除 pod 条目并运行安装,然后再次添加并安装)。
      【解决方案7】:

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

      【讨论】:

      • 我试过了,在构建项目之后,对于使用可可豆荚安装的每个依赖项,我都会收到以下错误:错误:/Users/bramv/Documents/Flutter-Facebook-Sign-In-Plugin/ example/ios/build/Debug-iphoneos/FBSDKCoreKit/FBSDKCoreKit.framework: 没有这样的文件或目录
      【解决方案8】:

      首先清理您的项目目录。并在 Build settings 的 framework 搜索路径中添加 $(inherited)。

      【讨论】:

      • 然后将你的框架路径添加到你的框架搜索路径中。 Like Target -> Build Settings -> Framework Search Paths -> "你的本地目录路径,如 "/Users/user/Documents/FacebookSDKs"
      • 这个本地路径目录应该是什么?我没有像过去那样手动下载 sdk。这就是我尝试使用 pod 的原因 :)
      • $(inherited) 应该是递归的还是非递归的?
      • 它是非递归的
      【解决方案9】:

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

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

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

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

      如果没有重现错误的示例项目,这是我能给出的最佳建议。

      祝你好运! :)

      【讨论】:

        【解决方案10】:

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

        【讨论】:

          【解决方案11】:

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2015-11-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-04-21
            • 2016-02-06
            • 2020-05-26
            • 1970-01-01
            相关资源
            最近更新 更多