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/emulatoradb đ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 -lVí 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ĩa | Ví dụ |
|---|---|---|
-s <serial> | Một thiết bị cụ thể theo serial hoặc địa chỉ | adb -s R58M123ABC shell |
-d | Thiết bị duy nhất đang cắm USB | adb -d install app.apk |
-e | Trình giả lập duy nhất | adb -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 PowerShellGỡ các thiết bị thừa
- Kết nối Wi-Fi cũ:
adb disconnect 192.168.1.20:5555, hoặcadb 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-serversẽ 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
doneXem 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.