cocoapods~URLShortenerのcocoapods対応~ [cocoapods]
iOS用のURLShortenerライブラリを使用したのですが、
cocoapodsに対応していないようでした。
なので、下記を参考にcocoapods対応を行いました。
概要としては、
- リポジトリをclone又は、fork
- ライブラリに必要なファイルとサンプルなどの不要ファイルを分離(サンプルが動作することを確認)
- podspecファイル作成&編集
- tagを付けてcommit&push
- Podfileを修正してpod install
※URLShortener導入自体はすごく簡単なので、
わざわざcocoapodsに対応させなくても良いと思われます。
(必要であればスゴイ人が対応して公開してるだろうからね)
※今回は、cocoapodsに対応していないライブラリなどを
対応させるための勉強のつもりでやってみました。
(特に自分の作成したライブラリなどを対応させる想定)
それでは、詳細解説。
1.リポジトリをclone又は、fork
githubアカウントが無いため、
今回は、BitBucketに該当リポジトリをインポートして作業を行います。
BitBucketにリポジトリをインポートする方法はこちら…
2.ライブラリに必要なファイルとサンプルなどの不要ファイルを分離
まずは、修正前に動作確認。
UrlShortenerプロジェクトを起動すると、
「Default-568h@2x.png」が無い旨のエラーが出ていますが、
元から無いので、今回はファイルをdeleteします。
実行例はこちら…
プロジェクトのGROUP構造に合わせて、
実際のディレクトリ構造を修正。
プロジェクトに移動したファイルを入れなおす。
TARGETのPrefix Headerを修正する。
Info.plistファイルを選択し直す。
クリーンして、実行して問題なく動作することを確認。
ここからが、本題。
3.podspecファイル作成&編集
端末にて該当プロジェクトがあるディレクトリへ移動し、
下記コマンドを入力。
pod spec create UrlShortener
作成された「UrlShortener.podspec」ファイルを以下の通り修正。
s.version = "1.0"
s.summary = "UrlShortener for iOS"
s.homepage = "https://github.com/theaudience/URL-Shortener"
s.license = { :type => "MIT", :file=> "README.mdown" }
s.platform = :ios, "5.0"
s.source = { :git => "gitパス", :tag => "1.0" }
s.source_files = "UrlShortener/*.{h,m}"
#s.exclude_files = "Classes/Exclude"←コメントアウトで削除
s.frameworks = "UIKit", "Foundation", "CoreGraphics"
s.requires_arc = true
※gitパスはBitBucketのパスを指定します。
4.tagを付けてcommit&push
以上の修正をcommit後タグを1.0として付与
更に、pushする。
5.Podfileを修正してpod install
cocoapodsで該当ライブラリをインストールできるか確認。
今回は、UrlShortenerのサンプルプロジェクトを再利用する。
サンプルプロジェクトから
UrlShortenerディレクトリをRemove Referencesする。
※この状態でビルドすると当然エラーになります。
一旦、Xcodeを終了し、
プロジェクトと同じ階層にPodfileを作成し、
以下の通り、修正する。
platform :ios, "6.0"
pod 'UrlShortener', :git => 'gitパス'
※gitパスはBitBucketのパスを指定します。
端末にて、下記コマンドを入力。
pod install
[!] From now on use `UrlShortener.xcworkspace`.
上記、メッセージが表示されれば成功。
実際に、UrlShortener.xcworkspaceをダブルクリックし、起動。
PodプロジェクトにUrlShortenerが導入されていることがわかります。
実行も正しく行えました。
以上で完了。
※今回は、githubアカウントが無かったため
pullrequestやgithubでの公開は行っていません。
BitBucketのプライベートリポジトリにて作業を行っています。
要望があれば、pullrequestもしくはforkしてgithubに公開しようと思いますが、
アカウント作成が面倒なので今回は見送りました。