Flutter: Google Play Consoleのリリース前レポートでException java.lang.LinkageErrorのクラッシュ報告

※当サイトは、アフィリエイト広告を利用しています

結論:Android用の設定ファイルを3箇所修正する(バージョンの修正)

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

  

Google Play Consoleに更新したアプリをアップロードしたところ、リリース前レポートで、以下のようなクラッシュ報告が5件も来た。

 

Exception java.lang.LinkageError: Method void com.google.android.gms.internal.ads.k03.onPostExecute(java.lang.Object) overrides final method in class Lcom/google/android/gms/internal/ads/g03; (declaration of 'com.google.android.gms.internal.ads.k03' appears in /data/app/com.####.######-#################==/base.apk)
  at com.google.android.gms.internal.ads.zzflq.<init> (zzflq.java)
  at com.google.android.gms.internal.ads.zzflq.<clinit> (zzflq.java)
  at com.google.android.gms.internal.ads.zzflq.zzd (zzflq.java)
・・・以下同じような文が続く(略)・・・

 

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

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

 

端末やOSバージョンの偏りはなさそう

発生したとされている端末・バージョンは、以下のとおり。

 

  • Nokia Nokia 1 Android 8.1(SDK 27)
  • samsung SM-G981U1 Android 10(SDK 29)
  • DOCOMO SH-01L Android 9(SDK 28)
  • Google Pixel 2 (仮想) Android 13(SDK 33)
  • google Redfin 64-bit only Android 13(SDK 33)

 

送られてきた動画を見ると、確かに途中でアプリが落ちている。

 

実機やエミュレーターでテストしたときは問題なかったのだが。。

 

しかし、特定の端末やOSバージョンに偏って発生している訳ではないため、無視はできなそう。

 

数日前に同じ報告が上がっていた!

エラーメッセージ内には「ads」というキーワードが多くあるので、広告関係が要因の模様。

 

それ以上は理解できず、ググってみると、数日前に全く同じ報告をしている記事(StackOverflow)があった。

 

 

Flutterで、AdMob(google_mobile_ads)のバージョンを上げたところ、テストデバイスでは問題なかったのに、Google Play Consoleのリリース前レポートで、クラッシュ報告が来たとのこと。

 

自分も「google_mobile_ads」のバージョンを上げたところだったので、状況は同じ。

 

解決マークはついていないが、「これで自分は解決した」という内容が1つ回答されていた。

 

Android用の設定ファイルを3箇所修正するというもの。下記GitHubのイシューへのリンクも掲載されている。

 

 

このイシューが上がったのは2021年12月だが、まだオープン中で、同じ議論が続いていた。

 

イシューのやり取り内で、解決につながるコメントがある箇所は以下。

 

↓StackOverflowと同じ内容。これで解決したとのこと。

 

↓どの設定ファイルを修正すれば良いか、が分かりやすい。

 

上記内容に従って、下記のとおり、設定ファイルを修正してみた。

 

①「android/gradle/wrapper/gradle-wrapper.properties」の「distributionUrl=・・・」を以下を修正

 

distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip

 

※自分の場合は、修正前が「・・・gradle-6.7-all.zip」だった

 

②「android/build.gradle」(プロジェクトレベルの「build.gradle」)の「classpath」の1文を以下に修正

 

classpath 'com.android.tools.build:gradle:7.1.2'

 

※自分の場合は、修正前が「・・・gradle:4.1.0」だった

 

③「android/app/build.gradle」(アプリレベルの「build.gradle」)の「implementation」の1文を以下に修正

 

implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"

 

※一見、違いが分かりにくいが、自分の場合は、修正前が「・・・stdlib-jdk7・・・」だった

 

これらを修正した上で、再度、Google Play Consoleにアップロードしたところ、確かにリリース前レポートでのクラッシュ報告は解消された!

 

詳しいロジックは理解できていないが、つまるところ、「google_mobile_ads」のバージョンを上げると、「gradle」関連のバージョンも上げる必要があった、ということか。

 

なぜ実機やエミュレーターではエラーにならないのか、その点は不明なまま。。

 

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

 

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

 

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

おすすめの学習教材

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

 

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

 

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

 

おすすめの学習書籍

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

 

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


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

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