新しいMacにAndroidStudioとFlutterを入れてみたけどエミュレータが起動しない、PATHや権限でつまずいて時間だけが過ぎて焦っていると感じている。
この記事を最後まで読むと短時間でMac上にFlutterアプリを起動するための具体的な一連手順、M1やM2チップ向けの実用ケア方法、よくあるつまずきの対処法が手に入り、迷わず開発に集中できる状態になります。
| 項目 | 内容 |
|---|---|
| 独自コンテンツ1 | 最短で起動するための実際に試した具体手順と必要なコマンドを順番に提示します。 |
| 独自コンテンツ2 | M1/M2チップ特有の落とし穴と安全な回避策を実際の経験に基づいて解説します。 |
| 独自コンテンツ3 | つまずいたときに使える切り分け手順とログの読み方をケース別に示します。 |
手順は丁寧に短くまとめてあるので順に進めれば設定は驚くほどスムーズに終わり、初回のハードルを越えてすぐにアプリ動作の確認ができるようになります。
Macエンジニア最初は戸惑って当然です。落ち着いて一つずつ手順をこなせば確実に動きますから安心してください。困ったときはログを味方にしましょう。
Mac上のAndroidStudioでFlutterアプリを確実に起動する手順


MacでAndroidStudioとFlutterを初めて動かすとき、Welcome画面や端末の選択で戸惑うことが多いですね。プロジェクトは開けるのにアプリが起動しないとすごく焦るのはよくあることです。
ここではNewFlutterProjectから既存プロジェクトのクローン、依存取得、実機接続までを短くまとめます。実際に動かすまでの最短ルートと現場で役立つちょっとしたコツを優しく案内します。
| 項目 | 内容 |
|---|---|
| 最短手順 | NewFlutterProjectまたはProjectfromVersionControl→flutterpubget→デバイス選択→Run |
| 実機接続のコツ | USBはドライバやケーブル確認を優先しWiFiはadbconnectを使うと便利 |
| よくある詰まり | pubgetの失敗やデバイス未認識はログとadbで原因を特定する |



初めてでも落ち着いて進められるように順を追って書いたのでゆっくりやってみてくださいね。小さな設定ミスで止まることが多いので一つずつ確認すれば必ず動きます。
新規作成と既存プロジェクトの共通手順


新規作成でも既存プロジェクトでも共通の流れがあると楽に進められます。鍵はプロジェクト取り込みと依存取得とデバイス選択の順番を守ることです。
まずソースを用意して画面下部のTerminalでflutterpubgetを実行して依存を揃えます。その後ツールバーでデバイスを選びRunボタンを押すとアプリが起動します。
Welcome画面でNew Flutter ProjectまたはFileからProject from Version Controlでクローンする
Welcome画面のNewFlutterProjectを選んでウィザードに沿って必要事項を入力します。FlutterプラグインとDartプラグインが有効になっているか確認してください。
FileからProjectfromVersionControlを選びリポジトリURLを入力してクローンします。認証が必要な場合は鍵やアクセストークンを先に用意してください。
下部のTerminalでflutter pub getを実行しツールバーのデバイスを選んでRunボタンを押す
画面下部のTerminalでflutterpubgetを実行して依存を取得します。失敗したらネットワークとプロキシ設定を確認してください。
ツールバーのデバイス選択からエミュレータか実機を選択します。実機が表示されない場合はadbで認識を確認してください。
右上のRunボタンを押すとビルドが始まります。初回はビルドに時間がかかるので進行ログを見ながら待ちましょう。
実機でのUSBとWi‑Fi接続の短い手順


実機で動かすならUSB接続とWiFi接続の両方に慣れておくと便利です。USBは確実に動きWiFiはケーブル不要で短時間の確認に向いています。
ここでは端末側でUSBデバッグを有効にする流れとadbを使ったWiFi接続の簡潔な手順を紹介します。問題が起きたときの確認ポイントも短く触れます。
端末でUSBデバッグを有効にしてUSB接続するかadb connectでWi‑Fi接続しAndroidStudioのデバイスから選んで実行する
端末の設定で開発者オプションを表示してUSBデバッグをオンにします。機種によって表示手順が異なるので端末の設定画面を確認してください。
ケーブルで接続するとAndroidStudioのデバイス一覧に実機が現れます。表示されない場合はケーブルや端末側の接続モードをチェックしてください。
WiFi接続はadbconnectを使います。端末のIPを確認してadbconnect端末IP:5555と入力して接続後AndroidStudioのデバイスから選んで実行します。
デバッグとホットリロードで詰まりを早く抜ける方法


コードが思った通りに動かないときは、ただ手を動かして時間だけが過ぎていくことがある。MacでAndroidStudioとFlutterを触っていると、画面は出るけれど期待の値が来ない場面で特に焦ることがある。
ここではブレークポイントとログを使った原因の絞り方と、HotReloadとHotRestartの使い分けで詰まりを早く抜ける具体的なやり方を、実際に役立った小技を交えて説明する。DebugウィンドウやLogcat,ツールバーの稲妻ボタンなど実際の操作も触れる。
手順はシンプルで少し慣れれば無駄に悩む時間を減らせる。さくっと詰まりを抜けて開発のリズムを取り戻そう。
ブレークポイントとログで原因を絞る


ブレークポイントは処理を止めて変数や流れをじっくり見るための最短ルートだ。条件を付ければ大量ループの中から目的の瞬間だけ止められるので無駄な待ち時間を減らせる。
ログは非同期処理や例外の発生順が追えるので、処理の順番やタイミングを確認するときに頼りになる。Debugウィンドウの変数表示とLogcatを組み合わせると原因に早くたどり着ける。
コード左のガターをクリックしてブレークポイントを置き虫アイコンのDebugで起動してDebugウィンドウとLogcatで値を確認する
コード左のガターをクリックして赤い点を置く。
AndroidStudioの虫アイコンでDebugを起動してブレークで止める。
VariablesやWatchesで中身を見てLogcatでログを照らし合わせる。
ホットリロードとホットリスタートの使い分け


HotReloadはコード変更を素早く反映して状態を保持するので、UI調整や軽いロジックの確認に特に向いている。短いサイクルで試して結果をすぐに確認できるのでテンポよく作業できる。
HotRestartはアプリを再起動して初期化処理をもう一度走らせるので、状態を一度クリアしたいときや初期化に依存する変更を反映したいときに使うと安心だ。状況に合わせて使い分けるとデバッグがぐっと速くなる。
ツールバーの稲妻ボタンでHot Reloadを即実行し状態が壊れたらRestartでHot Restartを使う
ツールバーの稲妻ボタンを押すと即座にHotReloadが動きUIの変更が反映される。短い確認サイクルに便利だ。
状態が壊れたと感じたら再起動ボタンでHotRestartを実行してアプリを再初期化する。問題が解消しやすくなる。
ビルドと署名フレーバーを切り替えて動作を確認する方法


フレーバー切り替えでビルド署名の違いに戸惑うことがありますよね。開発用の署名で動くけれど本番署名だとうまく動かないといった状況に直面すると気持ちがざわつきます。
ここではMac上のAndroidStudioでflavorと署名を切り替えて動作確認する手順を実体験に基づいてわかりやすく説明します。重要なのはflavorごとのキー設定を整え、Run構成に反映してから必ずApplyして起動することです。
Run設定でフレーバーとビルドタイプを切り替える実例


Run設定でflavorとビルドタイプを切り替えると、狙った環境だけを素早く確認できます。AndroidStudioのRunメニューからEditConfigurationsを開き、確認したいFlutterのRun構成を選んでください。
設定画面でBuildFlavorに使いたいflavor名を入れ、BuildModeでDebugまたはReleaseを選びます。変更後はApplyを押してからRunすると、そのflavorとビルドタイプで実機やエミュレータが起動します。
RunメニューのEdit ConfigurationsでFlutterのRun構成を開きBuild flavorやReleaseを設定してApplyしてからRunする
RunメニューからEditConfigurationsを選び、対象のFlutterRun構成を開きます。
BuildFlavorにflavor名を入力し、BuildModeでDebugまたはReleaseを選びます。必要なら起動ターゲットも指定します。
Applyを押して設定を保存しRunを実行します。エミュレータや実機でログを確認して期待どおりに動くか確かめます。
応用パフォーマンス診断とネイティブ連携の確認


エミュレータでフレームがカクついたり、ネイティブ側にメッセージが届いているか分からず焦ることはよくあります。Macの前でログを追いかけながら手が止まる気持ち、よく分かります。まずは落ち着いて順番に確認していきましょう。
Flutterのプロファイリングとネイティブ連携を合わせて扱うと、原因の絞り込みがぐっと早くなります。紹介する手順は実務で試されている方法を優先し、再現しやすいポイントに絞ってまとめています。
特にタイムラインのイベントをネイティブのLogcatログと結びつけるコツや、プロファイル実行時の注意点を実体験に基づきお伝えします。最後に短いチェックリストを用意するので、1つずつ確かめながら進めてください。
プロファイリングとMethodChannelで動作を確かめる


Flutter PerformanceやOpen DevToolsでCPUやメモリ、フレームタイムを記録すると、どの処理で時間がかかっているかが見えるようになります。特にタイムラインビューではレンダリングや非同期処理の流れが分かりやすいです。プロファイルモードで実機を使うと実際の負荷に近い結果が得られます。
MethodChannelでDartからネイティブを呼び、ネイティブ側で明示的にログを出すと呼び出しとネイティブ処理を対照できます。タイムスタンプを照合するとどの呼び出しがボトルネックか直感的に分かります。
Flutter PerformanceやOpen DevToolsで記録を取りMethodChannelを実装してAndroidのLogcatで通信を確認する
AndroidStudioのFlutter PerformanceかOpen DevToolsで記録を開始し、実機かエミュレータで問題の操作を再現してください。
DartでMethodChannelを作りinvokeMethodを呼び、Android側でsetMethodCallHandlerを用意してLog.dで受信を出力してください。
AndroidStudioのLogcatかadb logcatでタグやタイムスタンプを絞り、タイムライン上のイベントとログを照らし合わせて動作を確かめてください。
よくある質問


- AndroidStudioでエミュレーターが起動しない
ハードウェアアクセラレーションが有効かとHAXMの有無を確認してください。AppleSiliconのMacではHypervisor.frameworkやarm系のsystemimageを使う必要があります。flutterdoctorで出ているエラーを見れば原因が早く分かります。
- flutterdoctorでAndroidライセンス承認エラーが出る
ターミナルでflutterdoctor–android-licensesコマンドを実行してyで承認してください。SDKの場所が違うと反映されないのでANDROID_SDK_ROOTを.zshrcに正しく書いてからターミナルを再起動してください。
- M1M2のMacで気をつけることは何か
AppleSiliconはarm64バイナリが主流なので、エミュレーターはarm用イメージを選ぶかRosettaでAndroidStudioを起動してください。HomebrewやFlutterはarm用のインストール先を使うとトラブルが減ります。
- zshでPATHが通らないときはどうする
.zshrcにFlutterとAndroidSDKのパスを追加してターミナルを再起動してください。必要ならexportPATHの行を追記してsourceで反映させると確実です。
- ビルドやエミュレーター起動が遅いときの改善策はあるか
Gradleデーモンを有効にしAndroidStudioの不要なプラグインを無効化すると改善することがあります。エミュレーターはQuickBootやスナップショットを使うと起動が早くなります。
まとめ


まずはお疲れさまです。MacでAndroidStudioとFlutterを動かすと、エミュレータやPATH設定で心配になることが多いはずだ。この記事は実際に試した手順と小ネタを中心に、迷いを減らすようにまとめてある。
要点は3つで、AndroidStudioの初期セットアップ、FlutterSDKとPATHの設定、エミュレータか実機での起動確認だ。設定場所やよくあるエラーの対処法を具体的に書いてあるので、そのまま試せば動く確率が高い。
いざというときはまずログとadbで状況を確認してほしい。バージョン差で挙動が変わることがあるので、macOSとAndroidStudioのバージョンは控えておくとあとで助かる。



焦らなくて大丈夫です。手順を一つずつ丁寧にやれば必ず前に進みます。困ったときのチェックポイントも用意してあるので安心してください。
注意点としてmacOSやAndroidStudioのマイナーバージョンで挙動が変わることがあるので、環境情報はメモしておいてください。
