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に公開しようと思いますが、
アカウント作成が面倒なので今回は見送りました。
cocoapods~ShareKitがinstallができない件~ [cocoapods]
cocoapodsでライブラリを追加しようとpod installを行ったのですが、
# pod install エラーのため敢えて1.3.0固定でinstallpod 'Evernote-SDK-iOS', '1.3.0'
下記エラーが発生してinstallが行えない状態になってしまいました。
[!] Unable to satisfy the following requirements:
- `SSKeychain (~> 0.2.1)` required by `ShareKit/Core (2.5.6)`- `SSKeychain (~> 1.2.2)` required by `Evernote-SDK-iOS (1.3.1)`
解決策としては、2通り。
- ShareKitのEvernote機能を外す
- Evernoteのバージョンを1.3.0に固定する
それでは、経緯と解説。
まず、エラー内容を確認せずに
sudo gem update cocoapods
を行って見ましたが解決しない。
ググっても、同じエラーになっている人がいたのですが、
記載されている解決策ではダメみたいでした。
こちらを参照。
ということで、エラー内容を確認したところ、
原因は、ShareKitとEvernoteがSSKeychainの最低バージョンを、
それぞれ0.2.1と1.2.2を要求しているので、
整合性が取れないということでした。
あぁ、そういうことなら、
と思いShareKitは必要なので、
Evernoteを外せばいいという結論になりました。
Evernoteを追加しているのはShareKit自身なので、
ShareKitの必要な機能だけをinstallするように修正。
ということで、解決策1.解説。
Podfileに今までは
pod 'ShareKit', '~>2.5'
と記載していたのですが、
pod 'ShareKit/Core'
pod 'ShareKit/Facebook'
pod 'ShareKit/Twitter'
上記に変更することで、無事installできるようになりました。
しかし、これだとShareKitではEvernoteが使えなくなってしまいます。
なので、Evernoteのバージョンを利用可能なバージョンに固定することで、
Evernoteも利用できる様にします。
それでは、解決策2.解説。
ShareKitは今まで通りで、
Evernote-SDK-iOSライブラリのバージョンを1.3.0に固定する。
# pod install エラーのため敢えて1.3.0固定でinstall
pod 'Evernote-SDK-iOS', '1.3.0'
pod 'ShareKit', '~>2.5'
pod 'Evernote-SDK-iOS', '1.3.0'
pod 'ShareKit', '~>2.5'
以上の通り設定することで、
無事Evernoteありで、installできるようになりました。
※順番も重要のようでしたので修正しました。
タグ:cocoapods