如何在项目中包含GData?

时间:2015-04-12 20:24:37

标签: ios objective-c xcode gdata gdata-objectivec-client

我正在尝试将GData框架包含在我的项目中几个小时,我完全迷失了。我正在尝试按照gdata-objectivec-client的页面(https://code.google.com/p/gdata-objectivec-client/)上的说明进行操作,但它们已经过时了。

如果我尝试链接静态库(使用此站点的说明,在安装指南中引用 - > https://hoishing.wordpress.com/2011/08/23/gdata-objective-c-client-setup-in-xcode-4/)最后我得到了这些错误:

Undefined symbols for architecture arm64:
  "_OBJC_CLASS_$_GDataServiceGoogleSpreadsheet", referenced from:
  objc-class-ref in ViewController.o
  "_kGDataGoogleSpreadsheetsPrivateFullFeed", referenced from:
  -[ViewController fetchFeedOfSpreadsheets] in ViewController.o
ld: symbol(s) not found for architecture arm64

我发现它们可能是由gdata-objectivec-client不兼容ARC引起的。它可以通过在Build Phases中添加“-fno-objc-arc”标志来修复 - >编译源代码如果有gdata的文件,但由于我是交叉引用项目,所以没有。

其他方法是直接编译源文件,但提供的方法已经过时了。第一步是将“源”组从GData项目拖到我的项目中,这在Xcode中已经很长时间了。据我所知,今天我必须在Finder中打开项目文件并将它们拖到我的项目中,但这样我导入整个项目,而不仅仅是源文件。另外,如果我这样做,Project Explorer中的文件夹是蓝色的,我无法导入任何GData的头文件。

我没有想法我接下来应该做什么来使用Xcode 6和iOS8,任何帮助都将非常感激。

2 个答案:

答案 0 :(得分:2)

好的,事实证明,截至今天,这不是一件简单的事情。我对Google的文档中提供的教程(无论是静态库还是从源代码编译)都绝对没有运气。我还通过制作一个Podfile并请求一个pod'GData'来尝试可可豆荚。其中一个依赖项加倍,并产生许多“重复符号”错误。但事实证明它可以非常容易地修复,我终于可以使用带有iOS8和Xcode 6.3的GData Objective-C客户端。

以下是您必须做的事情(我假设您已在机器上安装了可可豆荚):

pod init

在控制台中,导航到项目的根目录并键入“pod init”

将其插入podfile:

pod 'GData', :podspec => 'GData.podspec.json'

创建自定义podspec文件,并从官方podspec中删除重复的依赖项。

我们必须从依赖项中删除麻烦的“GTMHTTPFetcher”。在项目的根目录中创建名为 GData.podspec.json 的文件。用内容填充它,看起来像这样:

{
  "name": "GData",
  "version": "1.12.0",
  "license": {
    "type": "Apache License, Version 2.0",
    "file": "COPYING.txt"
  },
  "summary": "The Google data APIs provide a simple protocol for reading and writing data on the web. Many Google services provide a Google data API.",
  "homepage": "https://code.google.com/p/gdata-objectivec-client",
  "authors": {
    "The Google Data APIs team": "https://code.google.com/p/gdata-objectivec-client"
  },
  "source": {
    "svn": "http://gdata-objectivec-client.googlecode.com/svn/trunk"
  },
  "dependencies": {
    "gtm-oauth2": [

    ]
  },
  "requires_arc": false,
  "subspecs": [
    {
      "name": "Core",
      "source_files": [
        "Source/ACL/*.{h,m}",
        "Source/BaseClasses/*.{h,m}",
        "Source/Elements/*.{h,m}",
        "Source/Geo/*.{h,m}",
        "Source/Introspection/*.{h,m}",
        "Source/Media/*.{h,m}",
        "Source/Networking/*.{h,m}",
        "Source/XMLSupport/*.{h,m}",
        "Source/*.{h,m}",
        "Source/Clients/**/*.{h,m}"
      ],
      "libraries": "xml2",
      "xcconfig": {
        "HEADER_SEARCH_PATHS": "\"$(SDKROOT)/usr/include/libxml2\""
      }
    },
    {
      "name": "XMLNode",
      "source_files": "Source/XMLSupport/*.{h,m}",
      "libraries": "xml2",
      "xcconfig": {
        "HEADER_SEARCH_PATHS": "\"$(SDKROOT)/usr/include/libxml2\""
      }
    }
  ]
}

更新GData.podspec.json

中的“版本”

访问https://cocoapods.org/pods/GData并在页面顶部查找最新版本的GData。用该版本号替换GData.podspec.json中的“version”。

执行'pod install'

你已经完成了!现在GData库将最终编译,您可以开始使用它。这个修复可能不是很大,但它确实花了我几个小时来找出问题是什么以及如何消除它。我希望它对其他人有用。

答案 1 :(得分:1)

您必须使用以下方式安装GDATA pod: pod' GData',' 1.12.0'

步骤

  1. 打开终端并转到项目目录
  2. 如果您已有pod文件,则编辑并添加pod' GData',' 1.12.0'否则制作新的pod文件并添加相同的文件。(https://guides.cocoapods.org/using/using-cocoapods.html
  3. 现在退出pod文件并发出命令install pod。
  4. 您将在应用中看到GData已安装。

    注意:安装完成后,您将不得不删除麻烦的" GTMHTTPFetcher"来自依赖。