Isu*_*uru 7 ios cocoapods google-drive-api swift
我计划在Swift项目中使用Google Drive API.我正在尝试通过CocoaPods(v0.39.0)添加Drive SDK.下面是我的Podfile.
platform :ios, '8.0'
use_frameworks!
pod 'Google-API-Client/Drive'
Run Code Online (Sandbox Code Playgroud)
我use_frameworks!添加了标志,以便CocoaPods可以将Objective-C pod转换为Swift框架而不是静态库.
Pod安装成功.但是,当我构建项目时,我收到以下错误.
类"GTMHTTPUploadFetcher"的重复接口定义
删除DerivedData文件夹并清理项目不起作用.
我也试过没有添加use_frameworks!,然后通过桥接头方式添加库.这没有问题.事情是我所有其他依赖项工作与它打开.不幸的是,CocoaPods 不 支持仅针对某些pod 播放该标志.
是否有解决此问题的解决方法?
正如Google的文档中所述,Google工程师据称会监控使用google-drive-sdk标记的问题,所以我希望至少他们会看到这个问题并尽快解决.
我遇到了同样的问题。我的解决方案是不使用 CocoaPods 安装适用于 iOS 的 Google API 客户端,因为我使用的是基于 Swift 的 pod,因此无法删除use_frameworks!以尝试解决重复标头问题。
相反,我按照https://developers.google.com/drive/ios/quickstart?ver=swift上的步骤 2、3 和 4 的详细说明手动安装了该库。我按照说明进行操作,但将它们应用于我现有的工作区而不是创建新的工作区。
需要注意的是,我必须调整“用户标头搜索路径”中的路径,以匹配我实际从 Google 复制源代码的位置。
我将说明复制到此处以供参考。
第 2 步:下载 Google 客户端库
运行以下命令以使用 git 下载库:
git clone https://github.com/google/google-api-objectivec-client.gitgit clone https://github.com/google/gtm-oauth2.gitgit clone https://github.com/google/gtm-session-fetcher.gitgit clone https://github.com/stig/json-framework.git -b v2.3cp -R gtm-oauth2/Source google-api-objectivec-client/Source/OAuth2cp -R json-framework/Classes google-api-objectivec-client/Source/JSON第 3 步:准备工作空间
打开 Xcode 并创建一个名为“Quickstart”的新工作区。使用“文件”>“将文件添加到“快速入门”...,将以下项目从上一步中克隆的库添加到工作区:
- google-api-objectivec-client/Source/GTL.xcodeproj
- gtm-session-fetcher/源/GTMSessionFetcher.xcodeproj
选择“GTMSessionFetcher”项目并进行以下更改:
- 添加类型为 iOS > Framework & Library> Cocoa Touch Static Library 的新目标,并将其命名为“GTMSessionFetcherLib”。
- 将项目的 GTMSessionFetcher 组中的所有 .m 文件添加到目标的 Build Phases > Compile Sources 部分。
选择“GTL”项目的“GTLTouchStaticLib”目标并进行以下更改:
- 将库 GTMSessionFetcher/libGTMSessionFetcherLib.a 添加到“构建阶段”>“将二进制文件与库链接”。
- 将 gtm-session-fetcher/Source/ 的绝对路径添加到“构建设置”>“用户标头搜索路径”。
- 将标志 GTM_USE_SESSION_FETCHER=1 添加到“构建设置”>“预处理器宏”。
- 删除“GTL”项目的“GTLFramework”目标。
- 在项目导航器中,删除 GTL 项目的 GTL Source > Common > HTTPFetcher 组。
第四步:准备项目
- 创建一个名为“QuickstartApp”的新 iOS > 应用程序 > 单视图应用程序项目。将语言设置为 Swift ,并在保存项目时将添加到和组字段设置为“快速启动”。
- 将以下框架和库添加到项目的“构建阶段”>“将二进制文件与库链接”部分:libGTLTouchStaticLib.a
- 安全框架
- 系统配置.framework
- 更改以下构建设置:
- 将 -ObjC -all_load 添加到其他链接器标志。
- 将以下目录的绝对路径添加到用户标头搜索路径:
- gtm-session-fetcher/源/
- google-api-objectivec-client/源/**
- 将标志 GTM_USE_SESSION_FETCHER=1 添加到预处理器宏。
- 将文件 google-api-objectivec-client/Source/OAuth2/Touch/GTMOAuth2ViewTouch.xib 添加到项目的支持文件组中。
- 将以下文件添加到 QuickstartApp 组:
- google-api-objectivec-client/源/服务/驱动器/生成/GTLDrive_Sources.m
- google-api-objectivec-client/源/服务/驱动器/生成/GTLDrive.h
- 如果没有自动创建,请创建一个新的头文件 Bridging-Header.h,其中包含以下内容:
#import "GTMOAuth2ViewControllerTouch.h"#import "GTLDrive.h"- 将“构建设置”>“Objective-C 桥接标头”设置为桥接标头的绝对路径。
| 归档时间: |
|
| 查看次数: |
1578 次 |
| 最近记录: |