adb error: more than one device/emulator の原因と対処法
「adb: error: more than one device/emulator」の直し方です。-s、-d、-e、ANDROID_SERIAL で対象のデバイスを指定する方法と、残った Wi-Fi 接続やエミュレーターを外す方法を解説します。
adb コマンドを実行すると、次のエラーが出ます。
adb: error: more than one device/emulatoradb から 2 台以上のデバイスが見えていて、どれを指しているのか判断できない状態です。対処法は、デバイスを指定するか、不要なデバイスを外すことです。
接続中のデバイスを確認する
adb devices -l例:
List of devices attached
R58M123ABC device usb:1-1 product:a54xnseea model:SM_A546B
emulator-5554 device product:sdk_gphone64 model:sdk_gphone64_arm64
192.168.1.20:5555 device product:redwood model:2211133Gこの例では、USB 接続のスマホ、エミュレーター、Wi-Fi 接続のスマホがあります。どれもが「余分な」1 台になり得ます。
1 回のコマンドでデバイスを指定する
| フラグ | 意味 | 例 |
|---|---|---|
-s <serial> | シリアル番号またはアドレスで特定のデバイスを指定 | adb -s R58M123ABC shell |
-d | USB で接続されている唯一のデバイス | adb -d install app.apk |
-e | 唯一のエミュレーター | adb -e logcat |
-t <id> | このトランスポート ID のデバイス (adb devices -l で確認) | adb -t 3 shell |
Wi-Fi 接続のデバイスでは、アドレスがシリアルになります: adb -s 192.168.1.20:5555 shell
ターミナル全体でデバイスを指定する
ANDROID_SERIAL を設定すると、そのターミナルのすべての adb コマンドがそのデバイスに送られます。
export ANDROID_SERIAL=R58M123ABC # macOS / Linux
set ANDROID_SERIAL=R58M123ABC # Windows Command Prompt
$env:ANDROID_SERIAL = "R58M123ABC" # Windows PowerShell余分なデバイスを外す
- 古い Wi-Fi 接続:
adb disconnect 192.168.1.20:5555、またはすべて外すならadb disconnect。 - 閉じ忘れたエミュレーター: Android Studio で閉じるか、
adb -s emulator-5554 emu kill。 - offline のまま残った幽霊エントリー:
adb kill-serverで消えます。 - 同じスマホが 2 回 (USB と Wi-Fi の両方): どちらか一方を切断します。
複数台を扱うスクリプト
接続中のすべてのデバイスで同じコマンドを実行するには、シリアルをループで回します。
for s in $(adb devices | awk 'NR>1 && $2=="device" {print $1}'); do
adb -s "$s" shell getprop ro.product.model
done多数のスマホを運用する方法は Android デバイスラボの作り方 をご覧ください。
ADBKit で複数台を使う
ADBKit ではこの問題は起きません。デバイスごとに 専用のタブ があるためです。USB または Wi-Fi で最大 6 台のスマホを接続し、ブラウザのタブのように切り替えられます。すべての操作は、いま表示しているデバイスに送られます。映像を配信するのは表示中のタブだけなので、ほかのタブは軽いままです。ADBKit を開き、+ Add device で次の 1 台を接続してください。