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

时间:2017-06-28 16:43:55

标签: ios swift xcode cocoapods flutter

我已经使用Cocoapods安装了FBSDK,但出于某种原因无法在我的AppDelegate.swift文件中导入它。 FBSDK工具包出现在我的Xcode项目中,所以我觉得它应该正常工作。 enter image description here

我不是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文件夹时,所有文件名都是红色的: enter image description here 但是Finder中的确切文件夹是空的。所以我想这就是错误显示的原因。问题是如何解决这个问题......

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

11 个答案:

答案 0 :(得分:20)

  1. 选择您的项目目标
  2. 转到“构建设置”。
  3. 搜索标头搜索路径。
  4. 使用递归添加此值$(SRCROOT)/ Pods,然后Xcode将为您解析路径。
  5. enter image description here

答案 1 :(得分:2)

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

答案 2 :(得分:2)

我天真以为你没有use_frameworks! PodfileRunner-Bridging-Header.h。如果这是真的,那么你有两种方法可以离开这里:

  1. #import <FBSDKCoreKit/FBSDKCoreKit.h>添加import FBSDKCoreKit中,从AppDelegate.swift移除use_frameworks!,然后继续编写代码。

  2. Podfile添加到pod install并再次运行library(plotly) a <- 1:10 b <- 1:10 data <- data.frame(a,b) annotations <- list(x = a[3:4], y = b[3:4], text = c("p1","p2"), showarrow = TRUE) p <- plot_ly(data = data, x = ~a, y = ~b, type = "scatter", mode = "lines") p <- layout(p, annotations = annotations) p 。这可能会带来一些其他问题,但如果可行的话,我会提出建议。

答案 3 :(得分:2)

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

答案 4 :(得分:1)

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

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

然后正常导入,如 -

import FBSDKLoginKit
import FacebookLogin

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

有关Swift FBSDK here的更多信息。

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

enter image description here

如果您仍然继续看到错误,那么&#34;清理构建文件夹&#34;使用命令 + shift + alt + K

答案 5 :(得分:0)

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

答案 6 :(得分:0)

首先清理项目目录。并在Build settings中的框架搜索路径中添加$(继承)。

答案 7 :(得分:0)

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

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

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

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

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

祝你好运! :)

答案 8 :(得分:0)

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

答案 9 :(得分:0)

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

答案 10 :(得分:0)

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

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