No implementation found for void io.flutter.embedding.engine.FlutterJNI.nativeUpdateRefreshRate(float)のクラッシュ報告
結論:デバイス依存(OnePlus8Pro)の可能性あり、しばらく様子見(未解決)
2023/4/1 Flutter エラー・バグ日記
リリース済のアプリで、Firebase Crashlyticsから、以下のクラッシュ報告があった。
Caused by java.lang.UnsatisfiedLinkError
No implementation found for void io.flutter.embedding.engine.FlutterJNI.nativeUpdateRefreshRate(float) (tried Java_io_flutter_embedding_engine_FlutterJNI_nativeUpdateRefreshRate and Java_io_flutter_embedding_engine_FlutterJNI_nativeUpdateRefreshRate__F)
スタックトレースを見ると、Flutter JNI (Java Native Interface) に関連するエラーらしく、「nativeUpdateRefreshRate」というネイティブのメソッドが見つからないとことらしい。
※「JNI」をググると、Javaで開発されたプログラムと、他言語で開発されたプログラムを連携させるための標準的な方法を定めた仕様、というものらしい(参考)。
発生端末は「OnePlus8Pro」だった
4件のクラッシュ報告が来ていたが、デバイスを確認すると、全て「OnePlus8Pro」で、OSバージョンも全て「Android11」だった。
Chat-GPTに尋ねてみると、
- Flutterのバージョンや依存関係の問題
- 特定のデバイスやOSバージョンの問題
- ネイティブコードのビルド設定の問題
- ProGuardやR8によるコード圧縮・最適化の問題
の4つを提案してくれた。
Flutter SDKのバージョンは3.7.7、「targetSdkVersion」と「compileSdkVersion」は32、「minSdkVersion」は21にしていた。
iOSの実機・シミュレーター、AndroidのPixelの実機・エミュレーターでは、いずれも再現しないので、上記1、3、4は考えにくい印象。
自分の古いAndroid 11の端末でも問題なく動作するので、OSバージョンの問題ではなく、特定デバイスに起因した問題か。
しかし、「OnePlus8Pro」は持っていないので検証できない。。
最近のGitHubのイシューに報告あり(まだオープン中)
ダメもとで調べてみると、2週間ほど前に、「OnePlus8Pro」&「Android 11」(Flutterのバージョンは3.7.6)で、全く同じクラッシュ報告が発生した、とのイシューが上がっていた。
本スレッドでは、複数の人が同様の報告をしているが、残念ながらまだ解決はしていない(デバイス起因なのか否か、の判断も含め)。
その後、しばらくクラッシュ報告は来ていないので、このイシューの経過を見守りつつ、他のデバイスでもクラッシュ報告が来るようであれば、改めて対応を検討する事にする。
\一般的なエラー対処法をまとめた記事はこちら/
リリースしたアプリ(全てFlutterで開発)
個人アプリ開発で役立ったもの
おすすめの学習教材
\超初心者向けでオススメな元Udemyの講座/
\キャンペーン時を狙えば安価で網羅的な内容が学べる(日本語訳あり)/
\Gitの基礎について無料で学べる/
おすすめの学習書籍
\実用的。image_pickerに関してかなり助けられた/
\Dartの基礎文法を素早くインプットできる/