我已经使用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
在项目中的样子:
答案 0 :(得分:20)
答案 1 :(得分:2)
如果您使用cocoapods
,则应为您生成*.xcworkspace
个文件。请改为打开此文件,以便您的项目可以看到FBSDK
已安装并引用它。
答案 2 :(得分:2)
我天真以为你没有use_frameworks!
Podfile
。Runner-Bridging-Header.h
。如果这是真的,那么你有两种方法可以离开这里:
在#import <FBSDKCoreKit/FBSDKCoreKit.h>
添加import FBSDKCoreKit
中,从AppDelegate.swift
移除use_frameworks!
,然后继续编写代码。
将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窗格后,您应该在项目中看到这些框架。
如果您仍然继续看到错误,那么&#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