メイン コンテンツにスキップ

Androidエミュレーターターミナル: 完全実践ガイド

Androidエミュレーターターミナルのadbシェル、コンソールコマンド、ポートフォワーディング、トラブルシューティングのTipsをWindows、macOS、Linuxで2026年にマスターする。

マーティン・ドナディュー

マーティン・ドナディュー

コンテンツマーケター

Androidエミュレーターターミナル: 完全実践ガイド

エミュレータが開かれていますが、アプリは黒い画面に止まっており、GUIコントロールが役に立ちません。あるいは、CIジョブが表示されず、ただのターミナルプロンプトと仮想デバイスが残っています。デバイスが起動し、コマンドを受け入れる必要があります。毎回同じように動作する必要があります。その時点で、Androidエミュレーターターミナルは便利なツールからコントロールプレーンに変わります。

重要なシフトは単純です。ターミナルは単に同じボタンをクリックする別の方法ではありません。Googleのエミュレーターツールは、起動、シェルワーク、コンソールコントロールの別々の層を提供し、それぞれの層は異なるクラスの問題を解決します。彼らを1つのものとして扱うと、スクリプトが不安定になり、古いフラグがワークフローに混入し、CIがランダムに見えるが実際にはそうではないように壊れます。

目次

Androidエミュレータターミナルの必要性

GUIが凍結した場合、明らかなケースです。エミュレータウィンドウはまだ開いていますが、信頼できません。クリックすることはできず、そのワークフローはビルドサーバーにスケールしません。ターミナルはウィンドウが扱えなかった部分を処理します。再現性。Googleのエミュレータドキュメントでは、コマンドラインとコンソールを自動化とリモートコントロールのツールとして、起動シンタックスとして記述しています。 emulator -avd avd_name または emulator @avd_name、利用可能なオプションのフルリスト emulator -help Android エミュレータのコマンドラインリファレンス.

チームがターミナル制御に標準化する理由

最初にこのことが重要になるのは、通常、魅力的なものではありません。QA スクリプトには、クリーンなデバイス状態が必要です。開発者には、Linux と macOS で同じ AVD が起動する必要があります。CI ランナーには、テスト ターゲットを起動する必要がありますが、誰もがウィンドウを観察していない場合。

その時点で、エミュレータはデスクトップ アプリのように動作しなくなり、インフラストラクチャのように動作します。 実用的ルール:

タスクが繰り返される、ログに記録される、または失敗後に回復される場合、ターミナル パスを最初に使用すること。 Google もエミュレータを公式のコマンド ライン ツールセットに含め、ADB の横に置いています。これは重要な理由です。Android の自動化は、1 つのインターフェイスがすべてのことを行うように装うのではなく、インターフェイスのスタックです。 Android の ADB とエミュレータ ツール デバイスの検査とシェル アクセスには「adb」を使用し、ライフサイクル制御とエミュレータ固有のコマンドにはエミュレータ コンソールを使用します。両方の役割を混ぜると、スクリプトが脆弱になる原因となります。Android Emulator command-line reference adb ターミナル制御を標準化するチームの理由は何ですか。

他の誤解を捨てるべきことは、エミュレータ用のターミナルがGUIのラッパーであるということです。そうではありません。コンソールは認証済みで、localhostポートにバインドされており、コマンドとして avd start, avd stop, avd status, pingrotate Androidエミュレータコンソールの参照がサポートされています。そのため、プロダクション グレードのコントロール プレーンのように振る舞うのではなく、初心者用のサンドボックスのように振る舞うのではなく、

For hybrid and Capacitor workflows, that same discipline matters before you install or debug anything. See Capacitor ワークフローでは、インストールやデバッグを実行する前に同じ規範を守ることが重要です。

Android用の

__CAPGO_KEEP_0__ emulator -list-avdsアプリのセットアップ 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.

開発者がCLIコマンドを入力するパソコン画面を背景に、木の机の上で作業している姿が見えます。

起動フラグがまだ重要なもの

きれいなスタートは、正常に起動するか、デバッグセッションが朝食を食いちぎるかの差です。日常の作業では、CIやヘッドレスホストのために起動動作を予測できる有用なターミナルフラグが重要です。 -no-window ヘッドレスパス -no-snapshot クリーンな状態を強制する -no-audio そして -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 __CAPGO_KEEP_1__開発者向けの実用的Android設定ガイドは.

起動コマンドと一緒に保管しておく価値があります

デバイスのリストから始めましょう。メモリから始めましょう。

有用な習慣: __CAPGO_KEEP_0__のローカルワーク用とCI用のLaunchコマンドを1つずつ用意する。パイプラインがコンソールのすべての便宜的なフラグを継承しないようにしましょう。

ローカルデバッグがフレンドリーなまま、自動化が汚くならないようにするため、その区別が重要です。Launchが安定したら、残りのターミナルワークフローが信頼できるものにアタッチできるようになります。

ADBシェルでエミュレータを操作する

エミュレータが起動したら ADB は、使用頻度が最も高いコントロールサーフェイスになります。 adb devices 表示するものが何であるかを adb -s emulator-5554 shell 、そして

にターゲットを絞ることができます。複数の仮想デバイスを持つマシンでは、特定のポートとインスタンスをターゲットにすることが重要です。シリアル番号は、意図したエミュレータに自動化を指向させることができます。

ADBシェルコマンドフローの3ステップのイラストグラフィック

接続し、シェルが必要かどうかを判断する。 adb shell コマンドは綺麗です。アプリの動作をステップごとに追跡している場合、インタラクティブシェルにドロップし、ジョブが完了するまでそこに留まる。

adb push そして adb pull ファイルの移動を処理する adb install -r 繰り返しローカルテストの実用的なパスであり、 adb exec-out screencap スクリーンショットのキャプチャルートを信頼できるものとして提供します。スクリーンレコーディングは、失敗した実行から迅速なアーティファクトが必要な場合に、直接的なものです。 adb shell screenrecord パッケージインストーラーとローカルサイドロードワークフロー用途では、このインストールガイドは便利な相棒 アプリワーク用にadbを使用せず、エミュレータライフサイクルワークを避ける.

Android自体内で実行されるコマンドの適切なレイヤーです。共有ストレージに保存されたスクリプトがある場合、

adb 実際の自動化スタックに適合します。アプリプライベートファイルを提供し、rootを強制せずに、 adb shell sh /sdcard/run.sh デバッグビルドの場合、有用になります。 run-as <package> 制限は明確です。

__CAPGO_KEEP_0__ adb __CAPGO_KEEP_0__はエミュレータコンソールを置き換えず、より深いエミュレータライフサイクル制御やコンソールのみのアクションには適していない。ファイル転送、パッケージ管理、コマンド実行、クイックな調査に使用し、そこで止めればよい。

__CAPGO_KEEP_1__の実践的なルール: __CAPGO_KEEP_2__がAndroidに属するアクションの場合、 adb shell__CAPGO_KEEP_3__がエミュレータ自身に属するアクションの場合、コンソールを使用する。

__CAPGO_KEEP_4__がプラグイン層をまたいだチーム、プラットフォーム固有の動作、デバイス状態に関する質問に、より広範なデバッグツールキットが、ターミナル作業が推測作業に変わるのを防ぐ。 __CAPGO_KEEP_5__はadbワークフローとよく合致する。 __CAPGO_KEEP_6__はエミュレータコンソールは別の制御平面であり、その区別は重要である。Googleはlocalhostポート5554から5585にのみリスニングし、コマンドの受け入れ前に認証が必要であり、コマンドとして


__CAPGO_KEEP_7__、

__CAPGO_KEEP_8__ protectedTokenstargetLanguage avd start, avd stop, avd status, pingtexts rotate 利用開始するとすぐに利用可能になります。 したがって、エミュレータのレベルで実行することができないクリーンに表現できないアクションのための適切なツールです。 adb タイトルが付いたインフォグラフィック「エミュレータ コンソール エッセンス」が、Android エミュレータをターミナルで制御するための 4 つの番号付きステップを示しています。

有効な認証を行う前に、有用なものを送信しません。

Google のドキュメントでは、トークンを保存したファイルと接続することを推奨しています。

、待ってください telnet localhost console-port、そして OKトークンが保存されているファイルを使用して auth auth_token トークンファイルが存在しない場合、telnet 接続はランダムなトークンでファイルを作成します。 したがって、ephemeral CI 環境では、ファイルを意図的に保存するか、または意図的にリセットする必要があります。 予期せぬ認証失敗はほとんどの場合、状態管理の失敗です。 ~/.emulator_console_auth_tokenコンソールはもともと発見できるように設計されています。

、そして help, help commandは、ある理由であり、エミュレータが受け入れるコマンドを確認する場合に時間を節約するため、エミュレータが受け入れるコマンドを確認する際に良い習慣です。 それが、推測と希望を頼ることよりも、 help-verbose は、推測と希望を頼ることよりも、 adb __CAPGO_KEEP_0__

コンソールで知っているものは何ですか

ライフサイクルやエミュレータ側の状態のためのコンソールコマンドです avd start and avd stop は明らかな例ですが rotate は、レスポンシビティの確認やデバイスの変更のシミュレーションなどでも有用です。エミュレータは、この文脈ではインフラストラクチャと同じように動作します。起動、準備、シャットダウンを同じ場所でスクリプトすることができます ping エミュレータのコンソールとAndroidシェルを混同するのはよくある間違いです。距離から見ると似ているかもしれませんが、プロトコルは異なります。コンソールは認証済みでポートバウンドです。一方、シェルへのアクセスは通常

で管理されます。スクリプトには異なるタイムアウトと異なるエラー処理が必要です。プラットフォーム固有のワークフローにおけるターミナルの信頼性を確保するために adb shellこのデバッグリソース コンソールの準備チェックと組み合わせると良いでしょう。 自動化ゲート:

__CAPGO_KEEP_0__ プロセス起動のみでテストを開始しないでください。コンソールハンドシェイクが成功し、仮想デバイスが期待どおりの状態を報告するまで、テストを開始しないでください。

その一つの決定により、テストスイートに到達する前に、フラッキーの「起動したが準備ができていない」失敗を削減できます。

エミュレータ内でターミナルアプリとrootアクセス

場合によっては、VM内で作業する必要があります。そうすると、エミュレータ内に実際のターミナルアプリをインストールするのが最も簡単な方法であり、Termuxは標準的な選択です。エミュレータ上でデバイスシェル環境を提供し、設定画面をタップするのではなく、Unixワークフローに近い環境を提供します。

rootアクセスは許可されたイメージに依存します

rootアクセスは、魔術ではありません。許可されたシステムイメージでは、 adb root そして adb shell su rootアクセスが許可されているイメージでは、

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 rootアクセスが許可されているイメージでは、.

rootアクセスが許可されているイメージでは、

rootアクセスが許可されているイメージでは、 adb shell run-as <package> は、爆発半径を拡大することなく、app-プライベート ディレクトリを検査するのに十分な場合があります。 それは、作業フローを最小限の権限を持つツールと同期することの清潔な習慣です。

システムの書き込みが必要な場合は、システム パーティションは書き込み可能でなければなりません。それは、通常のエミュレータ作業用の、まったく別のクラスのセットアップです。 adb shell ホスト側

は、エミュレータ作業のベスト スタートポイントであり、ホストへのアクセスが十分でない場合にのみ、デバイス上のターミナルを特殊化したレイヤーとして扱うのがベストです。

ルールは簡単です。 まだバグを再現できる最小の権限を使用してください。 adb reverse tcp:8080 tcp:8080 ネットワーク、ポート フォワーディング、キーボード ショートカット adb forward ターミナルを優先したエミュレータ ワークフローは、ホスト境界を越えてトラフィックが流れると、実際に現実になります。

は、ローカル開発サーバーを実行しているマシンにエミュレータを指示する最も清潔な方法です。 また、エミュレータがホスト サービスに呼び戻すことを期待している場合もそうです。

は、デバイスからホストに流れるトラフィックを処理します。 adb reverse は、ホストに流れるトラフィックをデバイスに送信します。 adb forward エミュレータがホスト サービスに到達できるようにします。

は、デバイスのトラフィックをホスト ポートに向けます。 つまり、接続パスがどのコマンドを適用するかを決定します。 adb shell ip route とインターフェイスを検査する ifconfig. ルーティングが正常に見えますが、サービスが接続を拒否している場合、通常はホストリスナーまたは転送設定に問題があります。Android自体には問題ありません。 ローカルトラフィックの遅延がデバッグ中で見られるものの広い視野を求めている場合は ネットワーク遅延の説明

この説明は、デバッグ中で見られるものの広い視野を求めている方に役立ちます。

キーボード操作はターミナルの物語の一部です Googleのキーボードマッピングはエミュレータをより良いデスクトップターゲットに変える F2 メニューを開く ESC 戻る F7 Alt-Enter フルスクリーンを切り替えます。同様のマッピングはカメラ、音量、オリエンテーションコントロールもカバーしているため、デバイスの多くの動作はキーボード上に残り、ツールバーに埋もれていない。

ノートブックや大型モニターでは重要です。コントロール面がキーボードに住むと、エミュレータは、全日使用できるツールとして振る舞い始め、鼠を使用してウィンドウを押し付けているのではなく、ウィンドウを操作するツールとして振る舞い始めます。

廃止フラグ これが昔の機能 現代の置き換え
-audio-in 有効なオーディオ入力コントロール 起動スクリプトから削除してください。現在のドキュメントでは機能しません。
-audio-out 有効なオーディオ出力コントロール 起動スクリプトから削除してください。現在のドキュメントでは機能しません。
-enable-kvm 仮想化パスを要求 起動スクリプトから削除してください。現在のドキュメントでは機能しません。
-gps __CAPGO_KEEP_0__ 現在のドキュメントでは機能しないため、起動スクリプトから削除してください
-skin __CAPGO_KEEP_0__ 現在のドキュメントでは機能しないため、起動スクリプトから削除してください
-skindir スキンディレクトリを指し示しています 現在のドキュメントでは機能しないため、起動スクリプトから削除してください
-useaudio オーディオ使用を有効にしました 現在のドキュメントでは機能しないため、起動スクリプトから削除してください

Googleは現在のエミュレータドキュメントでは機能しないと記載されています。したがって、古いスニペットは新しいスクリプトにコピーされるとすぐに古くなります。 現在のエミュレータのコマンドラインノートまだ共有シェルスクリプトに残っている場合は、起動スクリプトから削除してテストを実行してください。

トラブルシューティングと2026年ターミナルワークフロー

ブラックスクリーン、ポートの競合、古いスナップショットが原因の通常のエラーの集まりです。症状と原因をマップすることで、直感的な修正が可能です。ハングアップのブートはスナップショットの状態を示唆し、コンソールの認証エラーはトークンファイルまたはハンドシェイクが同期していないことを意味します。 offline, unauthorized, KO: missing authhttps://__CAPGO_KEEP_0__.app

Screenshot from https://capgo.app

エミュレータがブラックスクリーンに永遠に止まっている場合、クリーンな起動パスで再起動し、古い状態を破棄してください。もし

「says」 adb 「or」 offline 「、」 unauthorizedデバイスを再接続し、ホストとエミュレータのインスタンスがまだ一致していることを確認してください。もしコンソールが KO: missing auth「、」

トークンファイルとハンドシェイクのパスを確認してください。コンソールはそのステップが正しいまでコマンドを受け付けません。

ポートの競合は通常、前のエミュレータが適切に終了しなかったことを示唆し、占有されたポートをクリアする必要があります。ブートが完了しない場合、スナップショットの漂流を仮定し、決定論的な開始を強制することで、2026年のターミナルワークフローを信頼できるようにすることができます。

ワークフローをシステムとして扱い、クリックのシーケンスとして扱わないでください adb shell For app-level work, and a rollback path when state drifts. That’s the discipline behind fast mobile iteration, whether you’re testing a native app or shipping updates to a Capacitor app through a controlled release pipeline.

Confidence is the gain. Once the emulator terminal is wired as a control plane, you stop asking whether the window is responsive and start asking whether the device state is exactly what your test expects.


If you’re building mobile apps that need reliable release and recovery paths alongside emulator-driven testing, Capgo gives teams a fast way to ship JavaScript, CSS, config, and asset fixes without waiting on store review. Visit Capgo to see how live updates, rollback protection, and release controls fit into a workflow where terminal-driven Android testing matters.

Capacitor アプリ向けリアルタイム更新

Capgo を使用して、ウェブレイヤーのバグが生じた場合、ユーザーはバックグラウンドで更新を受け取り、ネイティブの変更は通常のレビュー経路で残ります。アプリストアの承認待ちの日数を待つのではなく、修正を Capgo から配信してください。

はじめましょう

ブログの最新記事

Capgo を使用すると、プロフェッショナルなモバイルアプリを作成するために必要な最良の洞察を得ることができます。