【问题标题】:Can't add Facebook SDK Xcode 8 with GoogleMaps SDK (incompatible)无法使用 GoogleMaps SDK 添加 Facebook SDK Xcode 8(不兼容)
【发布时间】:2018-03-09 02:43:21
【问题描述】:

我正在尝试在我的应用中添加 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 和 /Users/ devews/Desktop/test/Pods/GoogleMaps/Maps/Frameworks/GoogleMapsCore.framework)

这是我的 podfile:

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

它显示“没有这样的模块 'FBSDKCoreKit'”,所以 Facebook SDK 并没有真正安装,但我可以在项目中看到它,如下图所示。

似乎是因为我删除了“use_frameworks!”这一行。在 podfile 上,所以它不能工作。

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

所以最后,我决定在 podfile 中重新安装 GoogleMaps 并从 podfile 中删除 Facebook SDK,然后手动添加 Facebook SDK,如 Facebook 文档中所示,它试图在“框架搜索路径”中添加 ~/Documents/FacebookSDK “但似乎没有改变任何东西,也没有什么想工作的。我想我这次不需要导入 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,这似乎是不可能的。我在互联网上搜索了很多东西,但没有任何东西可以工作

【问题讨论】:

    标签: ios facebook google-maps cocoapods xcode8


    【解决方案1】:

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

    您需要先在 Project Navigator 中单击您的项目名称,它似乎是为您“测试”,Xcode 左上角的蓝色图标,然后进入“构建设置”部分,这里在搜索字段,您搜索“框架搜索路径”,然后在这里双击它并在您的 Mac 中添加 Facebook SDK 的正确路径(在 Facebook 开发人员网站上,他们要求我们将 FacebookSDK 放在我们的 Documents 文件夹中)所以您只需编写以下路径:

    /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>
    

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

    【讨论】:

    • 谢谢你这是我需要的正确答案,你解决了我的问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-05
    • 2014-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多