LoginSignup
92
57

More than 5 years have passed since last update.

CocoaPods でビルド済みバイナリを使う

Posted at

iOS アプリ開発でサードパーティライブラリを導入する場合、CocoaPodsCarthage かのどちらかを使うのが定番です。

CocoaPods は、ライブラリのソースコードをワークスペースに組み込んで Xcode でビルドを行う仕組みです。このため、アプリのビルド時にライブラリのビルドが始まってしまうことがあります。これにより、ビルド時間が増加するため、開発効率が落ちるという問題があります。この問題は、先にライブラリをビルドしてバイナリを使う Carthage に比べて、CocoaPods が劣る点のひとつです。

しかし実は、CocoaPods でもビルド済みバイナリを使うことが可能です。以下、その方法を述べます。

cocoapods-binary プラグイン

cocoapods-binary プラグインは、先にライブラリをビルドして Xcode でビルド済みバイナリを使うようにする、CocoaPods のプラグインです。サードパーティ製のプラグインですが、CocoaPods のドキュメントで紹介されています(Pre-compiling dependencies)。

pod install のとき、cocoapods-binary はライブラリのソースコードをダウンロードしてビルドします。そして、ビルドしたバイナリをワークスペースに組み込みます。したがって、Xcode はビルド済みバイナリを使います。

これにより、ビルド時間を短縮でき、開発効率が上がります。

プラグインの使い方

cocoapods-binary は RubyGems で提供されています。CocoaPods と同様に gem installbundle install でインストールします。

次に、Podfile の先頭に以下を追加します。

plugin 'cocoapods-binary'

そして、どの pod でバイナリを使うか指定します。

pod "ExpectoPatronum", :binary => true

または、次のように書けば全ての pod でバイナリを使います。

all_binary!

この場合、バイナリを使いたくない pod を :binary => false で指定することもできます。

注意事項

このプラグインを使う場合、use_frameworks! 指定が必要になります。この指定は Dynamic framework を使う指定です。

現在の Xcode や CocoaPods は Static framework に対応しており、Static を使うほうが Dynamic に比べて起動時間が早いなどのメリットがありますが、このプラグインとの併用はできないようです。

バイナリ指定すると何が起こるか

pod install を行うと、バイナリ指定していない場合は、Pods ディレクトリに各ライブラリのソースコードが配置されます。一方、バイナリ指定した場合は、 Pods ディレクトリに各ライブラリのバイナリが配置されます。

より正確には、Pods/_Prebuild ディレクトリ以下に各ライブラリのバイナリが配置され、各ライブラリのディレクトリ Pods/ExpectoPatronum には _Prebuild へのシンボリックリンクが作成されます。

オプション

バイナリ指定すると、Pods ディレクトリにはバイナリのみが置かれ、ソースコードは置かれなくなります。ただ、それは pod install の際に毎回ソースコードをダウンロードしてくるということでもあります。pod install の時間を短縮したい場合は、keep_source_code_for_prebuilt_frameworks! を指定すれば、ソースコードも置いておくようにできます。

また、bitcode が必要な場合は enable_bitcode_for_prebuilt_frameworks! を指定します。

まとめ

CocoaPods でビルド済みバイナリを使う方法を紹介しました。CocoaPods でビルドを早くしたい方は一度試してみると良いと思います。

なお、詳細は cocoapods-binary のページを参照してください。

92
57
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
92
57