デバイス
Android エミュレータの adb 接続: エミュレータ、クラウド、スマホ
Macro Automation Studio の Android エミュレータ自動化: 検出されるエミュレータ、adb ポートの規則、ポートによるデバイス追加、クラウドデバイスと実機の使い方を説明します。
- Windows
- Mac
- エミュレータ
- クラウド端末
- スマホ
- Studio
- Python SDK
このページの内容
Macro Automation Studio (MAS) での Android エミュレータの自動化は、adb 接続するデバイスから始まります: このコンピューター上の Android エミュレータ、MAS のクラウド上のクラウドデバイス、または上級者向けの選択肢としてお手持ちのスマホ。このページでは、MAS が Android エミュレータの adb ポートを見つける仕組み、エミュレータを追加する方法、そして残りの 2 種類の位置づけを説明します。
始める前に
- MAS がインストール済みで、有効なトライアルかプランでサインインしていること。MAS のインストール を参照してください。MAS はトライアル向けに無料でダウンロードできます。ダウンロードページ から入手してください。
- エミュレータの場合: エミュレータが起動しており、設定で ADB がオンになっていること。BlueStacks、LDPlayer、MuMu Player、MEmu のガイドで場所を示しています。
- クラウドデバイスの場合: クラウドデバイスのアドオン付きプラン。クラウドデバイス を参照してください。
MAS がエミュレータの adb ポートを見つける仕組み
MAS はエミュレータを見つけるために adb devices を実行しません。起動中のプロセスを既知のエミュレータ名でスキャンし、それぞれが待ち受けている TCP ポートを読み、そのエミュレータの既知の範囲内にあるポートだけを残します。127.0.0.1、0.0.0.0、またはすべてのインターフェイスにバインドされたポートだけが対象です。結果は 新しいデバイスを追加 ダイアログの ポート 一覧に、ポートごとにエミュレータ名付きで表示されます。
| エミュレータ | MAS が探すプロセス名 | MAS が受け付けるポート |
|---|---|---|
| BlueStacks | HD-Player、BlueStacks | 5555 から 8500 |
| LDPlayer | LdVBoxHeadless、Ld9BoxHeadless、dnplayer、LDPlayer、VBoxNetNAT | 5555 から 5599 の奇数ポート |
| Nox | NoxVMHandle | 62001 から 63000 |
| MEmu | MEmuHeadless、MEmuHyper | 21503 と、それより上で 30000 未満の末尾が 3 のすべてのポート |
| MuMu Player | NemuHeadless、MuMu | 5555 から 5599 の奇数ポート、7555、16384 から 16576、または 26624 から 27264 |
エミュレータのインスタンスはそれぞれ固有のポートで待ち受けるので、BlueStacks のウィンドウが 2 つあれば 2 つの項目として表示されます。お使いのエミュレータが表にない場合や、範囲外のポートで待ち受けている場合でも、ポートを手入力できます。
Android エミュレータを自動化デバイスとして追加する
- MAS で デバイスグループ を開き、新しいグループを作成 をクリックします。
- 名前 (3 から 255 文字) を入力し、種類は ローカル のままにして、グループを作成 をクリックします。
- グループを開き、デバイスを追加 をクリックします。
- 50 文字以内の デバイス名 を入力します。
- ポート でポートを選びます。再スキャンするには 更新 をクリックします。ポートがない場合は カスタムポート を選んで入力します (1024 から 65535)。
- 必要なら 起動時マクロ を選びます。
- デバイスを追加 をクリックします。
デバイスカードにはポート、マクロ、状態が表示されます: 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 のポートフォワードでそれを実現します。
- スマホで 開発者向けオプション と USB デバッグ を有効にし、スマホを接続します。
- コンピューターで
adb devicesを実行し、スマホ側の許可ダイアログを承認します。スマホのシリアルがdeviceと表示される必要があります。 - スマホの adb デーモンに TCP でも待ち受けるよう指示します:
adb tcpip 5555。 - ローカルポートをそこに転送します:
adb forward tcp:5580 tcp:5555。空いているローカルポートならどれでも構いません。5580 は例です。 - 確認します:
adb connect 127.0.0.1:5580が「connected」と報告するはずです。 - 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でお知らせください。
質問がありますか? Discordで質問する