CocoaPodsに自作ライブラリをアップロードしてみよう。


皆さんこんにちわ。
IOSのアプリ開発で必ずと言っていいほど利用する便利なCocoaPods。
ライブラリ管理で便利なこのツールですが、使っていくと自分でライブラリを公開したくなるものです。
今回は自作のライブラリを公開する方法をご紹介致します。
gitbubアカウントは必要になるので、準備は別途行ってくださいね。

CocoaPodsのインストール

CocosPods公式サイト

まずはCocoaPodsのインストールから。
インストール済みの方はこちらはスキップしてください。

sudo gem install cocoapods
pod setup

ライブラリのファイル作成

下記のような構成にてライブラリフォルダを作成。
podspecは次のステップにて作成します。
「MyLib」部分には作りたいライブラリの名前を指定してください。

├── [MyLib]
    ***.h
    ***.m
├── LICENSE
├── Readme.md
└── [MyLib].podspec

podspecファイルの作成

ターミナルにてpodspecを作成。

cd ~/MyLib/
pod spec create MyLib

上記コマンドにてMyLib.podspecファイルが作成されるかと思います。
.podspecファイルをテキストエディタなどで開き、自身のライブラリの設定に書き換えてあげてください.
.podspecファイルはRubyにて書かれており、最終的にコメントアウトされている部分は削除することになります。

podspecの書き方

下記を参照し記入します。
!()[http://www.ateliee.com/wp-content/uploads/2014/10/5e5292e4740dfc14dbb7f9d0e02561a0-600×379.png]
http://guides.cocoapods.org/making/specs-and-specs-repo.html
記載したpodspecファイルをチェックするには、ターミナルにて下記を実行

pod spec lint MyLib.podspec

最終的に

MyLib passed validation.

と表示されればOKです。
バージョンの記載部分に関しては、全て数値を合わせてあげないとエラーになるので注意してください。

ただ、どうも上記コマンドはRemote環境にアップしてあげないとチェックされないようで、
下記のようなエラーが発生し、ローカルのチェックが僕の環境ではできなかったため
一度githubにアップしてあげてからチェックしていました。(誰かローカル環境でのチェック方法教えてください!)

[!] /usr/bin/git fetch origin tags/0.0.1 2>&1
fatal: Couldn't find remote ref tags/0.0.1
fatal: The remote end hung up unexpectedly
git add --all
git commit -m "podspec add"
git tag 0.0.1
git push --tags
git push

リポジトリを作成し、remoteにpushします。
バージョンは記載したバージョン数値を入力します。(ここは数値間違いに注意しましょう)

CocoaPods/SpecsのFork

個々までで準備が整ったので、あとはcocoapods自身に自作ライブラリを伝える必要があります。
まずはCocoaPods/Specsというリポジトリを自分のGithubリポジトリにforkします。   
CocoaPods/Specs
!()[http://www.ateliee.com/wp-content/uploads/2014/10/98543cc22e49d5fc955bf04e13ee8663-600×455.png]
上記URLにて「Fork」をクリック。
https://github.com//Specs
というForkリポジトリが作成されるかと思います。

ForkしたCocoaPods/Specsをローカルに取り込みます。

cd ~
git clone git@github.com:/Specs.git

取り込んだデータに自作のライブラリを入れます。
配置場所は、「~/Specs/Specs/***」にspecsファイルを入れてあげます。
下記設置例です。

├── [Specs]
├── [MyLib]
├── 0.0.1
[MyLib].podspec

配置が完了した後、ForkしたSpecsにPushしてあげ、Pull Requestを送りましょう

git remote add MySpecs https://github.com//Specs.git
git push MySpecs

github画面上にて「pull request」をクリックすると完了です。
私も現在request中で、また公開できたら別途ご紹介しようかと思います。

追記

どうやら上記でpull requestを送ったところ、いつの間にか仕様変更があり
現在は別の方法で対応するそうです。
pod trunkでCocosPodへ自作ライブラリを公開する方法