🛠️

[ CocoaPods could not find Error ] Flutterでパッケージを入れて急にビルドできなくなったら

2021/10/01に公開

この記事では、以下のようなエラーが出た時に試してみて欲しいことを書いています

下のコードは firebase_analytics: ^2.1.1 ですが記事で説明する方法は
どのようなパッケージでも解決しうる方法です

DEBUG CONSOLE
[!] CocoaPods could not find compatible versions for pod 
"Firebase/Analytics": 
In Podfile: firebase_analytics (from `.symlinks/plugins/firebase_analytics/ios`) 
was resolved to 8.2.0, which depends on Firebase/Analytics (= 8.7.0) 

None of your spec sources contain a spec satisfying the dependency:
`Firebase/Analytics (= 8.7.0)`.

問題を二つに切り出します

  1. そもそもビルドができない
  2. 該当パッケージを消したりバージョンを変えてもビルドができない

その理由は以下と推測できます

  1. パッケージの相性問題
  2. cocoapodがpackageCache?の古いものを引き出して新しい変更が適応されない

解決した手段

  1. firebase関係のパッケージのバージョンアップ,バージョンを揃える
  2. cocoapodsのpackageCache?を削除する

1.そもそもビルドができない

firebaseを使っている場合の原因は大体パッケージバージョンの相性の問題であることが多いです
できるならばfirebase関連のパッケージを全て最新にしてください、そしてリリース日も同じだと理想的です。

また、どうしても古いバージョンじゃないとダメなパッケージがある場合は
各々のパッケージのリリース日を合わせる、または近いものを使うと解決することが多いです

リリース日はpub.devのversionsに記載されています

firebase_coreバージョンページ


2.該当パッケージを消したりバージョンを変えてもビルドができない

上のパッケージバージョンを揃えるなどしても同じ以下のようなエラーが出力される場合の対処法です。

DEBUG CONSOLE
[!] CocoaPods could not find compatible versions for pod 
"Firebase/Analytics": 
In Podfile: firebase_analytics (from `.symlinks/plugins/firebase_analytics/ios`) 
was resolved to 8.2.0, which depends on Firebase/Analytics (= 8.7.0) 

None of your spec sources contain a spec satisfying the dependency:
`Firebase/Analytics (= 8.7.0)`.

問題になってそうなパッケージを消したり、バージョンを変えたりしてもエラーメッセージが変わらない場合pubspec.yamlに書き込んだ内容が原因では無いと考えられます。

挙動を見て推測したことなので、間違いがあれば訂正していただけるとありがたいです。
iosビルドはcocoapodsを通して行われるため、cocoapodsにはinstallしたパッケージが入っています。ビルドを行う際、おそらくcocoapodsからcacheされたパッケージを引き出して来てくれるのですが、pubspec.yaml等に書き込んだパッケージの情報が正確に読み取れないことがあり、その場合cacheから以前のパッケージを出し、正しいパッケージをcocoapodsから引き出せないことが原因だと考えられます。

対応

以下の記事が非常に参考になりました!
ありがとうございます!秋山さん!!
https://qiita.com/xxminamixx/items/14ee466cf2315def6890
https://d.akiroom.com/2015-08/pod-install-forever/

// cocoapodsCacheの削除  ~/.cocoapods/repos/フォルダ名
pod repo remove フォルダ名
//上がわからなかったらこれを
pod repo remove trunk

// podの再install --verboseはデバック用のコマンドだがpod installでは正しく作動しなかったため
pod install --verbose

これでcacheの削除は完了です!
いちお flutter clean を行って
flutter pub get
デバッグ起動 を行えば初回ビルド時間が長いですが完了です!!!!


これでも解決できない場合は以下の記事も読んでみることをお勧めします!
https://zenn.dev/taisuke55276018/articles/e1e53147d5520d


自分に起きたこと

私の場合はflutterに google_mobile_ads: ^0.13.4 を追加してローカルでは動作確認できたので、本番ビルドを行こなったが上部のエラーが発生した。検証のためローカル上で ios/Pods,ios/Podfile.lock を消してビルドを行うとローカル上でも同じエラーが出た。

直前に google_mobile_ads 無しで本番ビルドを行っていたので原因は google_mobile_ads と確定。

その後検証のため google_mobile_ads を一旦消してローカルビルドを行ったが
上部のエラーが再度表示され、そこから何をしても同じエラーが出まくりました。。

結果としては上部の1.2を行うとローカルでの起動もでき、パッケージの相性問題も解決して無事本番ビルドも行えるようになりました!!

参考になれば、Twitterフォローしていただけるとありがたいです!!!🙇🙇🙇
https://twitter.com/akaboshinit/status/1443797464629211139

Discussion