旧的 Cocoapods 配置
我使用的是 Xcode 7 Beta 4。最初我使用的是 Cocoapods 版本 0.38.2,当我pod install --verbose
在终端中运行时,它说它下载了 Bolts、FBSDKCoreKit、FBSDKLoginKit、FBSDKShareKit、FBSDKMessengerShareKit 和iOS 8.1的 Pods 的依赖项。通过此设置,我的应用程序编译成功。下面是我用来导入 Facebook SDK 的 Podfile 和 Objective-C 桥接文件(因此 Swift 可以识别其引用的方法和 Objective-C 类)。请注意,我的 Podfile 中显示的特定版本也是安装的版本,即使我在撰写本文时没有明确指定它们。
播客文件
xcodeproj '/Users/<my_username>/MyApp/MyApp.xcodeproj'
pod "FBSDKCoreKit", "~> 4.7.0";
pod "FBSDKLoginKit", "~> 4.7.0";
pod "FBSDKShareKit", "~> 4.7.0";
pod "FBSDKMessengerShareKit", "~> 1.3.1";
MyAppObjCBridging.h
#ifndef MyAppObjCBridging_h
#define MyAppObjCBridging_h
#import <FBSDKCoreKit/FBSDKCoreKit.h>
#import <FBSDKLoginKit/FBSDKLoginKit.h>
#import <FBSDKMessengerShareKit/FBSDKMessengerShareKit.h>
#import <FBSDKShareKit/FBSDKShareKit.h>
#endif
更新到 Cocoapods v0.39.0(从 v0.38.2 开始)时遇到的问题
控制台显示消息“CocoaPods 0.39.0 可用。要更新使用:gem install cocoapods。在我们达到 1.0 版本之前,CocoaPods 的功能可以并且将会改变。我们强烈建议您始终使用最新版本。”,所以我通过在终端中执行安装了最新版本的 Cocoapods 0.39.0 sudo gem install cocoapods
。
但是当我编译我的应用程序时,它给了我以下错误:
/Users//MyApp/MyApp/MyAppObjCBridging.h:14:9: 'FBSDKCoreKit/FBSDKCoreKit.h' 文件未找到
在 Xcode 中,我“产品 > 清洁”(CMD+SHIFT+K),但这没有任何区别。所以我sudo gem uninstall cocoapods
在终端中运行(其中列出了 0.38.2 和 0.39.0 作为当前安装的版本)并从列表中选择版本 0.39.0 以卸载最新版本并恢复为 0.38.2。然后我跑了pod install --verbose
。当我尝试编译我的应用程序时,它成功编译并再次在模拟器中运行。
问题 1
当我使用 Cocoapods 0.39.0 版本而不是旧版本 0.38.2 时,为什么会出现找不到“FBSDKCoreKit/FBSDKCoreKit.h”的错误?
问题2
如果在使用 Cocoapods 版本 0.38.2(与我的应用程序一起编译的版本)时,我决定添加platform :ios, '9.0'
到我的 Podfile 的第一行(在其现有内容之上)并pod install --verbose
在终端中运行,终端消息告诉我它安装了每个 pod 目标适用于 iOS 9.0(而不是 iOS 8.1)(即- Installing target
FBSDKCoreKit iOS 9.0
)。然后当我运行我的应用程序时,它会成功编译并在模拟器中打开,并显示一些与 iOS9 相关的新警告,其中大部分是我理解的。但是我不明白为什么会出现这个。为什么会出现此警告?:
ld:警告:找不到选项“-L/Users/Ls/code/swift/FreeWifiSearch/FreeWifiSearch/build/Debug-iphoneos”的目录
问题 3
当使用 Cocoapods 版本 0.38.2(与我的应用程序一起编译的版本)时,如果我决定添加use_frameworks!
到我的 Podfile 的第一行和我的 Podfileplatform :ios, '9.0'
的第二行(在其现有内容之上),然后pod install --verbose
在终端中运行,终端消息告诉我它为 iOS 9.0(而不是 iOS 8.1)安装了每个 pod 目标。
然后当我运行我的应用程序时,会出现以下错误:
- 使用未解析的标识符“FBSDKLoginButton”
- 使用未解析的标识符“FBSDKLoginManager”
- 使用未解析的标识符“FBSDKLoginBehaviour”
为什么添加use_frameworks!
到我的 Podfile 顶部会阻止我使用 Facebook SDK 标识符?(请注意,当我use_frameworks!
的 Podfile 顶部没有我的应用程序时,我的应用程序成功编译并在 Xcode Simulator 中运行,并且我可以成功检索 Facebook SDK 访问令牌并登录到 Facebook)