CocoaPodsのsubspecを試してみたよー

CocoaPodsのsubspecを試してみたよー追記: subspecの定義から考えるとこのやり方はちょっとおかしいやり方みたいです。普通、大きなライブラリの一部のモジュールを切り出すのがsubspecなので。。ただ、やったことに関しては後々参照できる部分もあると思いますので、記録的に残しておこうと思います。


先日作成した、AppBank NetworkのローカルCocoaPodですが、これ、バージョンが変わった時の管理がちょっとしづらい。毎回、ダウンロードしてくるし、そのタイミングでSDKの名称が変わったりするかもしれないのででバージョン管理というのもちょっと違う。ならば、NendSDKのPodで、subspecでバージョン管理をしたほうがすっきりする!ということで試してみました。まずローカルCocoaPodの作成については、下記参照お願いします。

podspec

Pod::Spec.new do |s|
  s.name         = "NendSDK"
  s.version      = "0.0.2"
  s.summary      = "self-created local nend pod"
  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.2" }
  s.requires_arc = true
  
  s.subspec 'NendSDK_iOS-2.3.2' do |v|
    v.frameworks = 'AdSupport', 'Security'
    v.source_files  = 'NendSDK_iOS-2.3.2/Nend/NendAd/*.{h,m}'
    v.vendored_library   = 'NendSDK_iOS-2.3.2/Nend/NendAd/libNendAd.a'
  end
end

s.lisenceを記述するとpod lib lint NendSDK.podspecでwarningは消えますが、ちょっと不明だったので、ローカルということもありpodspecには記述していません。

Podfile

pod 'NendSDK/NendSDK_iOS-2.3.2', :git => '$HOME/path/to/NendSDK/.git'

今回は、CocoaPodsのWikiを早い段階で見つけることができたので、意外とすんなり行けました。この資料にもっと早く出会いたかった。

個別にやった場合からの変更点

前回の個別のものとの変更点はいくつかありますが、まず、.gitの場所を変えました。

.
├── .git
├── .gitignore
├── LICENSE
├── NendSDK.podspec
└── NendSDK_iOS-2.3.2
    ├── AdMobMediationAdapter
    └── Nend

以前は、NendSDK_iOS-2.3.2の直下に.gitを置いていましたが、複数のファイルを扱うことになるため、その1階層上に移しています。.gitignore、podspec、LICENSEも同様です。

Podの名前を全体を包含するNendSDKに変更しました。subspecの名前はバージョンだけで良いかなと思いましたが、ダウンロードしてきたものの形を変えるのがやっぱり面倒になりそうなのでそのままにしました。

subspecで扱いたいものを、s.subspecのブロックの中に移しています。トップレベルに書かなければいけないものなどもあり、この辺りはCocoaPodsのWikiが非常に参考になりました。

後記

いやー、これで新しいバージョンが出てもすぐに管理対象にできます。やった!subspecは面倒かなと思っていましたが、ほとんど時間をかけずに出来たので良かったです!!まぁ、構造が単純だからですね。

参考資料

Pocket
LINEで送る

You may also like...