无法将 Facebook SDK Xcode 8 添加到 GoogleMaps SDK(不兼容)

Can't add Facebook SDK Xcode 8 with GoogleMaps SDK (incompatible)

我正在尝试在我的应用程序中添加 FacebookSDK 但我不能,它出现了一些错误。 我已经使用 Cocoapods 安装了 GoogleMaps。

所以首先我尝试使用 Cocoapods 来安装 Facebook,但它不能。在终端中显示此错误

[!] The 'Pods-test' target has transitive dependencies that include static binaries: 

(/Users/devews/Desktop/test/Pods/GoogleMaps/Base/Frameworks/GoogleMapsBase.framework, /Users/devews/Desktop/test/Pods/GoogleMaps/Maps/Frameworks/GoogleMaps.framework, and /Users/devews/Desktop/test/Pods/GoogleMaps/Maps/Frameworks/GoogleMapsCore.framework)

这是我的播客文件:

source 'https://github.com/CocoaPods/Specs.git'
target 'test' do

# Comment the next line if you're not using Swift and don't want to 
use dynamic frameworks
use_frameworks!

pod 'GoogleMaps'
pod 'Google-Maps-iOS-Utils'
pod 'Bolts'
pod 'FBSDKCoreKit'
pod 'FBSDKLoginKit'

end

其次,我也尝试使用 Cocoapods 添加 Facebook,并通过删除导致最后一个问题的 "use_frameworks!" 行,pod 安装 Facebook SDK 但是当我想在 AppDelegate 中导入以下行时:

import FBSDKCoreKit

它显示"No such module 'FBSDKCoreKit'",所以Facebook SDK并没有真正安装,但我可以在项目中看到它,如下图。

好像是因为我删除了 podfile 中的 "use_frameworks!" 行所以它不能工作。

所以第三,我删除了 podfile 中的 GoogleMaps 并尝试手动添加它,但它显示了很多错误,可能是因为缺少文件但我不知道,因为我遵循了 GoogleMaps 文档: https://developers.google.com/maps/documentation/ios-sdk/start?hl=fr

所以最后,我决定在 podfile 中重新安装 GoogleMaps 并从 podfile 中删除 Facebook SDK,然后手动添加 Facebook SDK,如 Facebook 文档中所示,它尝试在 "Framework Search Paths" 但它似乎没有改变任何东西,也没有任何东西想要工作。我想这次我不需要导入 FBSDKCoreKit,但是当我在 AppDelegate 中添加以下行时:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    GMSServices.provideAPIKey("AIzaSyCnSxY__6RFFzp2pJbQoLj8vAQrkWb2byA")
    FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
return true
}

然后出现两个很奇怪的错误:

如果我点击这两个错误没有任何反应。 所以我创建了一个新的 Objective-C 文件调用“test-Bridging-Header 并写入以下内容:

//  Use this file to import your target's public headers that you would like to expose to Swift.

#import <Google-Maps-iOS-Utils/GMUMarkerClustering.h>
#import "GMSMapView+ClusterKit.h"
#import <FBSDKCoreKit/FBSDKCoreKit.h>
#import <FBSDKLoginKit/FBSDKLoginKit.h>

但同样的问题,没有什么对我不起作用。

如果有人知道如何解决这个大问题,因为我想在我的应用程序中同时使用 FacebookSDK 和 GoogleMaps SDK,但这似乎是不可能的。我在 Internet 上搜索了很多东西,但没有一个是行不通的

Google 地图是静态的,而 Facebook 是动态的,所以不能同时使用 Cocoapods 安装它们是正常的。 如果您使用 Cocoapods 安装 GoogleMaps 并手动添加 FacebookSDK,这是更好的方法。 为了解决您最后的问题:

您需要先在项目导航器中单击您的项目名称,它似乎适合您 "test" Xcode 左上角的蓝色图标然后进入部分"Build settings",在搜索字段中搜索 "Framework Search Paths",然后双击它并在 Mac 中添加 Facebook SDK 的正确路径(在 Facebook for developers 网站上,他们要求我们将 FacebookSDK 放在我们的文档文件夹中)所以你只需在以下路径中写入:

/Users/$(USER)/Documents/FacebookSDK

第二件事,就在"Build Settings"的右边你可以看到"Build Phases",你点击它,然后点击"Link Binary With Libraries"这里你只需要添加相同的框架已经通过拖放添加到您的项目中。因此,单击 + 按钮并添加 Bolts.framework、FBSDKCoreKit.framework、FBSDKLoginKit.framework 和 FBSDKShareKit.framework。

第三件事,您可以保留您创建的 Bridging-Header.h 文件并导入:

#import <FBSDKCoreKit/FBSDKCoreKit.h>
#import <FBSDKLoginKit/FBSDKLoginKit.h>

没关系。 希望对你有帮助。