Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
2
Help us understand the problem. What is going on with this article?
@horimislime

CocoaPods1.xで複雑なTarget構成の依存を簡潔に書く

More than 3 years have passed since last update.

はじめに

今年始めにCocoaPod1.xが出て随分経ちました。1.xではPodfileがとてもキレイに書けるようになっていて嬉しく思っているんですが、旧来の記法をそのまま使えることもあって、あまり新しいsyntaxを使っていない人も多く見かけます。

自分も移行当初はほとんどそのままの記法を使っていたんですが、プロジェクトのtarget構成が複雑になったタイミングで記法を書き換えました。構成は以下のようなものです。

  • アプリではターゲットが複数存在する。それぞれでは共通のPodを利用している
  • Testターゲットのみで使いたいPodがある。更にTestも複数のターゲットがある

ここではこの構成を例に、Podfileの新しいsyntaxを古いものと比較しながら紹介します。

0.x以来の記述方法

common_podsのような共通podsを括りだした上で、ターゲットを宣言して各ブロック内で地道に呼び出す必要がありました。

def common_pods
  pod 'Alamofire'
  ...
end

def test_pods
  pod 'Quick'
  ...
end

target 'App1' do
  common_pods
end

target 'App2' do
  common_pods
end

target 'Tests1' do
  common_pods
  test_pods
end

target 'Tests2' do
  common_pods
  test_pods
end

targetが増えれば増えるほどしんどい感じになってきます。これを1.x syntaxに書き変えます。

1.xでのsyntax

新しい記法ではたったのこれだけ。まずabstract_targetを宣言し、その中に共通で使いたいpodを書いておきます。これは中で宣言したtarget全てに依存が継承されます。

この共通のpod以外に使うものがないtargetは、シンプルにtarget '名前'一行で記述可能です。


abstract_target 'App' do

    pod 'Alamofire' # 全ターゲット共通で使うpod
    ...

    target 'App1'
    target 'App2'

    abstract_target 'Tests' do

        pod 'Quick' # テストターゲット共通で使うpod
        ...

        target 'Tests1'
        target 'Tests2' do
          # Tests2でのみ使うpodの記述
        end
    end
end

この例では複数あるテストターゲットだけで使いたい共通ライブラリもあったので、更にabstract_targetをネストして記述しています。これでTest1Test2両方でアプリターゲットの依存に加え、Quickが使えるようになります。

まとめ

CocoaPods1.xからPodfileがとてもシンプルに書けるようになりました。0.x系からあまりsyntaxを変えず使い続けている人もいるかもしれないですが、簡単に見通しが良くなるので一度見直してみるといいかもしれません。

2
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
2
Help us understand the problem. What is going on with this article?