読者です 読者をやめる 読者になる 読者になる

プログラミングノート

一からものを作ることが好きなエンジニアの開発ブログです。

gdata-objectivec-clientを静的ライブラリとして組み込むには

Google Data APIに簡単にアクセスできるgdata-objectivec-clientライブラリの組み込み方法。次回やるときに確実に忘れてそうなのでメモ。


入れ方は色々あるのですが、今回はBuildingTheLibraryという公式のwikiに記載されているLinking to the iPhone Static Libraryを参考に、静的ライブラリとして利用します。

iPhoneプロジェクトを作る

Projectというプロジェクトを作ります。
環境はXcode 3.2.4, iOS SDK 4.1です。

gdata-clientをビルド

1. 現在の最新版は、gdata-objectivec-client-1.10.0なのですがビルドすると、GDataGatherInputStreamが実装されてないよ、と言われて失敗するので、svnから取ってきて、プロジェクトのディレクトリに入れます。

svn co http://gdata-objectivec-client.googlecode.com/svn/trunk gdata-client
mv gdata-client Project


2. GData.xcodeprojを開いて、ビルドターゲットを GDataTouchStaticLib に変更します。


3. ターゲット > GDataTouchStaticLibの情報を見る > ビルド > 構成:Release の設定を変更します。

  • 「ベースSDK」を iOS4.1 にする
  • その他のCフラグに設定されてある「-DGDATA_INCLUDE_nameServiceHere_SERVICE=1」を「-DGDATA_INCLUDE_PHOTOS_SERVICE=1」にする
  • 旧世代の端末もサポートする場合は、アーキテクチャを「Standard(armv6 armv7)」にする


今回はPicasaAPIを使うのでPHOTOSを指定していますが、それ以外のAPIを利用したい場合は、それぞれ指定します。ここで指定しなかったソースはビルド対象になりません。


4. Simulator, DeviceそれぞれReleaseビルドします。


5. 出力されたライブラリを統合します。

cd Project/gdata-client/Source/build
lipo -create Release-iphoneos/libGDataTouchStaticLib.a Release-iphonesimulator/libGDataTouchStaticLib.a -output libGDataTouchStaticLib.a

これでSimulator, Device両方で利用できるライブラリができました。

プロジェクトに組み込み

1. Projectプロジェクトを開き、既存のファイルを追加から上記のlibGDataTouchStaticLib.aを追加します。


2. 情報を見る > ビルドで、全ての構成の設定を変更します。

  • 他のリンカフラグに -ObjC -lxml2 を追加
  • ヘッダ検索パスに下記パスを追加
/usr/include/libxml2 (再帰的にチェック)
$(SRCROOT)/gdata-client/Source/build/Release-$(PLATFORM_NAME)/Headers


3. 適当なファイルに #import "GData.h" を追加して、ビルドが通ればOKです。