【Flutter】Androidを実行したらエラーになった
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 clean
、flutter pub get
やエラーメッセージに載っているTry
以降を試しても堂々巡りで手詰まりに・・・。
そこでちょっと違った方向から調べた結果、無事に実行することができました。
原始的な原因の発見方法
現在、「日本株ひとこと投資メモ」をリリースしています。
🔻🔻🔻iPhone版はこちら🔻🔻🔻
🔻🔻🔻Android版はこちら🔻🔻🔻
また姉妹アプリで「米国株ひとこと投資メモ」のリリースを予定しています。
そこで「米国株ひとこと投資メモ」では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
が複数になることはないはずです。
Discussion