如何将Google云端硬盘API添加到我的iPhone项目中,我可以使用它吗?
到目前为止,我已将GTL项目拖入我当前的应用程序项目中(因此它嵌套在我的应用程序项目中)。然后,在我的应用程序目标的构建阶段,我添加了GTL.framework,然后将GTL.framework添加到我的'Link binary with Libraries'(参见附图)。这会引发以下错误:
clang: error: no such file or directory: '/Users/xxx/Library/Developer/Xcode/DerivedData/Golf-hfbczyaemhyzgvbrtgdxqnlzeuaa/Build/Products/Debug-iphonesimulator/GTL/GTL'
如何解决此问题?
答案 0 :(得分:25)
今天大部分时间我都在努力解决这个问题,我觉得非常令人沮丧。我终于弄明白了,所以这里有一个简单的分步指南,介绍如何使用ARC将iOS API添加到使用XCode5的iOS7项目,而无需创建工作空间或其中任何一个。
RawMean提供的答案效果很好,但它给了我ARC的问题。我也不喜欢你必须添加项目,创建工作区然后删除项目的事实。所以我的解决方案将处理这两个问题。
svn checkout http://google-api-objectivec-client.googlecode.com/svn/trunk/ google-api-objectivec-client-read-only
即可。我将此代码称为“Google的代码”。Security.framework
和SystemConfiguration.framework
。这两个是Google代码所必需的。Other Linker Flags
(确保在搜索框的左侧选择“全部”)。添加-ObjC -all_load
。User headers search path
并添加Goggle的/Source
目录的完整路径。请务必选择recursive
。/Source/OAuth2/Touch
目录。将GTMOAuth2ViewTouch.xib
拖放到项目中。/Source
目录。将GTLCommon_Sources.m
和GTLCommon_Networking.m
拖放到项目中。/Source/Services/Drive/Generated
目录。将GTLDrive.h
和GTLDrive_Sources.m
拖放到项目中。如果要使用其他服务,请转到其目录并导入相应的.h和.m文件。GTLCommon_Sources.m
和GTLCommon_Networking.m
在那里。选择它们,按enter并键入-fno-objc-arc
。这将禁用它们的ARC。确保不要为任何其他文件添加此选项(除非您知道自己在做什么)。GTMOAuth2ViewControllerTouch.h
和您的服务标头即可。就我而言,由于我使用的是Google云端硬盘,我还会导入GTLDrive.h
。我希望能帮助并拯救一些人不要拔掉头发。
答案 1 :(得分:14)
我也在努力解决此错误消息。这就是我解决它的方法:
确保您已在GTLSource / Common /下添加了您正在使用的服务的文件夹(例如,为GoogleDrive添加云端硬盘文件夹)。
在GTL.xcodeproj下(您已经添加到工作区),找到GTLSource文件夹并将其拖到主项目中(在您的情况下为Golf)。完成!
现在您可以删除对已添加到工作区的GTL.xcodeproj的引用。
使用这种方法,您甚至不需要添加库(如果已添加它们,请将它们从链接库列表中删除)。
Google API文档与Apple的文档完全不同(它并不好)。
我还应该提一下,我正在为iOS而不是MacOSX构建应用程序,但这也适用于OSX。
答案 2 :(得分:1)
不仅要执行上述操作,还要进入“[Project Name] Targets-> Build Phases> Compile Sources”并单击+按钮。然后添加所有.m文件,由于某些原因大多数都不是自动的。
我还必须从Drive文件夹中删除(引用)“GTLDrive_Souces.m”,但我不明白为什么我必须这样做。
答案 3 :(得分:1)
最好使用Pod
- 如何使用Xcode项目安装CocoaPods并进行设置 供参考:[http://blogs.triffort.com/?p=309][1]
- 醇>
打开pod文件并添加
pod'Google-API-Client / Drive','〜> 1.0'保存pod文件并在终端中调用pod install。注意:pod文件必须提供link_with 'your_project_name','Your_project_nameTests'仅在此行之后添加 你的图书馆
答案 4 :(得分:1)
这并没有真正解决安装Google API的问题,但是在这个回购中我从iOS应用程序访问了Google Forms而没有使用Google的API。 https://github.com/goktugyil/QorumLogs
因此,您可以跳过某些项目中的安装API部分
以下是如何设置它的教程: https://github.com/goktugyil/QorumLogs/blob/master/Log%20To%20GoogleDocs.md
继承代码:
private static var googleFormLink: String!
private static var googleFormAppVersionField: String!
private static var googleFormUserInfoField: String!
private static var googleFormMethodInfoField: String!
private static var googleFormErrorTextField: String!
/// Setup Google Form links
static func setupOnlineLogs(#formLink: String, versionField: String, userInfoField: String, methodInfoField: String, textField: String) {
googleFormLink = formLink
googleFormAppVersionField = versionField
googleFormUserInfoField = userInfoField
googleFormMethodInfoField = methodInfoField
googleFormErrorTextField = textField
}
private static func sendError(#text: String) {
var url = NSURL(string: googleFormLink)
var postData = googleFormAppVersionField + "=" + text
postData += "&" + googleFormUserInfoField + "=" + "anothertext"
postData += "&" + googleFormMethodInfoField + "=" + "anothertext"
postData += "&" + googleFormErrorTextField + "=" + "anothertext"
var request = NSMutableURLRequest(URL: url!)
request.HTTPMethod = "POST"
request.setValue("application/x-www-form-urlencoded; charset=utf-8", forHTTPHeaderField: "Content-Type")
request.HTTPBody = postData.dataUsingEncoding(NSUTF8StringEncoding)
var connection = NSURLConnection(request: request, delegate: nil, startImmediately: true)
}