Skip to main content

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 はエミュレータを公式のコマンドラインツールセットに合わせて配置しており、これは重要な理由です。Android の自動化は、1 つのインターフェイスがすべてのことを行うように装うのではなく、インターフェイスのスタックです。 Android の adb とエミュレータのツール デバイスの検査とシェルへのアクセスには「adb」を使用し、ライフサイクル制御とエミュレータ固有のコマンドのためにエミュレータコンソールを使用します。両方の役割を混ぜ合わせると、スクリプトが脆弱になる可能性があります。 Android Emulator command-line referenceターミナル制御に標準化する理由 adb 最初にこのことが重要になるのは、通常、魅力的なものではありません。 QA スクリプトはクリーンなデバイス状態が必要です。開発者は Linux と macOS で同じ AVD を起動する必要があります。 CI ランナーは、誰もがウィンドウを観察していないときにテスト対象を起動する必要があります。その時点で、エミュレータはデスクトップアプリのように動作しなくなり、インフラストラクチャのように動作します。

他の誤解を捨てるべきことは、エミュレータ用のターミナルが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 ワークフローでは、インストールやデバッグを始める前に同じ規範が適用されます。インストールやデバッグを始める前に

__CAPGO_KEEP_0__

アプリ用のAndroidのセットアップ 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.

A developer typing CLI commands on a laptop computer screen while working at a wooden desk.

The launch flags that still matter

A clean start is the difference between a sane run and a debugging session that eats your morning. -no-window In day-to-day work, the useful terminal flags are the ones that make boot behavior predictable, especially for CI and headless hosts. -no-snapshot is the headless path. -no-audio forces a clean state. -no-boot-anim and -gpu swiftshader_indirect trim unnecessary noise, and

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 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 __CAPGO_KEEP_0__ or hybrid app workflow, the same launch discipline applies before any debugging or install step begins.

A practical Android setup guide for __CAPGO_KEEP_1__ developers is worth keeping beside your emulator commands

Useful habit: ローカル作業用とCI用のLaunchコマンドを1つずつ用意する習慣を身につけよう。

パイプラインがコンピューターからすべての便宜的なフラグを継承しないようにしましょう。

ローカルデバッグがフレンドリーなまま、自動化が汚くならないようにするため、その区別が重要です。

Launchが安定したら、残りのターミナルワークフローがようやく信頼できるものとつながるのです。 エミュレータをADBシェルで動かす エミュレータが起動したら adb devices ADB adb -s emulator-5554 shell は、使用頻度が最も高いコントロールサーフェイスになります。

何が接続されているかを

示し、特定のポートで特定のインスタンスをターゲットにすることができるようになります。

複数の仮想デバイスを持つマシンでは、特定のターゲットを間違って選択しないようにするために、シリアル番号が重要です。 adb shell コマンドは綺麗です。アプリの動作をステップごとに追跡している場合、インタラクティブシェルにドロップし、ジョブが完了するまでそこに留まる。

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

このインストールガイドは便利な相棒

adb アプリワーク用にadbを使用せず、エミュレータライフサイクルワークを避ける adb shell sh /sdcard/run.sh Android自体内で実行されるコマンドの適切なレイヤーです。共有ストレージに保存されたスクリプトがある場合 run-as <package> 実際の自動化スタックに合う

デバッグビルドの場合、実行可能なファイルを提供し、rootを強制しないため、 adb ローカルホストのポート5554から5585までにのみリスニングし、コマンドの受け入れ前に認証が必要な独立したコントロールプレーンです。

実践的なルール: Androidのアクションの場合、最初に adb shellエミュレータ自体のアクションの場合、コンソールを使用します。

プラグイン層、プラットフォーム固有の動作、デバイス状態に関する質問を含むチームが、より広範なデバッグツールキットを使用すると、ターミナル作業が推測作業に変わるのを防ぐことができます。 このデバッグリソース adbワークフローとよく合致します。


adbを超えてエミュレータコンソールを使用する

エミュレータコンソールは独立したコントロールプレーンであり、その区別は重要です。Googleは、コマンドの受け入れ前に認証が必要なコマンド ローカルホストのポート5554から5585までにのみリスニングし、コマンドの受け入れ前に認証が必要な独立したコントロールプレーンです。実践的なルール: avd start, avd stop, avd status, pingAndroidのアクションの場合、最初に rotate 利用開始するとすぐに利用可能になります。 したがって、エミュレータのレベルで実行できないアクションを実行するのに適したツールです。 adb エミュレータ コンソール エッセンス

Android エミュレータをターミナル経由で制御するための4つの番号付きステップを示すインフォグラフィックのタイトル。

有効な情報を送信する前に認証してください。

Google のドキュメントでは、 telnet localhost console-portを接続します。 OKを待ちます。 auth auth_token を実行します。 これで、 ~/.emulator_console_auth_tokenに保存されているトークンを使用します。 そのトークン ファイルが存在しない場合、telnet 接続はランダム トークンでファイルを作成します。 たとえば、エフェメラル CI 環境では、ファイルを意図的に保存するか、または意図的にリセットする必要があります。 そうしないと、突然の認証エラーはほとんどの場合、状態管理のエラーです。

コンソールは、 help, help commandhelp-verbose は、エミュレータが受け入れるコマンドを確認するときに時間を節約するのに役立ちます。 それが良い習慣です。 それに頼るのではなく、適切なコマンドを推測するのではなく、 adb 後でカバーすることができます。

コンソールで何が表示されるかを知っておく

コンソール コマンドはライフサイクルとエミュレータ側の状態に使用されます。 avd start そして avd stop 明らかな例ではありますが rotate そして ping レスポンシビティの確認やデバイスの変更のシミュレーションなど、エミュレータはこの文脈ではインフラストラクチャと同じように動作します。なぜなら、起動時と共に、準備とシャットダウンをスクリプトで管理できるからです。

よくある間違いは、エミュレータのコンソールとAndroidのシェルを混同することです。距離から見ると似ているかもしれませんが、プロトコルは異なります。コンソールは認証済みでポートバウンドであり、シェルへのアクセスは通常、 adb shellで管理されます。したがって、スクリプトには異なるタイムアウトと異なるエラー処理が必要です。プラットフォーム固有のワークフローにおけるターミナルの信頼性を確保するためには このデバッグ リソース コンソールの準備チェックと組み合わせると、

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

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

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

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

rootアクセスはイメージ依存、魔法ではありません。システムイメージがrootアクセスを許可する場合、

rootアクセスはイメージ依存、魔法ではありません。システムイメージがrootアクセスを許可する場合、rootアクセスは便利ですが、Google Playストアの標準イメージではrootアクセスが快適にできる環境ではありません。カスタムAVDは、rootアクセスが必要な場合に限り、より柔軟な環境を提供します。 adb root BusyBoxは依然としてこの層で有用です。BusyBoxは、コマンドセットのギャップを埋め、通常は見逃されるコマンドを提供します。エミュレータ内でファイルの検査、デバイス側のスクリプティング、または迅速な診断を行う場合、BusyBoxはUnixツールキットを補完し、機械がより制限されないようにします。 adb shell su BusyBoxは依然としてこの層で有用です。BusyBoxは、コマンドセットのギャップを埋め、通常は見逃されるコマンドを提供します。エミュレータ内でファイルの検査、デバイス側のスクリプティング、または迅速な診断を行う場合、BusyBoxはUnixツールキットを補完し、機械がより制限されないようにします。このプラグインガイドでは、__CAPGO_KEEP_0__ プロジェクトの関連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アクセスが必要ではない場合があります。

rootアクセスは必要ありません。デバッグビルドの場合、すべての問題にrootアクセスが必要ではない場合があります。 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自体には問題ありません。 ローカルトラフィックの遅延がデバッグ中に何が見えるかを形作るというより広い視点については ネットワーク遅延の解説

デバッグの際に役に立つ補足読み物です。

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

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

廃止フラグ それがどれだけのことだったか 現代の代替
-audio-in 有効なオーディオ入力コントロール 現在のドキュメントで機能しなくなったため、起動スクリプトから削除してください
-audio-out 有効なオーディオ出力コントロール 現在のドキュメントで機能しなくなったため、起動スクリプトから削除してください
-enable-kvm 仮想化パスを要求しました 現在のドキュメントで機能しなくなったため、起動スクリプトから削除してください
-gps 制御されたGPSの動作 現在のドキュメントでは機能しないため、起動スクリプトから削除してください
-skin デバイスのスキンを設定 現在のドキュメントでは機能しないため、起動スクリプトから削除してください
-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 アプリレベルの作業と、状態がずれていくときのロールバックパス。 これが、モバイルの高速な反復の背後にある規範です。 どのアプリをテストしているか、または、制御されたリリースパイプラインを通じて、Capacitor アプリにアップデートを配信しているかを問うのではなく、エミュレータのターミナルがコントロールプレーンとして接続されていることを確認するのをやめました。

信頼性は利益です。エミュレータのターミナルがコントロールプレーンとして接続されていると、ウィンドウがレスポンシブであるかどうかを問うのではなく、デバイスの状態がテストで期待しているものと同じであるかどうかを問うようになりました。


モバイルアプリを開発している場合、信頼性の高いリリースとリカバリパス、エミュレータ駆動テストとともに、Capgo はチームに、ストアのレビューを待たずにJavaScript、CSS、設定、資産の修正を迅速に配信できるようにします。 詳しくは「Capgo」をご覧ください。 Capgo をご覧ください。 ここでは、ターミナル駆動のAndroidテストが重要なワークフローにおける、ライブアップデート、ロールバック保護、リリースコントロールがどのように組み込まれているかをご覧いただけます。 著者

Capacitor アプリのリアルタイム更新

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

今すぐ始めましょう

最新のブログ記事

Capgo は、プロフェッショナルなモバイルアプリを作成するために必要な最良の洞察を提供します。