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で開発)

 

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

おすすめの学習教材

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

 

 \キャンペーン時を狙えば安価で網羅的な内容が学べる(日本語訳あり)/

 

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

 

おすすめの学習書籍

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

 

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


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

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