トラブル解決公開日: 約 2 分で読めます

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/emulator

adb から 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
-dUSB で接続されている唯一のデバイス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 台を接続してください。