Flutter プロジェクト直下にexampleディレクトリがあるとGeneratedPluginRegistrant.javaが生成されない

GeneratedPluginRegistrant.javaはflutter pub getで普通は作成されますが、 exampleディレクトリがプロジェクトの直下にあるときは作成されません。

この現象は普段開発している時には気付きにくいので凶悪です。

GeneratedPluginRegistrantはflutter cleanしても消えないので、 プロジェクト全体を消し去ってgit cloneし直すとか、 plugin(package)を追加する時じゃないと気付きません。

ただ、そこで気づいたのでは、遅くて、コミットをいくら戻しても生成されないなんてこともおきえます。

原因を突き止めた手順

flutter pub get -v で実行するとちょうど下記の部分のメッセージが出てないようです。

flutter/flutter_plugins.dart at c4a2a3e92d9b076cbcb7b76e7017410ddbc3bb5f · flutter/flutter · GitHub

生成されないパターン

[  +27 ms] Running "flutter pub get" in flutter_sample... (completed in 822ms)
[  +25 ms] "flutter get" took 1,107ms.
[ +138 ms] ensureAnalyticsSent: 131ms
[   +2 ms] Running shutdown hooks
[        ] Shutdown hooks complete
[        ] exiting with code 0

生成されるパターン

[  +31 ms] Running "flutter pub get" in flutter_sample... (completed in 782ms)
[  +86 ms] Generating /Users/takayuki/flutter_sample/android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java
[  +33 ms] "flutter get" took 1,162ms.
[ +141 ms] ensureAnalyticsSent: 134ms
[   +3 ms] Running shutdown hooks
[        ] Shutdown hooks complete
[        ] exiting with code 0

さらにflutterのリポジトリをexampleとかで検索すると下記のコードが出てきます。

https://github.com/flutter/flutter/blob/bce1706f1ca15248fb92d6000a8c4db3183a80b0/packages/flutter_tools/lib/src/project.dart#L245-L249

でこの辺でreturnされるから生成されないと思われます。

https://github.com/flutter/flutter/blob/bce1706f1ca15248fb92d6000a8c4db3183a80b0/packages/flutter_tools/lib/src/project.dart#L312-L314