Flutter: Execution failed for task ‘:app:checkDebugDuplicateClasses’.のエラー

結論:app/build.gradleのdependenciesに設定を追記する

2022/10/18 Flutter エラー・バグ日記

 

Android13対応を考慮して、AdMobのSDKを最新バージョンにすべく、「google_mobile_ads」パッケージを現時点最新の2.1.0に更新し、Androidエミュレーターでビルドしたところ、以下のエラーが発生した。

 

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:checkDebugDuplicateClasses'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.CheckDuplicatesRunnable
   > Duplicate class com.google.android.gms.internal.measurement.zzhx found in modules jetified-play-services-measurement-base-20.1.2-runtime (com.google.android.gms:play-services-measurement-base:20.1.2) and jetified-play-services-measurement-impl-20.0.2-runtime (com.google.android.gms:play-services-measurement-impl:20.0.2)

・・・(同じようなエラー文が続くので中略)・・・

     Go to the documentation to learn how to <a href="d.android.com/r/tools/classpath-sync-errors">Fix dependency resolution errors</a>.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 15s
Exception: Gradle task assembleDebug failed with exit code 1

 

本記事はライトな日記思考で書いているので、詳細説明はしておらず、基本、テキストのみで画像とかはあまり載せておりません。。m(_ _)m

解説記事ではないため、解決していない内容や、その時々の間違った解釈を述べてしまっている可能性が大いにありますので、何卒、ご了承ください。

 

多少のダウングレードをしても解消せず

リンク先のドキュメントを見ると、依存関係に問題がありそうだという事と、エラーメッセージの最後を見ると、gradleファイルに問題がありそうだ、という事ぐらいしか分からない。

 

先日、「google_mobile_ads」を「2.0.1」に更新したアプリでは、このエラーは出なかったので、試しに「2.0.1」までダウングレードしてみるも、やはり同じエラーが出た。。

 

アプリレベルのbuild.gradleに追記が必要らしい

調べてみると、以下の記事に、ほぼ同じエラーが報告されており、解決方法が示されていた(ありがとうございます!)。

 

 

「build.gradle」(プロジェクトフォルダ直下ではなく、「app」フォルダ内にある方)に、以下の追記が必要とのこと。

 

dependencies {
・・・略・・・
    // ↓これを追記する
    implementation platform('com.google.firebase:firebase-bom:30.1.0')
}

 

これでビルドしてみると、確かにエラーが解消された。

 

FirebaseのAndroid設定時にスキップしていた記述だった

しかし、全くロジックがわからない。。

 

いったい何の記述なのかを調べると、Firebaseの設定時に、「Flutterの場合は、パッケージのインストール時にカバーされるから無視していいよ」ということで、スキップしていた記述だった

 

 

スキップしていたので、きちんと読んでいなかったが、「Firebase BoM」というのをインポートする1文らしい。

 

そこで、「Firebase BoM」とは何なのか、調べてみると、こちらの公式サイトに説明があった。

 

 

どうやらFirebase関連のライブラリのバージョン管理をするものらしい。

 

今回は、AdMobのSDK更新で発生したが、Firebaseのパッケージと何らか関連があるらしい(AdMobのSDKは、元々「firebase_admob」パッケージで導入していたことが関係しているのだろうか、、?)。

 

Firebase関連のパッケージを更新すれば良かったかも(未検証)

試しに、「firebase:firebase-bom」というキーワードでプロジェクトフォルダ内を検索すると、Firebase関連のパッケージのコードに、上記と同じ1文が多く含まれていた。

 

例えば、「ios/.symlinks/plugins/firabase_core/android/build.gradle」には、

 

implementation platform("com.google.firebase:firebase-bom:${getRootProjectExtOrDefaultProperty("FirebaseSDKVersion")}")

 

のような1文があった。 

  

さらに、上の1文の中にある「FirebaseSDKVersion」というキーワードでプロジェクトフォルダ内を検索すると、「ios/.symlinks/plugins/firebase_core/android/gradle.properties」のファイルに、

 

FirebaseSDKVersion=29.0.4

 

という記述があった。

 

iosフォルダ内の情報ではあるが、どうやらFirebaseSDKVersionが、古いことが理由と思われる(本日記時点のFirebaseの設定画面だと、最新は「31.0.1」。前述のエラーを解消できたコードだと「30.1.0」)。

 

ということは、単にFirebase関連のパッケージ(「firebase_core」や「firebase_analytics」)を更新するだけで、解消したのかもしれない

 

試したいところだが、影響範囲が大きいので、後日また検証することにする。。

 

\一般的なエラー対処法をまとめた記事はこちら/

 

リリースしたアプリ(全てFlutterで開発)

暗記用マーカー – シンプル穴埋め問題作成

Google Play で手に入れよう
Download on the App Store

 

超即ToDo –最短2タップで通知登録できるタスク管理アプリ

Google Play で手に入れよう
Download on the App Store

 

かんたんプリント管理:アラート・OCR文字認識・検索機能を搭載

Google Play で手に入れよう
Download on the App Store

 

シンプルメモ帳「BasicMemo」 – 文字カウント、ワンタッチ入力、タグ管理等の機能を搭載

Macのデスクトップ版もリリースしました。

Google Play で手に入れよう
Download on the App Store

 

個人アプリ開発で役立ったもの

おすすめの学習教材

超初心者向けでオススメな元Udemyの講座/

 

\Gitの基礎について無料で学べる/

 

おすすめの学習書籍

実用的image_pickerに関してかなり助けられた/

 

Dartの基礎文法を素早くインプットできる/


Dart入門 – Dartの要点をつかむためのクイックツアー

 

おすすめのソフトウェア

安くて高機能。アプリの独自ドメイン・紹介サイト構築に最適/

 

\アイコン作成・画面設計・クラウド保存…何でもできて超必須

 

おすすめのハードウェア

\リーズナブルな価格で検証端末を確保できる/

 

\目線の高さを調節しやすく、疲れにくい

 

\キータッチが超静音で心地よい/

 

おすすめのサポートアイテム

\部屋の中を仕切って、集中できる開発環境を作れる/

 

\部屋の中でも大き過ぎず、長時間座っても疲れない

 

\バグと格闘した後の肩こりを解消してくれる/

タイトルとURLをコピーしました