KFCocoaPodsPluginを試してみた
先日のCocoa勉強会の復習。
- KFCocoaPodsPluginを試してみた
- CocoaPodsがどのように実現されているかを確認
cocoapodsの話を聞いてるときに「そういやXcodeからcocoapods操作するplugin見た気がするなあ」と思ったので調べてみました。自分はコマンドライン派だけど、そうでない人はこういうほうが取っつきやすいでしょうから。
と思ったら新しく別のも出てたので、新しいほうを試してみました。
- KFCocoaPodsPlugin - 紹介記事はAn Xcode 5 Plugin For Easier Cocoapods Usage And Podfile Creation / ManiacDev
準備
ターミナルの作業になってしまいますが、ここだけですのでご辛抱を。
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側の実現の仕組みをだいたい理解したので、トラブったら手でプロジェクト直して対処できそうな感触を得たのが収穫。