きりかノート 3冊め

おあそびプログラミング

KFCocoaPodsPluginを試してみた

先日のCocoa勉強会の復習。

  • KFCocoaPodsPluginを試してみた
  • CocoaPodsがどのように実現されているかを確認

cocoapodsの話を聞いてるときに「そういやXcodeからcocoapods操作するplugin見た気がするなあ」と思ったので調べてみました。自分はコマンドライン派だけど、そうでない人はこういうほうが取っつきやすいでしょうから。

と思ったら新しく別のも出てたので、新しいほうを試してみました。

準備

ターミナルの作業になってしまいますが、ここだけですのでご辛抱を。

cocoapodsのインストール

インストール済みの場合は不要です。自分の環境(MacPorts ruby20)だとこんなんですかね。適当に読み替えてください。

   % sudo gem2.0 install -r cocoapods --bindir /opt/local/libexec/ruby2.0
   % pod init
KFCocoaPodsPluginのインストール

件のプラグインをインストールします。

   % git clone https://github.com/ricobeck/KFCocoaPodsPlugin.git
   % cd KFCocoaPodsPlugin
   % pod install
   % xcodebuild -workspace KFCocoaPodsPlugin.xcworkspace -scheme KFCocoaPodsPlugin build

ビルド成功後、Xcodeを起動する(起動している場合は一度終了する)と"Product"メニューに"CocoaPods"サブメニューが追加されているはずです。

プラグイン

  • ${HOME}/Application Support/Developer/Shared/Xcode/Plug-ins/

にインストールされているので、使わなくなったときはこれを捨てればよいはずです。

練習用のコードを取得

勉強会のデモで使われてた、baztokyo/foursquare-ios-apiのFSQDemoアプリで今回試してみます。勉強会のときとちょっと構成ちがうみたいですが問題ないでしょう。

   % git clone https://github.com/baztokyo/foursquare-ios-api.git
   % git branch try-cocoapods
   % git checkout try-cocoapods

ついでなのであとで比較できるようにブランチを切っておきます。

KFCocoaPodsPluginを使ってみる。

さきほどチェックアウトしたfoursquare-ios-api/FSQDemoのFSQDemo.xcodeprojをXcodeで開きます。Xcode上のBZFoursquareが別のライブラリのコードになるので、これをpodに置き換えていきます。

ごめん、あと1回だけターミナルの作業になります。

   % pwd
   .../foursquare-ios-api/FSQDemo
   % pod init
   % git status -sb
   ## try-cocoapods
   ?? FSQDemo.xcodeproj/project.xcworkspace/xcshareddata/
   ?? Podfile

'pod init'すると、Podfileが作成されます。

Podfileができたので、Xcodeから操作できるようになります。Product > CocoaPods > Edit Podfile で編集しましょう。

   # Uncomment this line to define a global platform for your project
   # platform :ios, "6.0"

   target "FSQDemo" do

   end

   target "BZFoursquareLogicTests" do

   end

とりあえず編集してこんな感じにしてみましょう。

   # Uncomment this line to define a global platform for your project
   # platform :ios, "6.0"

   target "FSQDemo" do
       pod 'Foursquare-iOS-API', '1.1.4'
   end

   target "BZFoursquareLogicTests" do

   end

使いたいpodを書いたので、Product > CocoaPods > Run Update/Installします。

  • ワークスペース: pod install後はこちらで作業します。
  • Podfile.lock: bundlerのアレと同じです。
  • Podフォルダ: podのコードやリソースが保存される場所。

が追加されています。

一度、プロジェクトを閉じて、FSQDemo.xcworkspaceを開きます。

cocoapods用のプロジェクトが作成されて、それが静的ライブラリを生成、それを元のプロジェクトがリンク、というようになっています。

BZFoursquareはpodから使うことにしたので、FSQDemoのプロジェクトからは参照を消します。これでビルドしてみると、無事にFSQDemo.appがビルドできました!

次にpodの更新を試してみます。Podfileを編集して新しいバージョンも利用するようにします。

   target "FSQDemo" do
       pod 'Foursquare-iOS-API', '~> 1.1.4'
   end

Product > CocoaPods > Check for Outdated Pods で確認すると、新しいバージョンがある旨の通知が表示されます。

Product > CocoaPods > Run Update/Installすればpodのライブラリが更新されます。

試してて気付いたけど、pod outdatedで"No updates are available."なのにKFCocoaPodsPluginは更新あるみたいな通知だすことがありますね。なんなんだろ。

ということで、先日の勉強会のデモを資料と記憶を頼りにおさらいしてみました。作業結果をgithubに上げといたので、具体的なdiff見たい方はそちらをどうぞ。

感想

良く使うならショートカット割り当てたほうがよさそう。メニューがだいぶ深いので、なんども操作するのはけっこう手間です。

cocoapodsのXcode側の実現の仕組みをだいたい理解したので、トラブったら手でプロジェクト直して対処できそうな感触を得たのが収穫。