0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

FlutterでAndroid起動時クラッシュ、VSCode上でログも出ないときの解析方法

Posted at

背景

Flutterで開発しているアプリをAndroidで起動したところ、
VSCodeのターミナルにもログが一切表示されず、即クラッシュする という事象に遭遇しました。
iOSでは正常に動作しており、原因はAndroid特有のものでした。
こんな使い方もあるということで備忘録として残しておきます :grinning:

ログの取得

まずは adb logcat を使って、デバイス側のログを直接取得します。

adb logcat -d > log.txt

キーワードで絞り込み

log.txt には膨大なログが含まれるため、クラッシュ関連のキーワードだけを抽出します。

検索キーワード例(大文字小文字区別なし):

  • crash
  • fatal
  • error
  • exception
  • androidruntime
  • FATAL

AIで解析

取得した log.txt をGitHub CopilotやChatGPTなどのAIに渡し、
「上記キーワードを含む行を探して原因を推測してほしい」と依頼します。

この方法で、次の原因が特定できました。

原因

AndroidManifest.xml のアプリIDが

hogehoge.fugafuga.piyopiyo

となっているのに対し、

MainActivity クラスは

com.example.myapp

という別パッケージに存在していました。

AndroidManifestのアプリIDとMainActivityのパッケージが一致していない ため、
Androidが起動エントリポイントを見つけられず、起動時クラッシュしていました。


解決策

  • MainActivityのパッケージをAndroidManifestのアプリIDに合わせる
    または
  • AndroidManifestのpackageをMainActivityのパッケージに合わせる
// 修正後の例(hogehoge.fugafuga.piyopiyoに統一)
package hogehoge.fugafuga.piyopiyo

class MainActivity: FlutterActivity() { }

学び

  • ログが出ないクラッシュでも、adb logcat + キーワード抽出で原因を特定できる
  • AIを使えば、ログ解析のノイズ除去と原因推測が高速化できる
  • FlutterのAndroid側では、アプリIDとMainActivityパッケージの不一致はよくある落とし穴

まとめ

  • iOSで動くのにAndroidで即落ちする場合 → package不一致を疑う
  • VSCodeでログが出なくても、adb logcat とAI活用で爆速で解析し、修正も依頼してしまってください
  • 小さな構成ミスもAIの助けで短時間で発見できるのが良いですね :thumbsup:
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?