LoginSignup
2
0

More than 1 year has passed since last update.

バイナリ配布されているフレームワークをCocoaPodsで扱う

Posted at

やりたかったこと

時雨堂さんのWebRTCビルドのiOS用フレームワークのバイナリを使いたかったのですが、バイナリが数百MBもあり(アーキテクチャ絞ればもっと減りますが)、そのままリポジトリに登録したくなく、そのプロジェクトでパッケージ管理に使用している CocoaPods 管理でなんとかしたかった感じです。

やったこと

ローカルのpodspecを読ませたい

時雨堂さんはXcode用のフレームワークをtar.gzで固めてアップしてくれているので、podspecをうまいこと記述してやれば、CocoaPodsのパッケージとして扱え、pod installのときに直接バイナリをダウンロードしにいくとかできるのではと目論みました。ただ、そのためにはpodspecファイルをなんとかしてpodコマンドから読んでもらわないといけません。独自のリポジトリを用意する方法もあるようですが、それはさすがに面倒だったので、ローカルで単体のpodspecファイルを読ませたく、調べたところPodfileの podspec の記法を使えばよいようでした。

具体的には、以下のように書けました。

Podfile
   podspec :path => "./Podspecs/WebRTC-shiguredo.podspec"

なんですが、何故か実際の手元のファイルにはこう書いてました。

Podfile
   pod 'WebRTC', :podspec => "./Podspecs/WebRTC-shiguredo.podspec"

まぁ、どちらも動くようなのでこれで……。

ローカルのpodspecを用意する

無事にローカルのpodspecファイルを読ませることに成功したので、今度はpodspecファイル自体を用意します。podspecの仕様 を読みながら以下のように準備しました。

./Podspecs/WebRTC-shiguredo.podspec
Pod::Spec.new do |spec|

  spec.name         = "WebRTC"
  spec.version      = "XXX.YYYY.Z"
  spec.summary      = "Shiguredo's distribution of WebRTC framework binaries for iOS. "
  spec.description  = "This pod contains Shigredo's distribution of WebRTC framework binaries for iOS."

  spec.homepage     = "https://github.com/shiguredo-webrtc-build/webrtc-build/"
  spec.license      = { :type => 'Multiple', :file => 'NOTICE' }
  spec.author       = "Shiguredo"
  spec.ios.deployment_target = '13.0'

  spec.source       = { :http => "https://github.com/shiguredo-webrtc-build/webrtc-build/releases/download/mXXX.YYY.Z.0/webrtc.ios.tar.gz" }
  spec.ios.vendored_frameworks = ["Frameworks/WebRTC.xcframework"]
end

ミソとなったのは、 spec.source / spec.ios.vendored_frameworks のあたりです。今回利用させていただいた時雨堂さんのバイナリはtar.gzで固めてあったのですが、ソースには他にもzipファイルとかも指定でき、自動で展開してくれるようでした。その上で、圧縮ファイルを展開した際のframeworkのパスを vendored_frameworks に記載しておくと、フレームワークをCocoaPodsで扱えるようになりました。

注意が必要なこと

  • ライセンスについて、ちゃんと確認して色々と気をつけて使いましょう。
  • CocoaPodsさん、すぐ色々とキャッシュしてくれるので、実験中に古いデータが残ってうまく取得処理が更新されなくて半日くらい溶かしました。
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0