Flutter: CocoaPods could not find compatible versions for pod "GoogleAppMeasurement"のエラー
結論:最新バージョンの「google_mobile_ads」に更新する
2023/2/12 Flutter エラー・バグ日記
以前も似たエラーが出たので、簡単に対処できるかと思ったが、意外に手間取った。。
Flutter SDKを3.7.1にアップグレードし、ひと通りのバグ修正をした後に、クラッシュ分析をするため、新たに「firebase_crashlytics」(バージョン3.0.12)を「pubspec.yaml」に追加し、「pub get」したところ、以下のエラーが出た。
Because firebase_crashlytics >=3.0.12 depends on firebase_core ^2.5.0 and XXXXXX depends on firebase_core ^1.21.1, firebase_crashlytics >=3.0.12 is forbidden.
So, because XXXXXX depends on firebase_crashlytics ^3.0.12, version solving failed.
pub get failed
command: "/Users/######/flutter/bin/cache/dart-sdk/bin/dart __deprecated_pub --directory . get --example"
pub env: {
"FLUTTER_ROOT": "/Users/######/flutter",
"PUB_ENVIRONMENT": "flutter_cli:get",
"PUB_CACHE": "/Users/######/.pub-cache",
}
exit code: 1
※「XXXXXX」はプロジェクト名、「######」はユーザー名
「firebase_core」と「firebase_analytics」のバージョンを上げる必要あり
よく見るバージョン不整合のエラー。
「firebase_crashlytics」のバージョン3.0.12は、バージョン2.5.0以上の「firebase_core」を必要とするのに、現在の「firebase_core」のバージョンは1.21.1なので、エラーになった模様。
そこで、「pubspec.yaml」に「firebase_core: ^2.5.0」とバージョンを書き直した上で、「pub get」したところ、今度は以下のエラーが発生した。
Because firebase_analytics >=9.0.0-dev.2 <10.0.1 depends on firebase_core ^1.10.0 and XXXXXX depends on firebase_core ^2.5.0, firebase_analytics >=9.0.0-dev.2 <10.0.1 is forbidden.
So, because XXXXXX depends on firebase_analytics ^9.3.3, version solving failed.
pub get failed
command: "/Users/######/flutter/bin/cache/dart-sdk/bin/dart __deprecated_pub --directory . get --example"
pub env: {
"FLUTTER_ROOT": "/Users/######/flutter",
"PUB_ENVIRONMENT": "flutter_cli:get",
"PUB_CACHE": "/Users/######/.pub-cache",
}
exit code: 1
先ほど「firebase_core」を2.5.0に上げたことで、今度は「firebase_analytics」のバージョンが不整合となってしまい、これもバージョンを上げる必要があるらしい。
そこで「firebase_analytics」も、現時点最新のバージョン10.1.1に上げたところ、無事「pub get」を完了できた。
再び、coreやanalytics関連のエラーが出る。。
パッケージを導入した場合、iOSでビルドするには、必ず「pod install」が必要なので、やってみると、今度は以下のエラーが発生。
[!] CocoaPods could not find compatible versions for pod "GoogleAppMeasurement":
In Podfile:
firebase_analytics (from .symlinks/plugins/firebase_analytics/ios
) was resolved to 10.1.1, which depends on
Firebase/Analytics (= 10.3.0) was resolved to 10.3.0, which depends on
Firebase/Core (= 10.3.0) was resolved to 10.3.0, which depends on
FirebaseAnalytics (~> 10.3.0) was resolved to 10.3.0, which depends on
FirebaseAnalytics/AdIdSupport (= 10.3.0) was resolved to 10.3.0, which depends on
GoogleAppMeasurement (= 10.3.0)
google_mobile_ads (from `.symlinks/plugins/google_mobile_ads/ios`) was resolved to 0.0.1, which depends on
Google-Mobile-Ads-SDK (= 9.6.0) was resolved to 9.6.0, which depends on
GoogleAppMeasurement (< 10.0, >= 7.0)
「GoogleAppMeasurement」が出てくるエラーは、以前も下記日記
の際に遭遇したが、今回はエラーの内容が異なっている。
前半はFirebase関連で、後半はAdMob(Google-Mobile-Ads)関連。
バージョン番号は、恐らくiOS用のライブラリの番号か。
いずれも「was resolved(解決された)」とあるので、何が問題なのだろう?と思ってしまい、仕方なく調べると、以下のQA記事が見つかった。
文中のバージョン番号が違うだけで、ほぼ自分と同じエラー。
解決策として、「Google-Mobile-Ads-SDK」を最新バージョンにすることが提案されている。
Firebaseの方は気にしなくて良いらしい。。
そこで、「pubspec.yaml」に登録していた「google_mobile_ads」をバージョン2.0.1から、現時点最新の2.3.0に更新し、再度「pod install」したところ、確かに完了できた。
後になって、よくエラーメッセージを見てみると、
前半のFirebase関連については、最終的に、バージョン10.3.0の「GoogleAppMeasurement」に依存していると判定されたが、
後半のAdMob(Google-Mobile-Ads)関連については、最終的に、バージョン7.0以上かつ10.0未満の「GoogleAppMeasurement」に依存すると判定されたので、
2つの間で「GoogleAppMeasurement」の判定バージョンに不整合が生じてしまった、
ということだと理解できた。
そのため、「Google-Mobile-Ads」のバージョンを上げることで、依存する「GoogleAppMeasurement」のバージョンも上がるはずなので、Firebase側と整合が取れる、ということだろう(違っていたらスミマセンm(_ _)m)。
エラー文から「何が問題か」を明示的に読み取れず、手間取ってしまった。。
「GoogleAppMeasurement」とは?
このワードにエラーで遭遇したのが2回目だったので、気になって調べたところ、下記AdMobの公式サイトに記載があった。
どうやらiOSアプリに、AdMob(Google Mobile Ads)のSDKを導入する際にインポートされるフレームワークの1つ、ということらしい。
名称からはAdMobを想起できなかったが、今後はエラーの中に「GoogleAppMeasurement」があったら、AdMob関連を疑うべし、と理解した。
\一般的なエラー対処法をまとめた記事はこちら/
リリースしたアプリ(全てFlutterで開発)
個人アプリ開発で役立ったもの
おすすめの学習教材
\超初心者向けでオススメな元Udemyの講座/
\キャンペーン時を狙えば安価で網羅的な内容が学べる(日本語訳あり)/
\Gitの基礎について無料で学べる/
おすすめの学習書籍
\実用的。image_pickerに関してかなり助けられた/
\Dartの基礎文法を素早くインプットできる/