GoogleAnalyticsをcocoapods使って複数ターゲットがあるプロジェクトに入れたらビルドできないっ!

cocoapods-stickers

公開日: 

タイトル長いけど、メインのTargetと、ユニットテスト用のTargetがあるプロジェクトで、GAを使っているソースをtestターゲットにも紛れたらこんなかんじで怒られた。

GAなんてしらねーよヽ(`Д´)ノウワァァァン!!

って怒られた。

Match-O Linker Errorにはいつも泣かされてる気がします。

 

他のcocoapods使ったライブラリは問題ないのになんでやねーーんとか思ってたんだけど、

cocoapodsの設定をすこしいじったら解決するお話でした。

 

sponcer link

 

原因

大先輩のお話によると、他のライブラリはソースコードベースだけど、GAは.aファイルが追加されるため、

テストバイナリにリンクされてないとabornするらしい。(多分

なので、testsターゲットにもリンクさせてあげればおkらしい。

zipzapとかも同じ現象が起きるらしい。

 

対策1 : link_withを使う

cocoapodsの上の方にlink_withを書いておけばライブラリが全部リンクされるようになる。

HogeとHogeTestというターゲットがあるとするとこんなかんじにPodfileを書いてあげる。

ただ、これだとTestターゲットに別にいらなくてもいいライブラリまで紛れ込むのでビルドに時間が掛かる。

 

対策2 : exclusiveを使う

exclusiveを使えば必要なライブラリをTestターゲットにリンクできる。

以下な感じにPodfileに書いてあげて下さい。

こうすることで必要最低限のライブラリでリンクできるので、ビルド時間も最低限にできる!

これやー!わいが求めていたのはこれやったんやーー!

 

ということで無事ビルドできました。

めでたしめでたし。

 

余談

swift使っているとTestターゲットにもソース入れたげないと補完もビルドも出来ないのは、今回の件もあるし、ビルドも長くなるしで非常に不便…

  • このエントリーをはてなブックマークに追加
  • Pocket

関連記事-こちらもどうぞ

PAGE TOP ↑