エミュレータが開かれていますが、アプリは黒い画面に停止し、GUI コントロールは役に立ちません。CI ジョブが表示されず、ターミナル プロンプトと仮想デバイスが表示され、コマンドを受け入れる必要があります。デバイスは毎回同じように動作する必要があります。その時点で、Android エミュレータ ターミナルは便利なツールからコントロール プレーンに変わります。
重要なのは簡単です。ターミナルは単に同じボタンをクリックする別の方法ではありません。Google のエミュレータ ツールは、起動、シェル作業、コンソール制御の別々の層を提供し、それぞれの層は異なるクラスの問題を解決します。層を 1 つとして扱うと、スクリプトが不安定になり、古いフラグがワークフローに混入し、CI がランダムに破壊されるように見えるが実際にはそうではないことになります。
目次
- Android エミュレータ ターミナルを使用する必要性
- コマンド ラインからエミュレータを起動する
- エミュレータを adb シェルで制御する
- エミュレーターコンソールの使用方法 (adb を超えて)
- エミュレータ内でターミナルアプリとrootアクセス
- ネットワーキング、ポートフォワーディング、キーボードショートカット
- 2026 年のターミナルワークフローとトラブルシューティング
Android エミュレータ ターミナル
GUI が凍結しているのは明らかなケースです。エミュレータ ウィンドウはまだ開いていますが、信頼できません。クリックすることはできません。ウィンドウのフローはビルド サーバーにスケールしません。ターミナルはウィンドウが扱うことができない部分を処理します。再現性が必要なタスクは、ターミナル パスを最初に使用する必要があります。 emulator -avd avd_name or emulator @avd_nameまたは emulator -help Android エミュレータ コマンドライン リファレンス.
Android エミュレータ コマンド ライン リファレンス
チームがターミナル コントロールを標準化する理由
最初にこのことが重要になるのは、通常、魅力的なものではありません。QA スクリプトがクリーン デバイス ステートが必要な場合、開発者が Linux と macOS で同じ AVD を起動したい場合、または CI ランナーがテスト ターゲットを起動する必要がある場合、エミュレータはデスクトップ アプリのように振る舞わなくなり、インフラストラクチャのように振る舞います。 実用的なルール:
タスクが繰り返される、ログされる、または失敗後に回復される場合、ターミナル パスを最初に使用すること。 adb adb Android adb とエミュレータツール. 使用 adb デバイスの検査とシェルへのアクセスに使用し、次にエミュレータコンソールを使用してライフサイクル制御とエミュレータ固有のコマンドを実行します。 それらの役割を混ぜると、スクリプトは脆弱になります。
エミュレータ端末はGUIのラッパーであると誤解されているのですが、それではありません。コンソールは認証済み、localhostポートにバインドされ、 avd start, avd stop, avd status, ping, and rotate Android エミュレータコンソールのリファレンスなので、プロダクション グレードの制御プレーンのように動作し、初心者用のサンドボックスではありません。
ハイブリッドおよびCapacitorワークフローでは、インストールやデバッグを始める前に同じ規律が必要です。 Android のセットアップは Capacitor アプリ用です。 Android
アプリのセットアップ
のセットアップ側を参照してください。通常、エミュレータ セッションの背後で実行されます。 emulator -list-avds、AVDを選択し、 emulator -avd <name> または emulator @<name>. If the path to the binary isn’t on your shell PATH, find it inside the Android SDK’s emulator directory on Windows, macOS, or Linux, then run it directly from there.

Capacitorライブアップデートの代替
、 -no-window Capawesomeの代替 -no-snapshot 、 -no-audio and -no-boot-anim 、 -gpu swiftshader_indirect コンサルティングサービス
That combination is the difference between “the emulator started” and “the emulator started in a way that a pipeline can trust.” The launch command becomes part of your test contract, not just a convenience wrapper. If you’re bringing up a device for a Capacitor or hybrid app workflow, the same launch discipline applies before any debugging or install step begins. A practical Android setup guide for Capacitor developers is Androidエミュレータ用ターミナル.
デバイスリストから始めましょう
よく見る間違いは、機械が持っていることを確認する前に、仮想デバイスのリストを表示することです。AVDのリストを表示することで、必要なイメージが存在し、シェルがそれを見つけることができるかどうかを確認できます。次に、1台の知っているデバイスを起動し、起動パスを観察し、最後にフラグを調整します。
習慣的なこと: ローカル作業用にクリーンな起動コマンドを1つ、CI用に厳格なコマンドを1つ維持しましょう。パイプラインがあなたのノートパソコンのすべてのコンビニエンスフラグを継承しないようにしましょう。
ローカルデバッグはフレンドリーですが、自動化はスロッピーになるのを防ぎましょう。起動が安定したら、残りのターミナルワークフローが信頼できるものにアタッチできるようになります。
エミュレータをADBシェルで動かす
エミュレータが起動したら ADB は、よく使うコントロールサーフェイスになります。 adb devices は、どのデバイスが接続されているかを表示し、 adb -s emulator-5554 shell を使用して、特定のインスタンスに特定のポートにアクセスできます。複数の仮想デバイスを持つマシンでは、一般的なコマンドが間違ったターゲットに当たる可能性があるため、シリアル番号は、意図したエミュレータにアクセスするように自動化を指示します。

接続し、シェルが必要かどうかを判断する
1 回限りのコマンドとインタラクティブ シェルの区別は、初めて見ると思うほど重要です。設定を確認したりファイルを収集したりする必要がある場合、単一のコマンドが綺麗です。アプリの動作をステップごとに追跡する必要がある場合、インタラクティブ シェルにアクセスし、作業が完了するまでそこに残ります。 adb shell と
adb push and adb pull 、繰り返しローカルテストの実行に最も実用的で、信頼できるスクリーンショットのキャプチャルートを提供します。 adb install -r 、失敗した実行から必要なアーティファクトを取得する必要がある場合、スクリーンレコーディングも同様に直接アクセスできます。 adb exec-out screencap パッケージインストーラーとローカルサイドロードワークフローの場合、このインストールガイドは便利な相談相手となります。 adb shell screenrecord アプリの作業に adb を使用するのではなく、エミュレータのライフサイクル管理に使用する は、Android 自身内で実行されるコマンドの適切なレイヤーです。共有ストレージに保存されているスクリプトがある場合.
は、Android 自身内で実行されるコマンドの適切なレイヤーです。共有ストレージに保存されているスクリプトがある場合
adb は、Android 自身内で実行されるコマンドの適切なレイヤーです。共有ストレージに保存されているスクリプトがある場合 adb shell sh /sdcard/run.sh 実際の自動化スタックに適合する。 また、これはレイヤーでもある。 run-as <package> デバッグ ビルドの場合に役立ちます。アプリ プライベート ファイルを提供するため、ルートを強制せずにアプリ プライベート ファイルを提供します。
制限は明確です。 adb エミュレータ コンソールは、エミュレータ コンソールを置き換えるものではなく、デプサーキューム ライフサイクル制御やコンソールのみのアクションには適していません。ファイル転送、パッケージ管理、コマンド実行、クイック リコナイサンスに使用してください。
実用的なルール: アクションが Android に属する場合、最初に
adb shellアクションがエミュレータ自体に属する場合、コンソールを使用します。
プラグイン層、プラットフォーム固有の動作、デバイス状態に関する質問を含むチームが、より広範なデバッグ ツールキットを使用して、端末作業が推測に変わるのを防ぎます。 このデバッグ リソース ADB ワークフローとよく合います。
エミュレータ コンソールの使用: ADB を超えて
エミュレータ コンソールは別の制御平面であり、その区別は重要です。 Google は、localhost ポートのみにリスニングしていることをドキュメント化しています 5554 から 5585, コマンドが受け入れられる前に認証が必要であり、コマンドの例として avd start, avd stop, avd status, ping, そして rotate 利用可能になります。 そのため、エミュレータのレベルで実行するアクションを表現するには適切なツールです。 adb Android エミュレータをターミナルで制御するための基本的な図表が示されたインフォグラフィックのタイトル。

Google のドキュメントでは、
に接続し、 telnet localhost console-portを待ち、 OKを実行します。 これは、 auth auth_token に保存されているトークンを使用します。 そのトークン ファイルが存在しない場合、telnet 接続はランダムなトークンでファイルを作成します。 ephemeral CI 環境では、意図的にファイルを保存するか、意図的にファイルをリセットする必要があります。 予期せぬ認証エラーはほとんどの場合、状態管理のエラーです。 ~/.emulator_console_auth_token5554 から 5585
コンソールは見つけることができます。 help, help command、そして help-verbose は理由があり、時間を節約するために、エミュレータが受け入れるコマンドを確認するときに便利です。そのほうがよい習慣です。 adb は後で補うことができます。
コンソールのコマンドとは何かを知っておく
はライフサイクルとエミュレータ側の状態です。 avd start 、 avd stop は明らかな例ですが、 rotate 、 ping はレスポンシビティを確認したり、デバイスの変更をシミュレートしたりするときにも便利です。エミュレータはこの文脈ではインフラストラクチャと同じように動作します。なぜなら、起動と同じ場所でスクリプトで待機とシャットダウンをスクリプトすることができるからです。
エミュレータのコンソールとAndroidシェルの混同はよくある間違いです。見た目は似ていますが、プロトコルは異なります。コンソールは認証済みでポートバインドされていますが、シェルアクセスは通常は adb shellを介して処理されます。スクリプトには異なるタイムアウトと異なるエラー処理が必要です。プラットフォーム固有のワークフローにおけるターミナルの信頼性のために このデバッグリソース コンソールの準備チェックと組み合わせると、効果が高まります。
良い自動化ゲート: プロセス起動のみでテストを開始しないでください。コンソールハンドシェイクが成功し、仮想デバイスが期待どおりの状態を報告するまで、テストを開始しないでください。
エミュレータ内でターミナルアプリとrootアクセス
エミュレータ内でターミナルアプリとルートアクセス
rootアクセスはイメージ依存
rootアクセスはイメージ依存であり、魔術ではありません。システムイメージが許可する場合、
そして adb root and adb shell su BusyBoxはこの層でまだ有用です。コマンドセットの欠陥を埋めることで、通常は見逃すコマンドを補完します。エミュレータ内でファイルの検査、デバイス側のスクリプティング、またはクイック診断を行う場合、Unixツールキットを補完することで、機械がより制限されないようにします。関連するrootチェックは__CAPGO_KEEP_0__プロジェクトで議論されています
BusyBox is still useful in this layer because it fills in gaps in the command set you’d otherwise miss. If you’re doing file inspection, device-side scripting, or quick diagnostics inside the emulator, a fuller Unix toolkit makes the machine feel much less constrained. The related root checks for Capacitor projects are discussed in このプラグインガイド.
アプリプライベートアクセスを使用して問題を拡大する前に
「すべての問題に根本的な解決策が必要なわけではありません。デバッグビルドの場合、」 adb shell run-as <package> システムの書き込みが必要な場合は、システムパーティションが書き込み可能でなければなりません。これは、通常のエミュレータワークでは別のクラスのセットアップです。デバッグのためのホスト側
エミュレータのワークフローは、ホスト境界を越えてトラフィックが必要になるタイ点で実際に現れます。 adb shell ローカル開発サーバーを実行しているマシンにエミュレータを指示するには、ネットワーキング、ポートフォワーディング、キーボードショートカット
エミュレータをローカル開発サーバーに指示するには、ネットワーキング、ポートフォワーディング、キーボードショートカット
エミュレータからホストにトラフィックを送信する必要がある場合、 adb reverse tcp:8080 tcp:8080 問題を解決する前に、適切な方向性を選択する adb forward ネットワーキング問題をすべてエミュレータの問題として呼ぶと、時間が浪費されます。実際には、ポート方向が正しくありません。
ネットワーキング、ポートフォワーディング、キーボードショートカット
ネットワーキング、ポートフォワーディング、キーボードショートカット adb reverse エミュレータはホストサービスにアクセスできるようにしますが adb forward デバイスのトラフィックはホストポートに向けられます。接続パスはどのコマンドが適用されるかを決定します。
接続性がまだ不明瞭な場合は、VM内にあります。 adb shell ip route ルーティングテーブルを確認し、 ifconfigインターフェースを検査してください。 ルーティングが正常に見えますが、サービスがまだ接続を拒否している場合は、通常はホストリスナーまたは転送設定に問題があります。Android自体には問題はありません。 ローカルトラフィックの遅延がデバッグ中に何が見えるかを形作るというより広い視点については、
ネットワーク遅延の説明書
は便利な読み物です。 F2 メニューを開く ESC Backキーとして機能します。 F7 Power、Enterキーをハンドルし、 Alt-Enter フルスクリーンを切り替えます。カメラ、音量、オリエンテーション制御もカバーされるため、デバイスの多くの動作はキーボードに残り、ツールバーに埋もれません。
ノートブックや大型モニターでは重要です。コントロール面がキーボードに住むと、エミュレータは全日使用できるツールとして振る舞い始め、ウィンドウをマウスでずらす必要がなくなります。
| 廃止フラグ | 元の動作 | 現代の置き換え |
|---|---|---|
-audio-in |
有効なオーディオ入力制御 | 起動スクリプトから削除してください。現在のドキュメントでは機能しません。 |
-audio-out |
有効なオーディオ出力制御 | 現在のドキュメントでは機能しなくなったので、起動スクリプトから削除してください |
-enable-kvm |
仮想化パスを要求しました | 現在のドキュメントでは機能しなくなったので、起動スクリプトから削除してください |
-gps |
GPSの動作を制御しました | 現在のドキュメントでは機能しなくなったので、起動スクリプトから削除してください |
-skin |
デバイスのスキンを設定しました | 現在のドキュメントでは機能しなくなったので、起動スクリプトから削除してください |
-skindir |
スキンディレクトリへの参照を設定しました | 現在のドキュメントでは機能しなくなったので、起動スクリプトから削除してください |
-useaudio |
オーディオ使用を有効にしました | 現在のドキュメントでは機能しなくなったので、起動スクリプトから削除してください |
Googleは現在のエミュレータドキュメントでは機能しなくなったとリストしています。したがって、古いスニペットは新しいスクリプトにコピーされるとすぐに古くなります 現在のエミュレータのコマンドラインのメモまだ共有シェルスクリプトに残っている場合は、削除して再度起動してください。
トラブルシューティングと2026年ターミナルワークフロー
ブラックスクリーン offline, unauthorized, KO: missing auth通常の障害クラスタはブラックスクリーン、ポートの競合、古いスナップショットです。症状と原因をマッピングすると、修正は簡単です。ハングアップしたブートはスナップショットの状態を指し、コンソールの認証失敗はトークンファイルまたはハンドシェイクが同期していないことを意味します。

時間を浪費する障害のための1行の修正
エミュレータがブラックスクリーンにたどり着かない場合は、クリーンな起動パスで再起動し、古い状態を破棄してください。 adb または offline or unauthorizedエミュレータがブラックスクリーンにたどり着かない場合は、クリーンな起動パスで再起動し、古い状態を破棄してください。 KO: missing authエミュレータがブラックスクリーンにたどり着かない場合は、クリーンな起動パスで再起動し、古い状態を破棄してください。
ポートの競合は、前のエミュレータが適切に終了しなかったことを示すことが多いので、占有ポートをクリアする必要がある。次の実行前に、ブートが完了しない場合は、スナップショットの漂流を仮定し、決定論的な開始を強制する。2026年のターミナルワークフローが信頼性のあるものになるのは、この習慣が個々のフラグよりも大きな要因だからだ。
ワークフローをシステムとして扱う
予測可能なブート、認証済みコンソールアクセス、 adb shell アプリレベル作業用と、状態の漂流が発生した場合のロールバックパス。これが、テスト用にネイティブアプリをテストしたり、制御されたリリースパイプラインを通じて Capacitor アプリにアップデートを配信したりする際の迅速なモバイル開発の規範である。
信頼性が得られる。エミュレーターターミナルがコントロールプレーンとして構成されると、ウィンドウがレスポンシブかどうかを問うのではなく、テストが期待するデバイス状態が正確かどうかを問うようになる。
Capgo を使用すると、リリースと回復パスの両方が必要なモバイルアプリを開発するチームは、エミュレータードライブテストに伴う Capgo アプリのJavaScript、CSS、config、およびアセットの修正を待つことなく、迅速に配信できる。Visit Capgo コントロールプレーンとしてのエミュレーターターミナルを構成すると、ウィンドウがレスポンシブかどうかを問うのではなく、テストが期待するデバイス状態が正確かどうかを問うようになる。