デバイス
BlueStacks の ADB 接続とポート設定: MAS 向け
BlueStacks 5 で ADB を有効にしてポートを確認し、Macro Automation Studio に接続して、Windows と Mac の device not found や offline エラーを直します。
- Windows
- Mac
- エミュレータ
- Studio
- Python SDK
このページの内容
このガイドでは、BlueStacks を ADB 接続で Macro Automation Studio (MAS) につなぐ方法を説明します: ADB を有効にし、ADB ポートを確認し、インスタンスをデバイスとして追加します。Windows の BlueStacks 5 と Apple Silicon Mac 向けの BlueStacks ビルドを扱い、最後によくあるエラーをまとめます。
始める前に
- Windows 10 か 11、または Apple Silicon Mac に MAS がインストール済みでサインインしていること。MAS はトライアル向けに無料でダウンロードできます。ダウンロードページ から入手してください。
- bluestacks.com から BlueStacks をインストールし、1 度起動してあること。
- インスタンスが Android のホーム画面まで完全に起動していること。
- 自動化したいアプリが BlueStacks 内にインストールされ、サインイン済みであること。
1. BlueStacks をインストールする
- ベンダーサイトから BlueStacks 5 をダウンロードし、インストーラーを実行します。
- BlueStacks を起動し、ホーム画面を待ちます。
- MAS にデバイスを追加する前に、自動化したいアプリをインストールしてサインインします。
- Apple Silicon 向けビルドの BlueStacks Air を bluestacks.com/mac からダウンロードします。
- DMG を開き、BlueStacks を アプリケーション に移動します。
- アプリケーションから起動し、ホーム画面を待ちます。
2. 推奨設定
MAS はテンプレート画像をピクセル単位で照合するので、テンプレートを取り込んだ後にディスプレイを変えてはいけません。サイドツールバーの歯車アイコンから 設定 を開き、次のように設定します:
| タブ | 設定 | 値 |
|---|---|---|
| パフォーマンス | CPU 割り当て | 2 コア。開発中はもっと多くても構いません |
| パフォーマンス | メモリ割り当て | 4 GB 以上 (可能なら) |
| ディスプレイ | 解像度 | 縦向き、540 x 960 |
| ディスプレイ | ピクセル密度 | 240 DPI |
変更を保存 をクリックし、BlueStacks に求められたらインスタンスを再起動します。MAS の基準に合わせて書かれたマクロは 540x960、240 DPI を前提とします。自分で書くマクロは、Asset Lab で取り込んだ解像度を前提とします。実行がもたつく場合は、バックグラウンドのアプリを閉じ、インスタンスにコアとメモリを多めに割り当ててください。
3. BlueStacks 5 で ADB を有効にする
BlueStacks は ADB がオフの状態で出荷されます。MAS にはオンが必要です。
- サイドツールバーの歯車アイコンをクリックして 設定 を開きます。
- 詳細 タブをクリックします。
- Android Debug Bridge をオンにします。
- 変更を保存 をクリックします。
- トグルの下に表示されるアドレス (例:
127.0.0.1:5555) を控えます。コロンの後の数字が ADB ポートです。最初のインスタンスは通常 5555 になります。下のスクリーンショットでは 5625 です。
- サイドツールバーの歯車アイコンか、上部バーのメニューアイコンから 設定 を開きます。
- Android Debug Bridge のオプションを探します。ベンダーの BlueStacks Air 設定ガイドには、パフォーマンス、ディスプレイ、グラフィック、環境設定、情報が載っており、ADB のトグルはありません。古い macOS 向け BlueStacks ビルドには環境設定にありました。
- お使いのビルドにオプションがあれば、オンにして保存し、
127.0.0.1の後のポートを控えます。 - ない場合、MAS はこのビルドに接続できません。Mac で ADB を公開する別のエミュレータか、クラウドデバイス を使ってください。
4. BlueStacks の ADB ポートと MAS のスキャン方法
MAS はエミュレータを検出するために adb devices を実行しません。起動中のプロセスをスキャンし、次のすべてを満たすポートを残します:
- プロセス名に
hd-playerかbluestacksが含まれる。 - ポートが 5555 から 8500 の間にある。
- ソケットが
127.0.0.1、0.0.0.0、またはすべてのインターフェイスで待ち受けている。
該当するポートは 新しいデバイスを追加 ダイアログに Bluestacks のラベル付きで表示されます (例: 5555 - Bluestacks)。MAS はデバイスグループを開いたときと、更新 をクリックするたびにスキャンします。BlueStacks のインスタンスはそれぞれ固有のポートで待ち受けるので、2 つのインスタンスは 2 つの項目になります。
5. MAS で BlueStacks を ADB 接続する
- サイドバーで デバイスグループ を開き、グループを開くか作成します。
- デバイスを追加 をクリックします。
- 50 文字以内の デバイス名 を入力します。
- ポート で、このインスタンスの
Bluestacks項目を選びます。一覧が空なら 更新 をクリックします。 - BlueStacks が MAS の一覧にないポートを表示している場合は、カスタムポート を選んで入力します。MAS は 1024 から 65535 を受け付けます。
- 必要なら 起動時マクロ を選びます。
- デバイスを追加 をクリックし、デバイスカードの 開始 をクリックします。
カードは Connecting、次に Running と表示されます。MAS は独自の adb サーバーを起動し、127.0.0.1:<port> の古い項目を削除し、それに対して adb connect を実行します。
BlueStacks でのマクロ
BlueStacks 自身のマクロレコーダーは、固定座標でタップを再生します。MAS のマクロは、まず画面を見る Python スクリプトです: テンプレートマッチングでボタンを見つけ、OCR で文字を読み、リトライで遅い読み込みやポップアップを吸収します。はじめに で最初のマクロを実行し、画像認識マクロ で録画したルーチンを画面を認識するものに作り直し、スケジューラー で毎日、毎週、毎月実行します。
複数の BlueStacks インスタンス
マルチインスタンスマネージャー で作ったインスタンスは、それぞれ固有の ADB ポートで待ち受けます。同じデバイスグループに別々のデバイスとして追加し、それぞれにマクロと設定プロファイルを与え、グループの すべて開始 と すべて停止 を使います。デバイスごとの引数とプロキシについては デバイスグループ を参照してください。
トラブルシューティング
BlueStacks 5 で ADB を有効にする
MAS の ポート 一覧が空で、adb connect 127.0.0.1:5555 が「cannot connect」か「connection refused」と答えます。ADB がオフです。設定 を開き、詳細 をクリックし、Android Debug Bridge をオンにして 変更を保存 をクリックし、インスタンスを再起動してから、新しいデバイスを追加 で 更新 をクリックします。詳細 タブにそのトグルがない場合は、ベンダーサイトから現在の BlueStacks 5 をインストールしてください。
ADB ポートを確認する、または変更する
ポートは Android Debug Bridge トグルの下に 127.0.0.1:<port> として表示されます。BlueStacks は起動時にポートを割り当て、5555 が使用中なら別のポートに移るため、インスタンスの作成、複製、削除の後に変わることがあります。ベンダーの ADB ガイドには手動で設定する欄の記載はありません。変わったときは、MAS のカードで デバイスを編集 をクリックして新しいポートを選びます。インスタンスを同じ順番で起動すると、ポートは安定します。
ADB device not found
カードが「Failed to start device」で Error になる、ログに「unable to connect to device」と出る、またはスクリプトが DeviceNotConnectedError を送出します。
- インスタンスがまだ起動中です。ホーム画面を待ってから、もう一度 開始 をクリックします。
- カードのポートが BlueStacks の表示するポートと違います。デバイスを編集 で直します。
- アップデートで ADB が再びオフになりました。詳細 タブを確認します。
- ターミナルで
adb connect 127.0.0.1:<port>を実行します。「connected to」なら MAS も接続できます。
デバイスが offline と表示される
adb devices に 127.0.0.1:<port> offline と表示され、コマンドが固まります。インスタンス内の adb デーモンが応答しなくなっています。原因は通常、スリープ、アップデート、またはマシン上の 2 つ目の adb サーバーです。カードの 停止 をクリックし、インスタンスを再起動し、独自の adb サーバーを動かす他のツールを閉じてから 開始 をクリックします。MAS は最初から接続し直します。それでも offline のままなら、MAS を再起動して adb サーバーをまっさらな状態で立ち上げます。その他の対処は ADB トラブルシューティング にあります。
Mac での BlueStacks ADB
Mac では 2 点が異なります。第一に、MAS には adb バイナリが必要です: アプリバンドル内、次に PATH、その次に Homebrew のフォルダーを探します。MAS が「ADB executable not found. Please install ADB using your package manager」と表示したら、Homebrew で adb をインストールして MAS を再起動します:
brew install android-platform-tools第二に、MAS は常に 127.0.0.1 に接続するので、BlueStacks は同じ Mac で動き、ADB を公開している必要があります。BlueStacks Air は Apple Silicon 向けの唯一のビルドで、公開されている設定に ADB のトグルはありません。それがないと、MAS は操作できません。
Python から操作する
カードが Running の状態で、マクロの src/app.py が mas パッケージを通して BlueStacks を操作します。ポートは MAS が選ぶので、スクリプトがポートを参照することはありません。
import mas
size = mas.get_screen_size()
mas.log(f"BlueStacks screen is {size.width}x{size.height}")
match = mas.find_object_retry(1234, total_tries=3, time_sleep=2.0)
if match:
mas.click(match.x, match.y)すべての名前空間は SDK 概要 を、完全な最初のスクリプトは Python から Android エミュレータを操作する をお読みください。
次のステップ
関連ページ
ありがとうございます。誤りがあればDiscordでお知らせください。
質問がありますか? Discordで質問する