デバイス
BlueStacks の adb が接続できない: エミュレータ ADB の対処法
BlueStacks、LDPlayer、MuMu、MEmu、Nox で adb が接続できない、device not found、offline になるエラーを、自分で試せる adb コマンド付きで解決します。
- Windows
- Mac
- エミュレータ
- スマホ
- Studio
このページの内容
Macro Automation Studio (MAS) のローカルデバイスはすべて、127.0.0.1:<port> への adb 接続です。adb が接続できないままデバイスが開始しないとき、原因はほぼ決まって数種類の問題のどれかで、同じ対処が BlueStacks、LDPlayer、MuMu Player、MEmu、Nox に当てはまります。このページでは、自分で実行できるコマンドとともにそれらを一覧にします。
MAS が adb を使う流れ
順序を知っておくとエラーが読めるようになります。デバイスの 開始 をクリックすると、MAS は次の順に動きます:
- 独自の adb ビルドで
adb start-serverを実行します。 adb devices -lでデバイスを一覧します。あなたのポートがすでに載っていれば、先に切断します。adb connect 127.0.0.1:<port>を実行し、出力を読みます。「cannot connect」、「failed to connect」、「unable to connect」、「connection refused」、「bad port」のいずれかが出ると、デバイスは「unable to connect to device」で失敗します。- 以降のすべてのコマンドを
adb -s 127.0.0.1:<port> shell ...として送ります: タップ、スワイプ、スクリーンショットのscreencap、画面サイズのwm size。 - アプリの終了時に
adb kill-serverを実行します。
Windows では MAS は adb を C:\ProgramData\MacroAutomationStudio\3rdparty\platform-tools に同梱します。Mac では adb はアプリバンドル内にあり、PATH と Homebrew が予備です。
自分で接続を確認する
ターミナルを開き、MAS と同じ手順を実行します。エミュレータの設定にあるポートを使ってください。
adb devices
adb connect 127.0.0.1:5555
adb -s 127.0.0.1:5555 shell wm size正常なエミュレータは最後の行に Physical size: 540x960 のように答えます。出力がおかしいときは、サーバーをリセットしてやり直します:
adb kill-server
adb start-server
adb connect 127.0.0.1:5555adb の場所: エミュレータはそれぞれ独自のコピーを同梱しています (Nox は bin フォルダーに nox_adb.exe という名前で、MuMu Player はインストールフォルダー内に adb_server.exe を置きます)。MAS は Windows 版に同梱しており、Mac では brew install android-platform-tools で標準ビルドが手に入ります。
ADB 設定の場所
| エミュレータ | ADB をオンにする | 最初のインスタンスのポート | 追加のインスタンス |
|---|---|---|---|
| BlueStacks 5 | 設定、詳細 タブ、Android Debug Bridge をオン | 5555、または 5555 が使用中なら別のポート | インスタンスごとに固有のポート。MAS は 5555 から 8500 を受け付けます |
| LDPlayer | 設定、その他の設定、ADB デバッグ を ローカル接続を開く にし、設定を保存 をクリックしてインスタンスを再起動 | 5555 | 5557、5559 など。MAS は 5599 までの奇数ポートを受け付けます |
| MuMu Player | ポートは 設定 の ADB ポート、または デバイス診断 に表示 | 16384 (古いバージョン: 7555) | インスタンスごとに 32 を加算: 16416、16448 など |
| MEmu | 既定でオン。ホストのポートが Android のポート 5555 に対応 | 21503 | 21513、21523 など |
| Nox | 既定でオン。bin フォルダーから nox_adb.exe connect 127.0.0.1:62001 で接続 | 62001 | 62001 より上、63000 まで |
ベンダーのページ: BlueStacks、LDPlayer、MuMu Player、MEmu、Nox。
BlueStacks の adb が接続できない、その他のエミュレータのエラー
ADB が動かない
何も接続できません: MAS の ポート 一覧が空で、adb connect が「cannot connect」か「connection refused」と報告します。
原因: エミュレータで ADB がオフになっているか、インスタンスの起動が終わっていません。BlueStacks と LDPlayer は ADB がオフの状態で出荷されます。
- 上の表に従って ADB をオンにし、ベンダーの指示がある場合はインスタンスを再起動します。
- Android のホーム画面が表示されるまで待ってから、新しいデバイスを追加 で 更新 をクリックします。
- ターミナルで
adb connect 127.0.0.1:<port>を実行します。「connected to 127.0.0.1:」なら MAS も接続できます。 - セキュリティツールがローカル接続をブロックしている場合は、adb とエミュレータを許可します。
ADB device not found
デバイスカードが Error で終わり、ログに「unable to connect to device」と出るか、スクリプトが最初の呼び出しで DeviceNotConnectedError を送出します。
原因: ポートに何も対応していない、エミュレータが閉じた、または実行開始後に接続が切れました。
- デバイスカードのポートをエミュレータの設定にあるポートと比べます。デバイスを編集 で直します。
adb devicesを実行します。項目がなければadb connect 127.0.0.1:<port>を実行して応答を読みます。- エミュレータのインスタンスを再起動してから、もう一度 開始 をクリックします。MAS は開始のたびに最初から接続し直します。
- エミュレータより先に MAS を起動した場合は、更新 をクリックしてポート一覧を最新にします。
デバイスが offline と表示される
adb devices に 127.0.0.1:<port> offline と表示され、コマンドが固まるか何も返しません。
原因: adb サーバーが古い項目を持っている、バージョンの異なる 2 つの adb ビルドがサーバーを取り合っている、またはエミュレータがまだ起動中です。
adb kill-serverを実行してから、もう一度adb connect 127.0.0.1:<port>を実行します。- MAS の実行中は、独自の adb サーバーを起動する他のツール (Android Studio、別のエミュレータのコンソール) を閉じます。
- エミュレータのインスタンスを再起動します。「null or offline」に対する Nox 自身の助言も同じです: Nox を再起動して接続し直します。
- 起動の完了を待ちます。まだ読み込み中のインスタンスは
offlineと答えます。
ADB ポートが違う、または変わった
昨日は動いたデバイスが、同じ設定なのに今日は失敗します。
原因: エミュレータはインスタンスの起動時にポートを配り、インスタンスの作成、複製、削除でずれます。BlueStacks は 5555 が使用中だと別のポートに移ります。
- インスタンスの起動後、エミュレータの設定か
adb devicesから現在のポートを読み取ります。 - MAS でデバイスカードを開き、デバイスを編集 をクリックして新しいポートを設定し、保存します。
- 安定した構成にするには、エミュレータのマルチインスタンスマネージャーでインスタンスの順番を保ち、最初のインスタンスを削除しないようにします。
複数のインスタンス
最初のインスタンスしか接続できない、または MAS が「Port is already in use」と報告します。
原因: すべてのインスタンスに固有のポートと固有のデバイス項目が必要で、ポートは 1 度しか追加できません。
- インスタンスごとに 1 台のデバイスを、そのインスタンスのポートで追加します。範囲は上の表にあります: LDPlayer と MuMu Player は奇数ポート 5555、5557、5559、MuMu Player 12 はインスタンスごとに 32 を加算、MEmu は 10 を加算、Nox は 62001 から数えます。
- カードを見分けやすいよう、インスタンス名と一致するデバイス名を付けます。
- インスタンスを 1 つずつ起動し、新しいポートが一覧に出るたびに 更新 をクリックします。
- 同じマクロで別のアカウント: 設定プロファイルを使い、各デバイスに固有の引数を持たせます。デバイスグループ を参照してください。
Mac の adb
MAS が「ADB executable not found. Please install ADB using your package manager」と表示します。
原因: アプリバンドル内の adb を実行できず、PATH にも /opt/homebrew の下にも何も見つかりませんでした。
brew install android-platform-toolsで標準ビルドをインストールし、MAS を再起動します。- ターミナルで
which adbとadb versionで確認します。MAS はアプリバンドル、次に PATH、その次に/opt/homebrew/binと/usr/local/binを探します。 - Mac ではエミュレータも同じ Mac で動いている必要があります。MAS は常に
127.0.0.1に接続します。 - お使いの Mac 向けエミュレータビルドに ADB がまったくない場合、クラウドデバイス はローカルの adb なしで動きます。
MAS がスキャンするエミュレータの ADB ポート
MAS は ポート 一覧を adb devices ではなく起動中のプロセスから作ります。プロセス名とポート範囲の両方が一致したときだけポートを残します:
| エミュレータ | プロセス名 | 残すポート |
|---|---|---|
| BlueStacks | HD-Player、BlueStacks | 5555 から 8500 |
| LDPlayer | LdVBoxHeadless、Ld9BoxHeadless、dnplayer、LDPlayer、VBoxNetNAT | 5555 から 5599 の奇数ポート |
| Nox | NoxVMHandle | 62001 から 63000 |
| MEmu | MEmuHeadless、MEmuHyper | 21503 と、29993 までの末尾が 3 のすべてのポート |
| MuMu Player | NemuHeadless、MuMu | 5555 から 5599 の奇数ポート、7555、16384 から 16576、26624 から 27264 |
127.0.0.1、0.0.0.0、またはすべてのインターフェイスにバインドされたポートだけが対象です。これらの規則の外にあるポートは一覧に出ませんが、カスタムポート は 1024 から 65535 の任意の値を受け付けるので、MAS が知らないエミュレータも手で追加できます。
それでも解決しないとき
デバイスカードの ログ (保存 ボタンでファイルに書き出せます)、adb devices の出力、エミュレータの名前とバージョンを集めて、Discord で質問するか support@automationmacro.com にメールしてください。アプリ全般の問題は トラブルシューティング ページにあります。
次のステップ
関連ページ
ありがとうございます。誤りがあればDiscordでお知らせください。
質問がありますか? Discordで質問する