メイン コンテンツにジャンプ

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

Android エミュレータ ターミナルのマスター

マーティン ドナディュー

マーティン ドナディュー

コンテンツ マーケター

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

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

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

目次

Androidエミュレータターミナルが必要な理由

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

なぜチームがターミナル制御を標準化するのか

最初にこのことが重要になるのは、通常、魅力的なものではありません。QA スクリプトがクリーンなデバイス状態を必要とする場合、開発者が Linux と macOS で同じ AVD を起動する必要がある場合、または CI ランナーがテスト対象を起動する必要がある場合、誰もウィンドウを観察していない場合にそのような状況が発生します。 その時点で、エミュレータはデスクトップアプリのように動作しなくなり、インフラとして動作します。

実用的なルール: タスクが繰り返される、ログが取られる、または失敗後に回復される場合、ターミナルパスを最初に使用すること。

Google もエミュレータを公式のコマンドラインツールセットに含め、ADB と並べ、Android オートメーションがインターフェイスのスタックであることを示しています。 これは、1 つのインターフェイスがすべてのことを行うように装うのではなく、 Android ADB とエミュレータのツール を使用します。デバイスの検査とシェルへのアクセスには を使用し、エミュレータのライフサイクル制御とエミュレータ固有のコマンドのためにエミュレータコンソールを使用します。 それらの役割を混ぜ合わせると、スクリプトが脆弱になる原因となります。Android adb ADB

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

ハイブリッドと Capacitor ワークフローでは、インストールやデバッグを開始する前に同じ規範を守ることが重要です。詳細は Android の Capacitor アプリのセットアップ を参照してください。

コマンド ラインからエミュレータを起動する

最初の重要なコマンドは、すでに利用可能なものを表示するものです。 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.

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

起動フラグがまだ重要

A clean start is the difference between a sane run and a debugging session that eats your morning. In day-to-day work, the useful terminal flags are the ones that make boot behavior predictable, especially for CI and headless hosts. -no-window はヘッドレスパス -no-snapshot はクリーンな状態を強制 -no-audio そして -no-boot-anim context:Capgoマーケティングウェブサイト。役割:短いUIラベルまたはナビゲーションアイテム。ページ/エリア:trust.astroページ。メッセージキー`and` (And)。 -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_0__またはハイブリッドアプリワークフローでデバイスを起動する場合、デバッグまたはインストールステップが始まる前に同じ起動規範が適用されます。__CAPGO_KEEP_1__開発者向けの実用的なAndroid設定ガイドは.

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

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

良い習慣: ローカル開発とCI用のクリーンな起動コマンドを1つずつ維持し、CIパイプラインがラップトップのすべてのコンビネンスフラグを継承しないようにしましょう。

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

エミュレータをadbシェルで動かす

エミュレータが起動したら adb よく使うコントロールサーフェイスになります。 adb devices エミュレータが何が接続されているかを表示し、特定のポートで特定のインスタンスをターゲットにすることができます。複数の仮想デバイスを持つマシンでは、一般的なコマンドが間違ったターゲットに当たる可能性があるため、シリアル番号は自動化が意図したエミュレータに指向するようにします。 adb -s emulator-5554 shell Androidエミュレータ管理と開発のadbシェルコマンドフロープロセスについての3ステップのインフォグラフィックです。

接続して、シェルが必要かどうかを判断する

一時的なコマンドとインタラクティブシェルの区別は、最初は気にしないように思えるかもしれませんが、実際には重要です。設定を確認したりファイルを収集したりする必要がある場合、単一の

コマンドで十分です。 adb shell コマンドは綺麗です。アプリの動作をステップごとに追跡している場合、対話型シェルに切り替え、作業が完了するまでそこにとどまります。

adb pushadb pull ファイルの移動を処理する adb install -r は、繰り返しローカルテストのための実用的パスであり、 adb exec-out screencap は、信頼できるスクリーンショットのキャプチャルートを提供します。スクリーンレコーディングは、失敗した実行から必要なクイックアーティファクトを取得する必要がある場合に、 adb shell screenrecord と同じように直接アクセスできます。パッケージインストーラーとローカルサイドロードワークフローの場合、このインストールガイドは便利な相棒となります。 ADBをアプリワークに使用しないでください、エミュレータライフサイクルワークに使用しないでください。.

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

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

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

実用的なルール: Androidのアクションは adb shellエミュレータ自体のアクションはコンソールを使用する。

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


エミュレータコンソールの使用方法

エミュレータコンソールは別の制御平面であり、その区別は重要である。Googleは、コマンドが受け入れられる前に認証が必要であり、コマンドが 5554から5585までのlocalhostポートのみにリスニングしていることをドキュメントしている。5554から5585までのlocalhostポートのみにリスニングしていることをドキュメントしている。 avd start, avd stop, avd status, ping、と言うコマンドを含む。 rotate 利用可能になります。 そのため、エミュレータのレベルで実行するアクションに適したツールです。 adb 表現できないものはありません。

Android エミュレータをターミナルで制御するための基本的なエミュレータ コンソールの図表。

有効な認証を行う前に、有効な情報を送信しません。

Google のドキュメントでは、以下の手順で接続することを推奨しています。 telnet localhost console-port, 連携を待ちます。 OK, 連携が確立されたら、以下のコマンドを実行します。 auth auth_token Capacitor の設定ファイルに保存されているトークンを使用します。 ~/.emulator_console_auth_tokenトークン ファイルが存在しない場合、telnet 接続はランダムなトークンでファイルを作成します。 これは、CI 環境が一時的な場合、ファイルを意図的に保存するか、または意図的にリセットする必要があります。 予期せぬ認証エラーはほとんどの場合、状態管理のエラーです。

コンソールは、エミュレータの設定を確認するために使用できます。 help, help command, これらのオプションは、エミュレータが受け入れるコマンドを確認するために使用できます。 help-verbose , これらのオプションは、エミュレータが受け入れるコマンドを確認するために使用できます。 これは、コマンドを推測して期待するのではなく、コマンドを確認することの良い習慣です。 adb その後は後で対応できます。

コンソール内の何が含まれるかを知っておく

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

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

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

その一つの決定は、テストスイートに到達する前に、多くの「起動したが準備ができていない」不正なテストを排除します。

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

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

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

adb root rootアクセスが可能な場合、必要な場所に到達できますが、通常のGoogle Playイメージは、快適なroot作業を期待するのはお勧めしません。カスタムAVDは、より深いアクセスが必要な場合に、より柔軟です。 adb shell su 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アクセスが必要な問題はすべてではないため、デバッグビルドの場合 adb shell run-as <package> は、爆発半径を広げることなくアプリプライベートディレクトリを検査するのに十分です。 それは、作業フローを最小限の権限を持つツールと整合させるクリーンな習慣です。

If you need system writes, the system partition must be writable, and that’s a different class of setup entirely. For everyday emulator work, host-side adb shell host側が、日常的なエミュレーターの作業に適しています。デバイス上のターミナルは、ホストへのアクセスが十分でない場合にのみ、特殊なレイヤーとして扱うのがベストです。

Networking, Port Forwarding, and Keyboard Shortcuts

A terminal-first emulator workflow gets real as soon as traffic has to cross the host boundary. adb reverse tcp:8080 tcp:8080 は、エミュレータをローカル開発サーバーに指す最もクリーンな方法です。特に、サーバーがホストサービスに呼び戻すことを想定している場合。 adb forward は、ホストサーバーにリスナーが存在する場合に、デバイスからホストへのトラフィックを処理します。

Pick the right direction before you debug the wrong layer

多くの時間が、ネットワーク問題をすべて「エミュレーターの問題」と呼び、間違ったレイヤーをデバッグすることから生じています。実際、ポート方向がよく間違っています。 adb reverse は、エミュレータがホストサービスにアクセスできるようにします。 adb forward は、デバイスのトラフィックをホストポートに向け、接続パスがどのコマンドを適用するかを決定するようにします。

If connectivity still looks off, check the route table inside the VM with 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 authポートの競合と古いスナップショットが通常の障害のクラスタです。症状と原因をマップすることで、修正は簡単です。ハングアップしたブートはスナップショットの状態を示しますが、コンソールの認証失敗は通常、トークンファイルまたはハンドシェイクが同期していないことを意味します。

https://capgo.appからスクリーンショット

時間を浪費する障害の1行の修正

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

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

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

エミュレータがブラックスクリーンに永遠に止まっている場合、クリーンな起動パスで再起動し、古い状態を破棄してください。 adb shell アプリレベルの作業と、状態がずれていくときのロールバックパス。 それが、高速モバイルの反復の背後にある規律です。 どのような場合でも、ネイティブアプリをテストしたり、制御されたリリースパイプラインを通じて Capacitor アプリにアップデートを配信したりすることです。

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


Capgo を使うと、エミュレータ駆動テストに伴う信頼性の高いリリースとリカバリパスの必要なアプリを開発するチームは、JavaScript、CSS、設定、資産の修正をストアのレビュー待たずに Capgo で速く配信できます。 ここをクリックして Capgo __CAPGO_KEEP_0__

Capacitorアプリの即時更新

When a web-layer bug is live, ship the fix through Capgo instead of waiting days for app store approval. Users get the update in the background while native changes stay in the normal review path.

ウェブ層のバグが実行中の場合、__CAPGO_KEEP_0__を通して修正を配信して、アプリストアの承認待ちの日数を待たずしてください。ユーザーはバックグラウンドで更新を受け取り、ネイティブの変更は通常のレビュー経路を通ってください。

ページ/エリア: Capgo マーケティング ウェブサイト。役割: サポートする説明文またはメタ説明文。見られる場所: コンポーネント GetStarted.astro。Capgo の製品/ブランド名と開発者用語をそのまま保存してください。メッセージキー `instant_updates_for_capacitor_apps_description` (Capacitor アプリの即時更新の説明)

マーティンから人間のサポートを受け取ってください

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