AppBankNetworkのローカルCocoaPod化が完了しました!一応、ログインして申請しないとSDKはもらえないので、CocoaPod本家にはアップしませんが、やり方だけ備忘的に書いておこうと思います。
まず、CocoaPod化前に決めていた前提。
CocoaPod化する際の前提
- 後でわけがわからなくなるとまずいので、ダウンロードしたSDKのディレクトリ構造は変更しない。
- AdMobMediationAdapterは使わない。
- ローカルのgitで管理する。
/NendSDK_iOS-2.3.2/の直下にgit init
しました。:pathで直接指定しても良かったのですが、他のローカルリポジトリと共通のgit方式にしました。gitだとバージョンの管理が楽なので。
Podspec
Pod::Spec.new do |s| s.name = "NendSDK_iOS-2.3.2" s.version = "0.0.1" s.summary = "local nend pod created by me" s.description = <<-DESC This is a nend pod created by me! DESC s.homepage = "https://www.nend.net/m/home" s.author = "Appbank Network" s.platform = :ios, '5.0' s.source = { :git => ".git", :tag => "0.0.1" } s.source_files = 'Nend/NendAd/*.{h,m}' s.frameworks = 'AdSupport', 'Security' s.vendored_library = 'Nend/NendAd/libNendAd.a' s.requires_arc = true end
ポイントはいつくかあって、まず、s.sourceのところにある、$HOMEです。最初、~でやったのですが、うまく行きませんでした。また、.aファイルをどうやって導入すればよいのか迷ったのですが、本家のドキュメントをみて、s.vendored_libraryに記述してみたところうまくいったので良かったです。
s.lisenceを記述するとpod lib lint NendSDK_iOS-2.3.2.podspec
でwarningは消えますが、ちょっと不明だったので、ローカルということもありpodspecには記述していません。
Podfile
こんな感じです。
pod 'NendSDK_iOS-2.3.2', :git => '$HOME/path/to/NendSDK_iOS-2.3.2/.git', :tag => '0.0.1'
ハマりポイント
- podspecを変更してもずっと、
pod lib lint NendSDK_iOS-2.3.2.podspec
で出たエラーが消えない。まぁ、原因はgitでソースを指定していたので、ちゃんとgit commit
していなかったということでした。 - 最初、.aファイルをs.resourceでしていしていて、うまく動かなかったのですが、途中から、s.vendored_libraryに変えたのに、
pod install
しても、workspaceのファイル構成が変わらない。。。なんだろうと思ったのですが、一旦、Podfileから削除してpod install
して、再度pod install
したらうまくいきました。
あぁ、完了してよかった。こんなかんじでライブラリはできるだけCocoaPodで管理していきたい!
今後
CocoaPodsのsubspecのやり方も覚えていきたい。
後記
こういう編集しないものをローカルCocoaPod化する場合は、:gitじゃなくて:path指定だけで良いのかも。あとは、gitでやるとしたら、サブモジュールでやってもいいのかも。まぁ、別に敢えてややこしくする必要はないので、やっぱり/Nend/NendSDK_iOS-2.3.2/とかいうわけかたにして、:pathでそれぞれのバージョン指定すればいいのかなー。
追記:僕の環境では、:gitでローカルに取りに行った場合には、$HOMEではいけて~ではいけませんでした。逆に、:pathで取りに行った場合は、$HOMEでは行けず、~ではいけました。なんだろー。
2件のコメント
kishikawa katsumi · 2014-01-28 1:09 AM
まあ、ローカルpodspecなので適当でいいのですが、authorとlicenseのところに違和感がありますね。(`author`はpodspecの作者じゃなくてライブラリのメンテナ、`license`はMITじゃない(ですよね?))必須じゃないので特に書かなくていいんじゃないでしょうか。
morizotter · 2014-01-28 1:58 AM
コメント&ご指摘ありがとうございます!たしかにそうですね。ドキュメントの該当部分に目を通してみました。本文一部修正させていただきました!