【Flutter】Androidを実行したらエラーになった

2023/01/22に公開

Android 実行エラー

突然、Androidを実行したら以下のようなエラーになりました。
数日前まではちゃんと動いていたのに・・・。

Using hardware rendering with device Android SDK built for x86. If you notice
graphics artifacts, consider enabling software rendering with
"--enable-software-rendering".
Launching lib/main.dart on Android SDK built for x86 in debug mode...
e: /Users/macbookhiro/Desktop/Project/00FlutterProject/jpstockminimemo/android/app/src/main/kotlin/com/arafipro/jpstockminimemo/MainActivity.kt: (5, 7): Redeclaration: MainActivity
e: /Users/macbookhiro/Desktop/Project/00FlutterProject/jpstockminimemo/android/app/src/main/kotlin/com/example/jpstockmemo2/MainActivity.kt: (5, 7): Redeclaration: MainActivity

FAILURE: Build failed with an exception.

- What went wrong:
  Execution failed for task ':app:compileDebugKotlin'.

  > Compilation error. See log for more details

- Try:

  > Run with --stacktrace option to get the stack trace.
  > Run with --info or --debug option to get more log output.
  > Run with --scan to get full insights.

- Get more help at https://help.gradle.org

BUILD FAILED in 2s
Running Gradle task 'assembleDebug'... 3.2s
Exception: Gradle task assembleDebug failed with exit code 1

いろいろググって調べて試したけど、まったく解決せず。
調べて試したコマンドflutter cleanflutter pub getやエラーメッセージに載っているTry以降を試しても堂々巡りで手詰まりに・・・。
そこでちょっと違った方向から調べた結果、無事に実行することができました。

原始的な原因の発見方法

現在、「日本株ひとこと投資メモ」をリリースしています。

🔻🔻🔻iPhone版はこちら🔻🔻🔻
https://apps.apple.com/jp/app/日本株ひとこと投資メモ/id1665808160

🔻🔻🔻Android版はこちら🔻🔻🔻
https://play.google.com/store/apps/details?id=com.arafipro.jpstockminimemo

また姉妹アプリで「米国株ひとこと投資メモ」のリリースを予定しています。
そこで「米国株ひとこと投資メモ」ではAndroidが動いたので、お互いのソースコードを見比べることにしました。
Androidディレクトリ内の手を加えたソースコードに違いはありませんでした。
しかしMainActivity.ktが2つ存在することを発見!!
違うことはここだけでした。

エラー対処法

まず結論から言うとやはり赤枠のMainActivity.ktが複数あることで問題になっているようです。
(確かではありませんが・・・)
android/app/src/main/kotlin/com/arafipro/jpstockminimemo/MainActivity.kt
android/app/src/main/kotlin/com/example/jpstockmemo2/MainActivity.kt

そこで赤枠のMainActivity.ktを1つ削除しました。
するとなんと言うことでしょう。
無事にエラーを解消することができました。
ちなみに2つのうちMainActivity.ktのどちらを削除しても実行できました。

いつの間に2つになったのやら

実行できてOKでもよかったのですが、2つになった原因を調べてみました。
まずはgitの履歴を調べて見ました。
すると直近にiPhone版のビルドがうまくいかずに色々試した時、android/app/src/main/kotlin/com/arafipro/jpstockminimemo/MainActivity.kt
が新たに作成されてMainActivity.ktが2つになってしまったようです。

私が思う最適解

2つになった原因からjpstockminimemo/MainActivity.ktを削除しても、また新たに作成されるかもしれません。
そこでjpstockmemo2/MainActivity.ktを削除しました。

これでもうMainActivity.ktが複数になることはないはずです。

GitHubで編集を提案

Discussion