検索

デバイス

Android エミュレータの adb 接続: エミュレータ、クラウド、スマホ

Macro Automation Studio の Android エミュレータ自動化: 検出されるエミュレータ、adb ポートの規則、ポートによるデバイス追加、クラウドデバイスと実機の使い方を説明します。

  • Windows
  • Mac
  • エミュレータ
  • クラウド端末
  • スマホ
  • Studio
  • Python SDK
初級 更新日 約9分で読めます
このページの内容
  1. 始める前に
  2. MAS がエミュレータの adb ポートを見つける仕組み
  3. Android エミュレータを自動化デバイスとして追加する
  4. クラウドデバイス
  5. お手持ちのスマホ
  6. Python から操作する
  7. トラブルシューティング
  8. ポート一覧が空
  9. Port is already in use
  10. デバイスが Connecting のままか、Error で終わる

Macro Automation Studio (MAS) での Android エミュレータの自動化は、adb 接続するデバイスから始まります: このコンピューター上の Android エミュレータ、MAS のクラウド上のクラウドデバイス、または上級者向けの選択肢としてお手持ちのスマホ。このページでは、MAS が Android エミュレータの adb ポートを見つける仕組み、エミュレータを追加する方法、そして残りの 2 種類の位置づけを説明します。

始める前に

  • MAS がインストール済みで、有効なトライアルかプランでサインインしていること。MAS のインストール を参照してください。MAS はトライアル向けに無料でダウンロードできます。ダウンロードページ から入手してください。
  • エミュレータの場合: エミュレータが起動しており、設定で ADB がオンになっていること。BlueStacksLDPlayerMuMu PlayerMEmu のガイドで場所を示しています。
  • クラウドデバイスの場合: クラウドデバイスのアドオン付きプラン。クラウドデバイス を参照してください。

MAS がエミュレータの adb ポートを見つける仕組み

MAS はエミュレータを見つけるために adb devices を実行しません。起動中のプロセスを既知のエミュレータ名でスキャンし、それぞれが待ち受けている TCP ポートを読み、そのエミュレータの既知の範囲内にあるポートだけを残します。127.0.0.10.0.0.0、またはすべてのインターフェイスにバインドされたポートだけが対象です。結果は 新しいデバイスを追加 ダイアログの ポート 一覧に、ポートごとにエミュレータ名付きで表示されます。

エミュレータMAS が探すプロセス名MAS が受け付けるポート
BlueStacksHD-PlayerBlueStacks5555 から 8500
LDPlayerLdVBoxHeadlessLd9BoxHeadlessdnplayerLDPlayerVBoxNetNAT5555 から 5599 の奇数ポート
NoxNoxVMHandle62001 から 63000
MEmuMEmuHeadlessMEmuHyper21503 と、それより上で 30000 未満の末尾が 3 のすべてのポート
MuMu PlayerNemuHeadlessMuMu5555 から 5599 の奇数ポート、7555、16384 から 16576、または 26624 から 27264

エミュレータのインスタンスはそれぞれ固有のポートで待ち受けるので、BlueStacks のウィンドウが 2 つあれば 2 つの項目として表示されます。お使いのエミュレータが表にない場合や、範囲外のポートで待ち受けている場合でも、ポートを手入力できます。

Android エミュレータを自動化デバイスとして追加する

  1. MAS で デバイスグループ を開き、新しいグループを作成 をクリックします。
  2. 名前 (3 から 255 文字) を入力し、種類は ローカル のままにして、グループを作成 をクリックします。
  3. グループを開き、デバイスを追加 をクリックします。
  4. 50 文字以内の デバイス名 を入力します。
  5. ポート でポートを選びます。再スキャンするには 更新 をクリックします。ポートがない場合は カスタムポート を選んで入力します (1024 から 65535)。
  6. 必要なら 起動時マクロ を選びます。
  7. デバイスを追加 をクリックします。

デバイスカードにはポート、マクロ、状態が表示されます: Stopped、Connecting、Starting、Running、Stopping、または Error。開始adb connect 127.0.0.1:<port> でエミュレータに接続してマクロを起動し、停止 は実行を終えます。ポートは 1 台のデバイスにしか属せません。同じポートを 2 度追加すると「Port is already in use」で失敗します。後でポートを変えるには デバイスを編集 をクリックします。

1 つのグループ内の複数のデバイスに、それぞれ異なるマクロ、引数、設定プロファイルを持たせることができ、すべて開始 で順番に実行します。デバイスグループ を参照してください。

クラウドデバイス

クラウドデバイスは、MAS があなたの代わりに動かす Android デバイスです。クラウドデバイス ページの 作成 で作り、Android バージョン、ディスプレイプリセット、DPI を選びます。これらはデバイスの寿命の間固定です。開始 で起動し、表示 で WebRTC 配信のライブ画面を開き、実行 でアプリを閉じた後も動き続けるマクロを起動します。停止したデバイスはデータを保持し、1 アカウントあたり最大 20 台のクラウドデバイスを保持できます。APK のインストールや割り当てを含むその他の内容は クラウドデバイス ページにあります。

お手持ちのスマホ

MAS はすべてのローカルデバイスをポートで追加し、常に 127.0.0.1 に接続します。USB ペアリング画面も無線ペアリング画面もありません。したがってスマホは、その adb デーモンにこのコンピューターの TCP ポートから到達できる場合にだけ動きます。USB では adb のポートフォワードでそれを実現します。

  1. スマホで 開発者向けオプションUSB デバッグ を有効にし、スマホを接続します。
  2. コンピューターで adb devices を実行し、スマホ側の許可ダイアログを承認します。スマホのシリアルが device と表示される必要があります。
  3. スマホの adb デーモンに TCP でも待ち受けるよう指示します: adb tcpip 5555
  4. ローカルポートをそこに転送します: adb forward tcp:5580 tcp:5555。空いているローカルポートならどれでも構いません。5580 は例です。
  5. 確認します: adb connect 127.0.0.1:5580 が「connected」と報告するはずです。
  6. MAS で、カスタムポート5580 にしてデバイスを追加します。

スマホは接続したまま、画面はオンにしておきます。画面サイズと DPI はスマホから来るので、エミュレータで切り出したテンプレートは一致しません。Asset Lab でスマホから切り出してください。

無線デバッグも、スマホをペアリングして adb connect <phone-ip>:<port> で接続した後は同じ仕組みです: ローカルポートをスマホの adb ポートに転送し、そのローカルポートを MAS に追加します。

Python から操作する

SDK は下にあるデバイスの種類を気にしません。mas.get_device_info() は名前と画面サイズを、mas.get_screen_size() はサイズだけを返し、すべてのタップ、スワイプ、スクリーンショットは同じ呼び出しを通ります。スクリプトはデバイスが結び付いた状態で MAS から起動されるので、コードで接続するものはありません。SDK 概要 から始めてください。

トラブルシューティング

ポート一覧が空

エミュレータが動いていない、設定で ADB がオフ、または MAS がスキャンするエミュレータではありません。エミュレータの起動が終わってから 更新 をクリックしてください。それでも空なら、エミュレータ自身の設定に表示されるポートで カスタムポート を使います。ADB トラブルシューティング を参照してください。

Port is already in use

グループ内の別のデバイスがすでにそのポートを持っています。各ポートは 1 度しか追加できません。古い項目を削除するか、もう一方のインスタンスのポートを選んでください。

デバイスが Connecting のままか、Error で終わる

MAS が adb connect を完了できなかったか、エミュレータが最初のコマンドを拒否しました。ポートを確認し、ADB がオンであることを確かめ、ADB トラブルシューティング に従ってください。

次のステップ

関連ページ

このページは役に立ちましたか?

質問がありますか? Discordで質問する