0

我正在使用 Parse SDK(parse.com)处理数据的项目(xcode 6.3+,swift)。最近,我们决定使用 google maps sdk 使用方向 API 为用户提供方向。因为你可以在没有谷歌地图的情况下使用这个 API,所以我开始集成它。这是我第一次使用 cocoapods,所以我按照说明开始玩。

pod init创建 pod 规格文件

这是我的配置来自谷歌入门指南

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.1'
pod 'GoogleMaps'

pod install,然后使用.xworkspace

我直接尝试构建项目,它返回 34 个错误。错误的类型始终相同:Apple Match-O Linker Error

在此处输入图像描述

在此处输入图像描述

所以我开始看谷歌,因为我在一个空白项目上做了同样的事情,一切都很好。

我开始查找有关使用 Parse SDK 会导致与 GoogleMaps 需要工作的 -ObjC 链接器标志冲突这一事实的信息。大多数答案给出了两种可能的解决方案:

1.添加Facebook-iOS-SDK框架

使用 facebook 提供的框架以及使用 cocoapods 进行了尝试。不工作。我仍然有错误。

2. 通过将 -ObjC 标志替换为以下内容来强制加载 GoogleMaps 框架

-force_load $(PROJECT_DIR)/Pods/GoogleMaps/Frameworks/GoogleMaps.framework

这也会返回一个错误: 在此处输入图像描述

所以现在我对解决这个问题的方法很迷茫。有没有人找到将 GoogleMaps SDK 与 Parse 集成的方法?

更新

我尝试了一种不同的方法,即在没有 cocoapods 的情况下注入 GoogleMaps。为此,我使用了这种方法:GoogleMaps without CocoaPods

它似乎可以正确集成,但 -ObjC 标志仍然存在。使用

-force_load $(PROJECT_DIR)/GoogleMaps.framework/GoogleMaps

现在正在响应但导致duplicate symbols for architecture x86_64错误。似乎无法找到解决该问题的方法。

4

2 回答 2

0

好的,所以我设法找到了将 GoogleMaps Sdk 和 Parse 与和不带 cocoapods 集成的工作解决方案。但是,GoogleMaps 使用 -ObjC 标志迫使我将 FacebookSDK 集成到等式中。没有它,我找不到办法让它工作

因此,此配置适用于 xcode 6.3+,并且需要使用旧版本的 Facebook SDK(不使用 cocoapods 时)

使用 CocoaPods

1/。按照他们网站上的描述添加 Parse SDK (现有项目版本)

2/。添加额外的框架(AdSupport、Account 和 Social)以及libstdc++.6.dylib

3/。打开终端到根文件夹

4/。$ pod init

5/。打开 Podfile 并将内容替换为以下内容:

use_frameworks! 
platform :ios, ‘8.0’
pod 'GoogleMaps'

6/。$ pod install然后$ pod update

7/。从此链接下载 FacebookSDK

8/。向您的项目添加FBSDKCoreKitFBSDKLoginKit框架

9/。构建你的项目。

如果发生某些错误,您可能必须ParseFacebookUtils.framework从项目中删除并仅保留ParseFacebookUtilsV4.

没有 CocoaPods

所以这是完全相同的过程,除了使用 pod 安装 GoogleMaps SDK 之外,您将使用问题中提到的链接手动集成它,或者转到 GoogleMaps podspecs 并访问源 URL 以下载最后一个。

确保添加 GoogleMaps.framework 以及 GoogleMaps.bundle,您可以通过在 Resources 下的 finder 中右键单击 GoogleMaps.framework /show 来找到它。拖放到项目并确保它链接到项目构建设置/复制捆绑资源

此外,请确保在问题中提供的链接上列出了所有必需的框架和库。

在 Build Settings / Other Linker Flags 下添加-ObjC标志

在集成 FacebookSDK 时,我注意到使用最新版本不起作用。显然,它已准备好与 xcode 7 一起使用。解决此问题,只需在此处下载旧版本

将 FBSDKCoreKit 和 FBSDKLoginKit 添加到项目中,您应该一切顺利。希望对某人有所帮助,因为使这项工作很痛苦...

于 2015-11-12T17:54:51.277 回答
0

你需要这样做

单击您的项目(目标)单击框架搜索路径下的构建设置(设置您的框架路径)获取框架搜索路径的以下信息

右键单击您的框架文件夹(例如:GoogleMaps.framework)选择获取信息从 General->where 复制路径并将此路径粘贴到您的框架搜索路径中(路径应包含在单行中)祝你好运

于 2015-11-11T17:06:41.163 回答