Sửa lỗiĐăng ngày: 2 phút đọc

Lỗi adb more than one device/emulator: cách khắc phục

Sửa lỗi "adb: error: more than one device/emulator" bằng cách chọn thiết bị với -s, -d, -e hoặc ANDROID_SERIAL, và gỡ các kết nối Wi-Fi cũ, trình giả lập thừa.

Bạn chạy một lệnh adb và nhận được:

adb: error: more than one device/emulator

adb đang thấy hai thiết bị trở lên và không biết bạn muốn dùng thiết bị nào. Cách sửa là chỉ rõ thiết bị, hoặc gỡ bớt những thiết bị bạn không cần.

Xem những gì đang kết nối

adb devices -l

Ví dụ:

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

Ở đây có một điện thoại cắm USB, một trình giả lập và một điện thoại qua Wi-Fi. Bất kỳ thiết bị nào trong số này cũng có thể là thiết bị "thừa".

Chọn thiết bị cho một lệnh

CờÝ nghĩaVí dụ
-s <serial>Một thiết bị cụ thể theo serial hoặc địa chỉadb -s R58M123ABC shell
-dThiết bị duy nhất đang cắm USBadb -d install app.apk
-eTrình giả lập duy nhấtadb -e logcat
-t <id>Thiết bị có transport id này (lấy từ adb devices -l)adb -t 3 shell

Với thiết bị qua Wi-Fi, serial chính là địa chỉ của nó: adb -s 192.168.1.20:5555 shell.

Chọn thiết bị cho cả cửa sổ terminal

Đặt ANDROID_SERIAL và mọi lệnh adb trong terminal đó sẽ đi tới thiết bị này:

export ANDROID_SERIAL=R58M123ABC        # macOS / Linux
set ANDROID_SERIAL=R58M123ABC           # Windows Command Prompt
$env:ANDROID_SERIAL = "R58M123ABC"      # Windows PowerShell

Gỡ các thiết bị thừa

  • Kết nối Wi-Fi cũ: adb disconnect 192.168.1.20:5555, hoặc adb disconnect để ngắt tất cả.
  • Trình giả lập bạn quên tắt: đóng nó trong Android Studio, hoặc chạy adb -s emulator-5554 emu kill.
  • Mục "ma" ở trạng thái offline: adb kill-server sẽ xóa nó.
  • Cùng một điện thoại xuất hiện hai lần (một qua USB, một qua Wi-Fi): ngắt một trong hai.

Script cho nhiều thiết bị

Để chạy cùng một lệnh trên mọi thiết bị đang kết nối, hãy lặp qua danh sách serial:

for s in $(adb devices | awk 'NR>1 && $2=="device" {print $1}'); do
  adb -s "$s" shell getprop ro.product.model
done

Xem thêm về việc vận hành nhiều điện thoại trong bài cách xây dựng phòng thiết bị Android.

Nhiều thiết bị trong ADBKit

ADBKit không bao giờ gặp lỗi này, vì mỗi thiết bị có tab riêng. Bạn có thể kết nối tối đa sáu điện thoại qua USB hoặc Wi-Fi, chuyển qua lại giữa chúng như các tab trình duyệt, và mọi thao tác đều đi tới thiết bị bạn đang xem. Chỉ tab đang hiển thị mới truyền video, nên các tab khác vẫn nhẹ. Mở ADBKit và dùng + Add device để kết nối thiết bị tiếp theo.