[Flutter]Androidアプリのリリース前レポートで 「java.lang.StackOverFlow」というクラッシュエラーが出た場合の対処法

これは、FlutterのアプリをAndroidアプリとしてリリースしようとして、Google Play Consoleにアプリをアップロードして、Google先生に機械でバグがないかをチェックしてもらう「リリース前レポート」機能を使う際に起こる事象なのですが、

デバッグではちゃんと動いていたはずなのに、なぜかリリース前レポートの段階で

java.lang.StackOverflowError: stack size **KB

という謎のエラーが出て、アプリがクラッシュしてしまうということが起こる可能性があります。

この「StackoverFlow」エラーというのは、プログラムを実行する際に割り当てられるメモリを文字通りオーバーしてしまうエラーのことで、関数・メソッドを再帰的に呼び出した際に起こり得る事象のようです。

Thrown when the depth of the stack of the running program exceeds some platform or VM specific limit. Typically, this will occur only when a program becomes infinitely recursive, but it can also occur in correctly written (but deeply recursive) programs.

(スタックの詳しい説明はこちらから)

ですので、自分のプロジェクトを再度点検して、関数・メソッドの再帰呼び出しがないかチェックしないといけないと思ってしまうかもしれませんが、結論から言うと、このエラーは気にする必要ありません。

理由は、「リリース前レポート」機能がFlutterの充分に対応していないことに伴って発生しているエラーだからとのことです。Flutterのissueにも上がっていました。

(以下、機械翻訳)

Google Play Pre-Launchテストツールについて少し調べてみたところ、いくつかのことがわかりましたのでご紹介します。

Google PlayのプレローンチテストはFirebase Test Labが提供しており、アプリのテストにはRoboTestingを使用している。FlutterはOpenGLを使用しており、RoboTestingとは互換性がないため、RobotestingフレームワークはFlutterアプリをまだサポートしていません。

プレローンチテストでテストが実行されるデバイスは、アクセシビリティが有効になっていなかったり、UIAutomatorをサポートしていなかったりする場合があります。そのため、ロボテストが実行される際に、これらの点を探し、見つからなかったため、テストの失敗やクラッシュにつながることがあります。そのため、UiAutomatorやAccessibilityNodes、AccessibilityInteractionに関連したクラッシュが発生することがあります。

要するに、Google Play Pre-Launchで使用しているツールはFlutterアプリを完全にサポートしていないため、このようなクラッシュが発生するのです。この問題の例として、#32062 と #35341 を参照してください。

また、google_maps_flutter と UiAutomator を使用した同様のクラッシュがあり、これは #74197 に関連している可能性があり、あなたのクラッシュリストの1つと一致します。

ご報告いただいたクラッシュは、Flutter フレームワークやプラグイン側の問題ではなく、Google Play プレローンチツールでの Flutter アプリのサポートが限られている、またはサポートされていないことが原因なので、先にこの件を終了します。ツールのレポに関連する問題が報告されているかどうかを確認し、更新のためにそこをフォローアップすることをお勧めします。

(詳しくは、下の動画で解説していますので、よろしければご覧ください)

こんな記事も読まれています

おすすめコンテンツ




Flutter(フラッター)


みんプロ作成アプリ




TOP