无法导入使用 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 binaries
和 linked frameworks and libraries
在项目中的样子:
如果您使用 cocoapods
,它应该已经为您生成了一个 *.xcworkspace
文件。打开此文件,以便您的项目可以看到 FBSDK
安装并引用它。
我会天真地假设你 use_frameworks!
Podfile
。如果这是真的,那么您有两种方法可以从这里开始:
在您的 Runner-Bridging-Header.h
中添加 #import <FBSDKCoreKit/FBSDKCoreKit.h>
,从 AppDelegate.swift
中删除 import FBSDKCoreKit
,然后继续编写代码。
再次将 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.
- Select 您的项目目标
- 转到构建设置。
- 搜索 Header 个搜索路径。
- 递归添加此值 $(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
我已经安装了带有 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 文件夹时,所有文件名都是红色的:
这是我的 embedded binaries
和 linked frameworks and libraries
在项目中的样子:
如果您使用 cocoapods
,它应该已经为您生成了一个 *.xcworkspace
文件。打开此文件,以便您的项目可以看到 FBSDK
安装并引用它。
我会天真地假设你 use_frameworks!
Podfile
。如果这是真的,那么您有两种方法可以从这里开始:
在您的
Runner-Bridging-Header.h
中添加#import <FBSDKCoreKit/FBSDKCoreKit.h>
,从AppDelegate.swift
中删除import FBSDKCoreKit
,然后继续编写代码。再次将
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.
- Select 您的项目目标
- 转到构建设置。
- 搜索 Header 个搜索路径。
- 递归添加此值 $(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