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

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

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をコピーしました