Facebook SDK v4.7中的CocoaPods v0.39.0错误

Luk*_*oen 7 facebook-ios-sdk cocoapods ios9 swift2 xcode7-beta4

老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中显示的特定版本也是安装的版本,即使我在撰写本文时没有明确指定它们.

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";
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

更新到Cocoapods v0.39.0时遇到的问题(来自v0.38.2)

控制台显示消息"CocoaPods 0.39.0可用.要更新使用:gem install cocoapods.在我们达到1.0版本之前,CocoaPods的功能可以并且将会改变.我们强烈建议您始终使用最新版本.",所以我通过sudo gem install cocoapods在终端执行安装了最新版本的Cocoapods 0.39.0 .

但是当我编译我的应用程序时,它给了我以下错误:

/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.当我尝试编译我的应用程序时,它已成功编译并再次在Simulator中运行.

问题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 targetFBSDKCoreKit iOS 9.0).当我运行我的应用程序时,它成功编译并在模拟器中打开,并显示一些与iOS9相关的新警告,其中大部分都是我理解的.但是我不明白为什么出现这个.为什么会出现这个警告?:

ld:警告:找不到选项'-L/Users/Ls/code/swift/FreeWifiSearch/FreeWifiSearch/build/Debug-iphoneos'的目录

问题3

当使用Cocoapods版本0.38.2(与我的应用程序编译的版本)时,如果我决定添加use_frameworks!到我的Podfile的第一行,并添加到我的Podfile platform :ios, '9.0'的第二行(在其现有内容之上),然后pod install --verbose在终端中运行,终端消息告诉我它安装iOS 9.0的每个pod目标(而不是iOS 8.1).

当我运行我的应用程序时,出现以下错误:

  • 使用未解析的标识符'FBSDKLoginButton'
  • 使用未解析的标识符'FBSDKLoginManager'
  • 使用未解析的标识符'FBSDKLoginBehaviour'

为什么添加use_frameworks!到我的Podfile顶部会阻止我使用Facebook SDK标识符?(注意当我没有use_frameworks!在我的Podfile顶部时,我的应用程序成功编译并在Xcode Simulator中运行,我可以成功检索Facebook SDK访问令牌并登录到Facebook)

Luk*_*oen 0

自从发布原始问题以来,执行了以下操作并且没有导致编译器错误:

  • 从 App Store 下载最新版本,从 Xcode 7 Beta 4 更新到 Xcode 7.1.1
  • 添加use_frameworks!platform :ios, '9.0'到 Podfile 顶部
  • 将部署目标更改为 iOS 9.0:项目设置 > 目标 > 常规 > 部署信息 > 部署目标 > 9.0
  • 将 CocoaPods 更新至 v0.39sudo gem install cocoapods
  • 重新安装了 podpod update --verbose
  • import FBSDKLoginKit在包含 Facebook SDK 方法的类上方添加
  • 在 Xcode 中执行 Clean (Shift+CMD+K) 和 Run (CMD+R) 以在设备上进行测试