android ライセンスでエラー
セットアップの手順に flutter doctor --android-licenses
で正しく出力されることを確認する項目があるが、ここでエラーが発生した。
❯ flutter doctor --android-licenses
Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema
at com.android.repository.api.SchemaModule$SchemaModuleVersion.<init>(SchemaModule.java:156)
at com.android.repository.api.SchemaModule.<init>(SchemaModule.java:75)
at com.android.sdklib.repository.AndroidSdkHandler.<clinit>(AndroidSdkHandler.java:81)
at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:73)
at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:48)
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.annotation.XmlSchema
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
... 5 more
Android Studio で設定を行うと解消した。
- Android Studio で設定を開き
Android SDK
を選択 SDK Tools
タブを選択Android SDK Command-line tools
をチェックし Apply を実行
エミュレータの選択でエラー
Chrome でのデバッグはできるが、デバイスから Create Android emulator
を選ぶと No device definitions are available
というエラーが発生するが、そもそも create する必要はない。
リストに既に Pixel_3a
というエミュレータがあり、それを使えば良い。
セキュリティソフトのファイアウォール機能を切っておかないと emulator が動作しない
セキュリティソフトの種類にもよるが、自分の環境ではオフにする必要があった。
flutter_driver を追加した際に incompatible
エラーが発生する
ERR : Because every version of flutter_driver from sdk depends on args 1.6.0 and flutter_launcher_icons 0.9.0 depends on args 2.0.0, flutter_driver from sdk is incompatible with flutter_launcher_icons 0.9.0.
And because no versions of flutter_launcher_icons match >0.9.0 <0.10.0, flutter_driver from sdk is incompatible with flutter_launcher_icons ^0.9.0.
So, because hello_world depends on both flutter_launcher_icons ^0.9.0 and flutter_driver any from sdk, version solving failed.
pubspec.yaml で flutter_launcher_icons を古いバージョンに変更して解消した。
- flutter_launcher_icons: ^0.9.0
+ flutter_launcher_icons: ^0.8.1
参考: https://github.com/fluttercommunity/flutter_launcher_icons/issues/241
エラー Unexpected text 'late'
が発生する
Unexpected text 'late'.
Try removing the text.dart(unexpected_token)
dart sdk のバージョンが古いことが原因。 late
キーワードは dart 2.12.0 以降で使える。 pubspec.yaml でバージョン指定を変更すれば良い。
environment:
- sdk: ">=2.7.0 <3.0.0"
+ sdk: ">=2.12.0 <3.0.0"
参考: https://stackoverflow.com/questions/67113942/dart-unexpected-text-late
これを行うと以下のエラーが出るようになるが、これは null-safe ではないコードが残っているため。
エラー:
The non-nullable local variable 'driver' must be assigned before it can be used.
Try giving it an initializer expression, or ensure that it's assigned on every execution path.dart(not_assigned_potentially_non_nullable_local_variable)
以下のように、宣言時に初期化していないメンバー変数がある場合に発生する。これは late
を追加すると解消する。
- FlutterDriver driver;
+ late FlutterDriver driver;