FlutterのプロジェクトをAndroidアプリとしてビルドすると、
MainActivity.kt: (1, 9): Package name must be a ‘.’-separated identifier list
という謎のエラーが出て、ビルドに失敗することがあります。
このエラーメッセージは、androidフォルダ内にある「MainActivity.kt」の1行目にエラーが出ていることを示していますが、たしかにパッケージ名の最初の部分が赤くなっています。
イケている場合は、パッケージ名の部分が赤くなることはないので、その違いがわかります。
これは、Flutterのプロジェクトを作る時に設定する「Organization」欄で、独自ドメインを設定する際に起こる可能性があるトラップのようで、
これは、自分の保有する独自ドメイン(カンパニードメイン)を逆にしたものになります(例えば、ぼくは「minpro.net」というドメインを持っていますので、「net.minpro」に)。
この「Organization」は、最終的にはアプリストア(Androidの場合はGoogle Play、iOSの場合はApp Store)で自分のアプリを一意に識別する際のID(Androidの場合はアプリケーションID、iOSの場合はバンドルID)に使用され、
Organization + プロジェクト名
を使うことが慣習となっています。
(例えば、minpro.netというドメインを持つ私が「myapp」というプロジェクトをストアに上げる場合のIDは「net.minpro.myapp」となります)
独自ドメインの「.com」とか「.net」の部分が「.fun」になっているのがトラップの原因のようです。
「.fun」のドメイン名を使った場合、パッケージ名にする際には「fun.・・・」となりますが、実は「fun」はKotlin(Androidアプリを作るためのプログラミング言語。「kt」はKotlinファイルを意味する拡張子)で「関数」を意味する予約語になっているので、Androidアプリでビルドするとエラーになってしまうということなんだそうです。
じゃあ、「.fun」のドメイン名は使えないのかというと、そういうわけではなく、エラーが出た「MainActivity.kt」の1行目の「fun」の部分(Kotlinの予約語の部分)を「`(バッククオテーション)」でくるんでやると、解決します(赤い部分が消えます)。
Kotlinの予約語には、「fun」以外にも「as」だの「is」だの色々あるので注意が必要です。
(詳しくは、以下の動画で解説していますので、よろしければご覧ください)