Flutterのプロジェクトの中に含まれるAndroid
のプロジェクトで発生するCannot resolve symbol 'embedding'
をなんとかしたい!
概要
今回の記事では、Flutterのプロジェクトの中に含まれるAndroid
のプロジェクトで発生するCannot resolve symbol 'embedding'
をなんとかする手順を掲載する。
仕様書
環境
- Android Studio Giraffe | 2022.3.1
- Flutter 3.10.5
手順書
Androidネイティブでの処理が必要な場合、Flutterのプロジェクトの中に含まれるAndroid
のプロジェクトのソースを編集するんだけども、自動生成されたandroid/app/src/main/java/com.example/MainActivity.java
を開くと、このCannot resolve symbol 'embedding'
が発生する。
MainActivity.java
の例。
import io.flutter.embedding.android.FlutterActivity;
public class MainActivity extends FlutterActivity {}
このimport
行の部分でio.flutter.embedding
が名前解決できないということで小一時間悩んでた。
実はこれFlutterプロジェクトから直接開くものではなくて、別でAndroid StudioなどでFlutterのプロジェクトの中に含まれるディレクトリandroid
をプロジェクトとして開いて編集すればこのCannot resolve symbol 'embedding'
は発生しない。
一点注意があって、android
をプロジェクトとして開くとプロジェクトの更新を推奨してくるんだけども、プロジェクトを更新してしまうと親のFlutterのプロジェクトとのバージョンの整合性?が取れなくなってエラーになるのでStart AGP Upfrade Assistant
などでプロジェクトを更新しないようにする。間違って更新してしまった場合は、親のFlutterのプロジェクトの方を開くと修正してくれる。
まとめ(感想文)
Flutter独特の作法がそれなりにあるようなので、一度、体系的にFlutterを学んだほうが良いのかもしれないと思う今日この頃。