Flutter: cameraパッケージをAndroid13でビルドすると、コントローラーの初期化でエラー

結論:暫定的にtargetSdkVersionだけ32に下げる(GitHubのイシューをウォッチしてバグ解消を待つ)

2022/12/12 Flutter エラー・バグ日記

 

以前、下記日記で、cameraの初回許可ダイアログ表示後にエラーになる問題の対処法を書いたが、実はAndroid13のエミュレーターでビルドすると、エラーが解消されていないことが分かった。

 

 

エラーログは以下のとおり。

E/SurfaceSyncer(30849): Failed to find sync for id=0
・・・・・・(中略)・・・・・・
E/MethodChannel#plugins.flutter.io/camera_android(30849): Failed to handle method call
E/MethodChannel#plugins.flutter.io/camera_android(30849): java.lang.NullPointerException: Attempt to invoke virtual method 'int android.media.EncoderProfiles$VideoProfile.getWidth()' on a null object reference
E/MethodChannel#plugins.flutter.io/camera_android(30849):     at io.flutter.plugins.camera.features.resolution.ResolutionFeature.configureResolution(ResolutionFeature.java:244)
・・・・・・(以下略)・・・・・・

 

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

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

 

initializeできない事が問題(許可ダイアログの表示は関係ない)

こちらの日記で書いたエラーは、初回起動時に許可ダイアログが表示され、アプリのライフサイクルが非アクティブになる事が原因だったので、アプリを再起動すれば、問題なくcameraのプレビューを表示できた。

 

しかし、今回のエラーはアプリを再起動しても解消しないので、許可ダイアログの表示は関係ないと分かった。

 

単純に、コントローラーを初期化するメソッド

 

cameraControllerO.initialize();

※「cameraControllerO」は「CameraController」のインスタンス名の例

 

が機能していない模様。

 

GitHubのissueに多くのコメントあり

以前も確認したイシューだが、同じ状況の報告だと思われる。

 

 

イシュー内のこちらのコメントでは、cameraパッケージを上書きする修正コードのインポートが提案されているが、これを使うとAndroid12で動かなくなると報告されており、採用し難い印象。

 

同じくイシュー内のこちらのコメントでは、android/app/build.gradleで、

 

  • compileSdkVersion 33
  • targetSdkVersion 32

 

のように、targetSdkVersionだけ32に下げることが提案されている。

 

確かに、自分のandroid/app/build.gradleは、compileSdkVersion、targetSdkVersionともに33になっていた

 

そこで、targetSdkVersionだけ32に下げてみると、確かにエラーが解消された

 

compileSdkVersion と targetSdkVersion は、一致させる必要がある思っていたが、

 

compileSdkVersion ≧ targetSdkVersion

 

となっていれば、問題ない模様(警告コメントは出るが)。

 

ただ、こちらのコメントにもあるとおり、targetSdkVersionが32のままだと、いずれGoogle Play Storeで表示されなくなる可能性があり、根本解決にはならなそう。

 

現時点で、本イシューはオープン中で、エラー報告に「いいね」マークがたくさんいるので、そのうち改善されることを期待。

 

他のAndroidバージョンでの状況

compileSdkVersion と targetSdkVersion が33であっても、Android11(SDK30)やAndroid12(SDK31)のエミュレーターでビルドすると、エラーにはならなかった。

 

なので、あくまでtargetSdkVersionが33の状態で、Android13(SDK33)でビルドした場合だけ、エラーが発生する模様。

 

 

とりあえず、targetSdkVersion 32で暫定対処しつつ、引き続きこのイシュー情報をウォッチしていこう。

 

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

 

リリースしたアプリ(全て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の要点をつかむためのクイックツアー

 

おすすめのソフトウェア

安くて高機能。アプリの独自ドメイン・紹介サイト構築に最適/

 

\アイコン作成・画面設計・クラウド保存...何でもできて超必須

Microsoft Public Affiliate Program (JP)(マイクロソフトアフィリエイトプログラム)

 

おすすめのハードウェア

\リーズナブルな価格で検証端末を確保できる/

 

\目線の高さを調節しやすく、疲れにくい

 

\キータッチが超静音で心地よい/

 

おすすめのサポートアイテム

\部屋の中を仕切って、集中できる開発環境を作れる/

 

\部屋の中でも大き過ぎず、長時間座っても疲れない

 

\バグと格闘した後の肩こりを解消してくれる/

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