0
0

More than 3 years have passed since last update.

Carthageを使用したQuick導入でトラブった話(platform ios指定でビルドできない問題)

Last updated at Posted at 2020-03-04

はじめに

自分が最近触り始めたプロダクトで謎の設定によりビルドが成功してたのが、自分が触り始めて失敗するようになったので原因を調査した時のメモになります。

先に結論

気が早い人向けに事象と解決策を先に記載します。

  • 事象:Bitrise上でcarthage update/bootstrap --platform iosを実行するとQuickのビルドで失敗する
  • 解決策1:--platform iosを外す(苦肉の回避策)
  • 解決策2:Quickはcarthageからpodsに切り替える

Carthageを使用したQuickの導入方法

導入方法については公式のGitHub上にて説明がある通りですが、ここで軽く説明しておきます。

  • Cartfile.privateにQuickを追加する(github "Quick/Quick"、github "Quick/Nimble")
  • carthage updateを実施する
  • 対象のtest targetの Link Binary With Libraries に Quick.framework と Nimble.framework を追加する

内容を読む限りは簡単なステップで導入できそうです。

実際におきた問題

問題1:API rate limit exceeded

Bitrise上でAPI rate limit exceededのエラーが起きたのがスタートで、調査を開始しました。
これはGithub APIの利用制限に引っかかっただけなので、GITHUB_ACCESS_TOKENを設定すれば良さそうです。
参考:https://qiita.com/watanave/items/c12859b2cb57dc599288

しかしこの調査のとき、プロダクトの方で何故かcarthageの実行を二回行なっていることに気づきました。
一回目がBitriseのworkflowでのcarthage実行、二回目がfastlane内でのcarthage実行になります。
これはおそらく無駄なので、一回目のworkflowでのcarthage実行を削除することにしました。

問題2:何故かQuickのビルドで失敗する

二回行なっていたcarthageのうち一つを削除すると、carthageに失敗するようになりました。
調べてみたところこんなissueを見つけました。
https://github.com/Quick/Nimble/issues/702
なんと、Nimbleでは carthage update/bootstrap --platform ios のようにplatformを指定すると失敗するようです。
どうやら削除した一回目のworkflowでのcarthageはplatform指定がなく、二回目の方はplatform指定がある模様。
おそらく一回目で成功して、二回目はキャッシュで成功していたのでしょう。
このissueが解決されない限りはplatform指定はできないですね。
ということで、今回はplatform指定を外すか、CocoaPodsに戻すようにしようと思います。

0
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
0
0