Cầu gỡ lỗi Android (adb
) là một công cụ dòng lệnh linh hoạt cho phép bạn giao tiếp với thiết bị. Lệnh adb
hỗ trợ nhiều thao tác trên thiết bị, chẳng hạn như cài đặt và gỡ lỗi ứng dụng. adb
cung cấp quyền truy cập vào một shell Unix mà bạn có thể dùng để chạy nhiều lệnh trên thiết bị. Đây là một chương trình ứng dụng-máy chủ bao gồm ba thành phần:
- Ứng dụng: sẽ gửi lệnh. Ứng dụng chạy trên máy phát triển của bạn. Bạn có thể gọi ứng dụng qua một dòng lệnh bằng cách phát ra lệnh
adb
. - Một trình nền (adbd) chạy lệnh trên thiết bị. daemon chạy dưới dạng quy trình trong nền trên từng thiết bị.
- Máy chủ (server) quản lý việc giao tiếp giữa ứng dụng và trình nền. Máy chủ chạy dưới dạng quy trình nền trên máy phát triển của bạn.
adb
nằm trong gói Công cụ nền tảng Android SDK. Hãy tải gói này xuống bằng Trình quản lý SDK rồi cài đặt gói này tại android_sdk/platform-tools/
. Nếu bạn muốn có gói Công cụ nền tảng Android SDK độc lập, hãy tải gói này xuống tại đây.
Để biết thông tin về cách kết nối một thiết bị để sử dụng qua adb
, bao gồm cả cách sử dụng Trợ lý kết nối để khắc phục các sự cố thường gặp, hãy xem phần Chạy ứng dụng trên thiết bị phần cứng.
Cách hoạt động của adb
Khi bạn khởi động một ứng dụng adb
, trước tiên, ứng dụng sẽ kiểm tra liệu có quá trình máy chủ adb
nào đang chạy hay không. Nếu không có, ứng dụng sẽ khởi động quá trình máy chủ.
Khi khởi động, máy chủ sẽ liên kết với cổng TCP 5037 cục bộ và lắng nghe các lệnh đã gửi từ ứng dụng adb
.
Lưu ý: Tất cả ứng dụng adb
đều sử dụng cổng 5037 để giao tiếp với máy chủ adb
.
Sau đó, máy chủ thiết lập kết nối với tất cả thiết bị đang chạy.
Máy chủ định vị các trình mô phỏng khi quét các cổng được đánh số lẻ thuộc dải từ 5555 đến 5585. Đây là dải được 16 trình mô phỏng đầu tiên sử dụng. Tìm thấy một trình nền adb
(adbd) ở đâu thì máy chủ sẽ thiết lập kết nối với cổng đó.
Mỗi trình mô phỏng sử dụng một cặp cổng tuần tự – một cổng được đánh số chẵn để kết nối với bảng điều khiển và một cổng được đánh số lẻ để kết nối với adb
. Ví dụ:
Trình mô phỏng 1, bảng điều khiển: 5554
Trình mô phỏng 1, adb
: 5555
Trình mô phỏng 2, bảng điều khiển: 5556
Trình mô phỏng 2, adb
: 5557
,
v.v.
Như đã thấy, trình mô phỏng được kết nối với adb
trên cổng 5555 cũng giống như trình mô phỏng có bảng điều khiển xử lý trên cổng 5554.
Sau khi máy chủ đã thiết lập kết nối với tất cả các thiết bị, bạn có thể sử dụng lệnh adb
để truy cập các thiết bị đó. Vì máy chủ quản lý các kết nối tới thiết bị và xử lý các lệnh từ nhiều ứng dụng adb
, nên bạn có thể kiểm soát mọi thiết bị qua ứng dụng hoặc tập lệnh bất kỳ.
Bật tính năng gỡ lỗi adb trên thiết bị của bạn
Để sử dụng adb với một thiết bị được kết nối qua USB, bạn phải bật tuỳ chọn gỡ lỗi qua USB ở phần cài đặt hệ thống của thiết bị, trong Tuỳ chọn cho nhà phát triển. Theo mặc định, trên Android 4.2 (API cấp 17) trở lên, màn hình Tuỳ chọn cho nhà phát triển sẽ bị ẩn. Để hiển thị màn hình này, hãy bật Tuỳ chọn cho nhà phát triển.
Giờ đây, bạn có thể kết nối thiết bị của mình với USB. Bạn có thể xác minh rằng thiết bị đã kết nối bằng cách thực thi adb devices
qua thư mục android_sdk/platform-tools/
. Nếu đã kết nối, bạn sẽ thấy tên thiết bị được liệt kê là "device" ("thiết bị").
Lưu ý: Khi bạn kết nối một thiết bị chạy Android 4.2.2 (API cấp 17) trở lên, hệ thống sẽ hiện một hộp thoại hỏi xem liệu có chấp nhận khoá RSA cho phép gỡ lỗi qua máy tính này hay không. Cơ chế bảo mật này là nhằm bảo vệ thiết bị của người dùng vì nó bảo đảm rằng không thể thực thi thao tác gỡ lỗi qua USB và các lệnh adb khác trừ phi bạn có thể mở khoá thiết bị và xác nhận hộp thoại.
Để biết thêm thông tin về cách kết nối với một thiết bị qua USB, hãy đọc phần Chạy ứng dụng trên thiết bị phần cứng.
Kết nối với một thiết bị qua Wi-Fi
Lưu ý: Hướng dẫn bên dưới không áp dụng cho các thiết bị Wear chạy Android 11 (API cấp 30). Hãy xem hướng dẫn gỡ lỗi ứng dụng Wear OS để biết thêm thông tin.
Android 11 (API cấp 30) trở lên hỗ trợ triển khai và gỡ lỗi ứng dụng qua mạng không dây từ máy trạm bằng Cầu gỡ lỗi Android (adb). Ví dụ: bạn có thể triển khai ứng dụng có thể gỡ lỗi cho nhiều thiết bị từ xa mà không cần kết nối thực tế thiết bị qua USB. Việc này giúp bạn không cần giải quyết các vấn đề thường gặp về kết nối USB, chẳng hạn như việc cài đặt trình điều khiển.
Trước khi bắt đầu sử dụng tính năng gỡ lỗi qua Wi-Fi, hãy làm như sau:
-
Đảm bảo rằng máy trạm và thiết bị của bạn được kết nối với cùng một mạng không dây.
-
Đảm bảo rằng thiết bị của bạn chạy Android 11 (API cấp 30) trở lên đối với điện thoại hoặc Android 13 (API cấp 33) trở lên đối với TV và Wear OS. Để biết thêm thông tin, hãy xem bài viết Kiểm tra và cập nhật phiên bản Android.
-
Nếu sử dụng IDE, hãy đảm bảo bạn đã cài đặt phiên bản Android Studio mới nhất. Bạn có thể tải xuống tại đây.
-
Trên máy trạm, hãy cập nhật phiên bản mới nhất của Công cụ nền tảng SDK.
Để sử dụng tính năng gỡ lỗi qua Wi-Fi, bạn phải ghép nối thiết bị với máy trạm bằng Mã QR hoặc mã ghép nối. Máy trạm và thiết bị phải được kết nối với cùng một mạng không dây. Để kết nối với thiết bị, hãy làm theo các bước sau:
-
Bật Developer Options (Tuỳ chọn cho nhà phát triển) trên thiết bị của bạn.
-
Mở Android Studio, rồi chọn Pair Devices Using Wi-Fi (Ghép nối thiết bị qua Wi-Fi) trên trình đơn về cấu hình chạy.
Cửa sổ về Thiết bị đã ghép nối qua Wi-Fi sẽ bật lên, như minh họa trong hình 2.
-
Trên thiết bị, hãy nhấn vào Gỡ lỗi qua Wi-Fi và ghép nối thiết bị:
-
Để ghép nối thiết bị của bạn với mã QR, hãy chọn Ghép nối thiết bị với mã QR rồi quét mã QR thu được qua cửa sổ bật lên Ghép nối thiết bị qua Wi-Fi như minh hoạ trong hình 2.
-
Để ghép nối thiết bị của bạn với mã ghép nối, hãy chọn Ghép nối thiết bị với mã ghép nối trong cửa sổ bật lên Ghép nối thiết bị qua Wi-Fi. Trên thiết bị của bạn, hãy chọn Ghép nối bằng mã ghép nối và ghi lại mã gồm sáu chữ số được cung cấp. Khi thiết bị xuất hiện trong cửa sổ Ghép nối thiết bị qua Wi-Fi, bạn có thể chọn Ghép nối rồi nhập mã gồm sáu chữ số hiện trên thiết bị của bạn.
-
-
Sau khi thiết bị của bạn được ghép nối, bạn có thể thử triển khai ứng dụng cho thiết bị.
Để ghép nối với một thiết bị khác hoặc quên thiết bị này trên máy trạm, hãy chuyển đến phần Wireless debugging (Gỡ lỗi qua Wi-Fi) trên thiết bị, nhấn vào tên máy trạm trong phần Paired devices (Thiết bị đã ghép nối) rồi chọn Forget (Quên).
-
Nếu muốn nhanh chóng bật và tắt tính năng gỡ lỗi qua Wi-Fi, bạn có thể sử dụng ô Cài đặt nhanh dành cho nhà phát triển cho Gỡ lỗi qua Wi-Fi, nằm trong thẻ thông tin Developer Options > Quick settings developer tiles (Tuỳ chọn cho nhà phát triển > Cài đặt nhanh dành cho nhà phát triển).
Kết nối Wi-Fi bằng dòng lệnh
Ngoài ra, để kết nối với thiết bị của bạn bằng dòng lệnh mà không dùng Android Studio, hãy làm theo các bước sau:
-
Bật tuỳ chọn cho nhà phát triển trên thiết bị như mô tả ở trên.
-
Bật tính năng gỡ lỗi qua Wi-Fi trên thiết bị như mô tả ở trên.
-
Trên máy trạm của bạn, hãy mở một cửa sổ dòng lệnh rồi chuyển đến
android_sdk/platform-tools
. -
Tìm địa chỉ IP, số cổng và mã ghép nối bằng cách chọn Ghép nối thiết bị bằng mã ghép nối. Ghi lại địa chỉ IP, số cổng và mã ghép nối hiển thị trên thiết bị.
-
Trên thiết bị đầu cuối của máy trạm, hãy chạy
adb pair ipaddr:port
. Hãy sử dụng địa chỉ IP và số cổng nêu trên. -
Khi được nhắc, hãy nhập mã ghép nối, như hiển thị dưới đây.
Khắc phục các sự cố kết nối không dây
Nếu gặp sự cố khi kết nối không dây cho thiết bị, bạn có thể thử các bước sau đây để khắc phục sự cố.
Kiểm tra xem máy trạm và thiết bị của bạn có đáp ứng các điều kiện tiên quyết không
Kiểm tra để đảm bảo máy trạm và thiết bị đáp ứng các điều kiện tiên quyết nêu ở đầu phần này.
Kiểm tra xem có các sự cố đã biết khác không
Sau đây là danh sách các sự cố đã biết khi gỡ lỗi qua Wi-Fi (bằng adb hoặc Android Studio) và cách khắc phục:
-
Wi-Fi không kết nối: Các mạng Wi-Fi bảo mật, chẳng hạn như mạng Wi-Fi công ty, có thể chặn kết nối ngang hàng (p2p) và không cho phép bạn kết nối qua Wi-Fi. Hãy thử kết nối bằng cáp hoặc mạng Wi-Fi khác (không phải của doanh nghiệp). Kết nối không dây sử dụng
adb connect ip:port
qua tcp/ip (sau khi kết nối USB ban đầu) là một lựa chọn khác, trong trường hợp bạn có thể sử dụng một mạng không phải của công ty. -
adb
qua Wi-Fi đôi khi tự động tắt: Tình trạng này có thể xảy ra nếu thiết bị thay đổi hoặc ngắt kết nối với mạng Wi-Fi. Để giải quyết vấn đề này, kết nối lại với mạng. -
Thiết bị không kết nối sau khi ghép nối thành công:
adb
dựa vào mDNS để khám phá và tự động kết nối với các thiết bị đã ghép nối. Nếu cấu hình mạng hoặc thiết bị của bạn không hỗ trợ mDNS hoặc đã tắt mDNS, thì bạn cần kết nối với thiết bị theo cách thủ công bằngadb connect ip:port
.
Kết nối không dây với một thiết bị sau khi kết nối USB ban đầu (chỉ có trên Android 10 trở xuống)
Lưu ý: Quy trình này cũng áp dụng cho Android 11 (và trở lên), nhưng lưu ý là quy trình này cũng liên quan đến một kết nối *ban đầu* qua USB thực.
Lưu ý: Hướng dẫn sau đây không áp dụng cho các thiết bị Wear chạy Android 10 (API cấp 29) trở xuống. Xem hướng dẫn gỡ lỗi ứng dụng Wear OS để biết thêm thông tin.
adb
thường giao tiếp với thiết bị qua USB, nhưng bạn cũng có thể sử dụng adb
qua Wi-Fi. Để kết nối một thiết bị chạy Android 10 (API cấp 29) trở xuống, hãy làm theo các bước ban đầu sau đây qua USB:
-
Kết nối thiết bị Android và máy tính lưu trữ
adb
với mạng Wi-Fi chung. - Kết nối thiết bị với máy tính lưu trữ bằng cáp USB.
-
Đặt thiết bị đích để theo dõi kết nối TCP/IP trên cổng 5555:
adb tcpip 5555
- Rút cáp USB khỏi thiết bị đích.
- Tìm địa chỉ IP của thiết bị Android. Ví dụ: trên thiết bị Nexus, bạn có thể tìm thấy địa chỉ IP trong Settings (Cài đặt) > About tablet (Giới thiệu về máy tính bảng) (hoặc About phone (Giới thiệu về điện thoại) ) > Status (Trạng thái) > IP address (Địa chỉ IP).
-
Kết nối với thiết bị theo địa chỉ IP của thiết bị:
adb connect device_ip_address:5555
-
Xác nhận rằng máy tính lưu trữ của bạn đã kết nối với thiết bị mục tiêu:
$ adb devices List of devices attached device_ip_address:5555 device
Lưu ý: không phải tất cả các điểm truy cập đều phù hợp. Bạn có thể cần phải sử dụng một điểm truy cập có tường lửa được định cấu hình đúng cách để hỗ trợ adb
.
Thiết bị của bạn hiện đã kết nối với adb
.
Nếu bị mất kết nối adb
với thiết bị:
- Đảm bảo rằng máy tính lưu trữ vẫn kết nối với cùng mạng Wi-Fi như thiết bị Android của bạn.
-
Kết nối lại bằng cách thực thi bước
adb connect
lần nữa. -
Nếu cách đó không hiệu quả, hãy đặt lại máy chủ
adb
:adb kill-server
Sau đó, hãy bắt đầu lại từ đầu.
Truy vấn cho thiết bị
Trước khi đưa ra các lệnh adb
, bạn nên biết phiên bản thiết bị nào được kết nối với máy chủ adb
. Tạo danh sách các thiết bị được đính kèm bằng lệnh devices
:
adb devices -l
Để đáp lại, adb
sẽ in thông tin trạng thái này cho từng thiết bị:
- Số sê-ri:
adb
tạo một chuỗi để chỉ nhận dạng thiết bị bằng số cổng của thiết bị. Dưới đây là một ví dụ về số sê-ri:emulator-5554
- Trạng thái: Trạng thái kết nối của thiết bị có thể là một trong những trạng thái sau:
offline
: Thiết bị chưa kết nối vớiadb
hoặc không phản hồi.device
: Thiết bị đã kết nối với máy chủadb
. Xin lưu ý trạng thái này không ngụ ý rằng hệ thống Android đã khởi động đầy đủ và đang hoạt động vì thiết bị kết nối vớiadb
trong khi hệ thống vẫn đang khởi động. Sau khi khởi động, đây là trạng thái hoạt động bình thường của thiết bị.no device
: Không có thiết bị nào được kết nối.
- Mô tả: Nếu bạn thêm tuỳ chọn
-l
, lệnhdevices
cho bạn biết thiết bị là gì. Thông tin này sẽ hữu ích khi bạn kết nối nhiều thiết bị do có thể phân biệt những thiết bị đó.
Ví dụ sau đây cho thấy lệnh devices
và kết quả của lệnh đó. Có ba
thiết bị đang chạy. Hai dòng đầu tiên trong danh sách là trình mô phỏng, và dòng thứ ba là một thiết bị phần cứng được gắn vào máy tính.
$ adb devices List of devices attached emulator-5556 device product:sdk_google_phone_x86_64 model:Android_SDK_built_for_x86_64 device:generic_x86_64 emulator-5554 device product:sdk_google_phone_x86 model:Android_SDK_built_for_x86 device:generic_x86 0a388e93 device usb:1-1 product:razor model:Nexus_7 device:flo
Trình mô phỏng không có trong danh sách
Lệnh adb devices
có một trình tự lệnh trong trường hợp góc khiến các trình mô phỏng đang chạy không hiển thị tại đầu ra adb devices
ngay cả khi các trình mô phỏng này hiển thị trên màn hình máy tính. Điều này xảy ra khi tất cả các điều kiện sau đây là đúng.
- Máy chủ
adb
không chạy. - Bạn sử dụng lệnh
emulator
với tuỳ chọn-port
hoặc-ports
với giá trị cổng được đánh số lẻ từ 5554 đến 5584. - Cổng được đánh số lẻ bạn đã chọn không bận nên có thể thực hiện kết nối cổng tại số cổng được chỉ định hoặc nếu nó bận, trình giả lập sẽ chuyển sang một cổng khác đáp ứng các yêu cầu trong 2.
- Bạn khởi động máy chủ
adb
sau khi khởi động trình mô phỏng
Một cách để tránh tình trạng này là để trình mô phỏng chọn cổng của riêng mình và chạy không quá 16 trình mô phỏng cùng một lúc. Một cách khác là luôn khởi động máy chủ adb
trước khi bạn sử dụng lệnh emulator
, như được giải thích trong các ví dụ sau.
Ví dụ 1: Trong trình tự lệnh sau, lệnh adb devices
sẽ khởi động máy chủ adb
, nhưng danh sách thiết bị không xuất hiện.
Dừng máy chủ adb
và nhập các lệnh sau theo thứ tự hiển thị. Đối với tên AVD, hãy cung cấp một tên AVD hợp lệ từ hệ thống của bạn. Để có danh sách tên AVD, hãy nhập emulator -list-avds
. Lệnh emulator
nằm trong thư mục android_sdk/tools
.
$ adb kill-server $ emulator -avd Nexus_6_API_25 -port 5555 $ adb devices List of devices attached * daemon not running. starting it now on port 5037 * * daemon started successfully *
Ví dụ 2: Trong trình tự lệnh sau, adb devices
cho thấy danh sách thiết bị vì máy chủ adb
đã được khởi động trước.
Để xem trình mô phỏng trong đầu ra adb devices
, hãy dừng máy chủ adb
, rồi khởi động lại sau khi sử dụng lệnh emulator
và trước khi sử dụng lệnh adb devices
, như sau:
$ adb kill-server $ emulator -avd Nexus_6_API_25 -port 5557 $ adb start-server $ adb devices List of devices attached emulator-5557 device
Để biết thêm thông tin về các tuỳ chọn dòng lệnh của trình mô phỏng, hãy xem Tuỳ chọn khởi động Dòng lệnh.
Gửi lệnh đến một thiết bị cụ thể
Nếu nhiều thiết bị đang chạy, bạn phải chỉ định thiết bị mục tiêu khi kích hoạt lệnh adb
.
Để xác định mục tiêu, làm theo các bước sau:
- Dùng lệnh
devices
để lấy số sê-ri của mục tiêu. - Sau khi bạn có số sê-ri, hãy sử dụng tuỳ chọn
-s
cùng với các lệnhadb
để chỉ định số sê-ri.- Nếu sẽ thực hiện nhiều lệnh
adb
, thì bạn có thể đặt biến môi trường$ANDROID_SERIAL
để chứa số sê-ri. - Nếu bạn sử dụng cả
-s
và$ANDROID_SERIAL
, thì-s
sẽ ghi đè lên$ANDROID_SERIAL
.
- Nếu sẽ thực hiện nhiều lệnh
Trong ví dụ sau, hãy lấy danh sách thiết bị đính kèm, rồi dùng số sê-ri của một trong những thiết bị đó để cài đặt helloWorld.apk
trên thiết bị đó.
$ adb devices List of devices attached emulator-5554 device emulator-5555 device 0.0.0.0:6520 device # To install on emulator-5555 $ adb -s emulator-5555 install helloWorld.apk # To install on 0.0.0.0:6520 $ adb -s 0.0.0.0:6520 install helloWorld.apk
Lưu ý: Nếu bạn ra lệnh mà không chỉ định một thiết bị mục tiêu khi có nhiều thiết bị, thì adb
sẽ hiển thị lỗi "adb: nhiều thiết bị/trình mô phỏng".
Nếu bạn có nhiều thiết bị, nhưng chỉ có một thiết bị là trình mô phỏng, thì hãy sử dụng tuỳ chọn -e
để gửi lệnh đến trình mô phỏng. Tương tự, nếu có nhiều thiết bị nhưng chỉ có một thiết bị phần cứng được đính kèm, hãy sử dụng tuỳ chọn -d
để gửi lệnh đến thiết bị phần cứng.
Cài đặt ứng dụng
Bạn có thể sử dụng adb
để cài đặt một tệp APK trên trình mô phỏng hoặc thiết bị đã kết nối bằng lệnh install
:
adb install path_to_apk
Bạn phải sử dụng tuỳ chọn -t
kèm theo lệnh install
khi cài đặt một tệp APK kiểm thử. Để biết thêm thông tin, hãy xem -t
.
Để cài đặt nhiều tệp APK, hãy sử dụng install-multiple
. Cách này rất hữu ích nếu bạn tải mọi tệp APK xuống cho một thiết bị cụ thể của ứng dụng qua Play Console và muốn cài đặt những tệp APK đó trên một trình mô phỏng hoặc thiết bị thực.
Để biết thêm thông tin về cách tạo tệp APK mà bạn có thể cài đặt trên một phiên bản trình mô phỏng/thiết bị, hãy xem phần Tạo và chạy ứng dụng của bạn.
Lưu ý: Nếu đang sử dụng Android Studio, thì bạn không cần trực tiếp sử dụng adb
để cài đặt ứng dụng trên trình mô phỏng hoặc thiết bị. Thay vào đó, Android Studio sẽ xử lý việc đóng gói và cài đặt ứng dụng cho bạn.
Thiết lập chuyển tiếp cổng
Dùng lệnh forward
để thiết lập tính năng chuyển tiếp cổng tuỳ ý, trong đó chuyển tiếp các yêu cầu từ một cổng máy tính lưu trữ cụ thể sang một cổng khác trên thiết bị.
Ví dụ sau đây thiết lập tính năng chuyển tiếp cổng máy tính lưu trữ 6100 đến cổng thiết bị 7100:
adb forward tcp:6100 tcp:7100
Ví dụ sau đây thiết lập tính năng chuyển tiếp cổng máy tính lưu trữ 6100 đến local:logd:
adb forward tcp:6100 local:logd
Điều này sẽ hữu ích nếu bạn đang cố gắng xác định nội dung nào đang được gửi đến một cổng nhất định trên thiết bị. Tất cả dữ liệu đã nhận sẽ được ghi vào trình nền ghi nhật ký hệ thống và hiển thị trong nhật ký thiết bị.
Sao chép tệp vào và từ thiết bị
Sử dụng các lệnh pull
và push
để sao chép các tệp vào và từ một thiết bị. Không giống như lệnh install
, chỉ sao chép tệp APK vào một vị trí cụ thể, lệnh pull
và push
cho phép bạn sao chép thư mục và tệp tuỳ ý vào bất kỳ vị trí nào trong thiết bị.
Để sao chép một tệp hoặc thư mục và thư mục con của nó từ thiết bị, làm như sau:
adb pull remote local
Để sao chép một tệp hoặc thư mục và thư mục con của tệp đó vào thiết bị, làm như sau:
adb push local remote
Thay thế local
và remote
bằng các đường dẫn đến
tệp/thư mục tiêu trên máy phát triển của bạn (địa phương) và trên
thiết bị (từ xa). Ví dụ:
adb push myfile.txt /sdcard/myfile.txt
Dừng máy chủ adb
Trong một số trường hợp, bạn có thể cần phải dừng quá trình máy chủ adb
rồi khởi động lại để giải quyết vấn đề. Ví dụ: trường hợp này có thể xảy ra nếu adb
không phản hồi một lệnh.
Để dừng máy chủ adb
, hãy dùng lệnh adb kill-server
.
Sau đó, bạn có thể khởi động lại máy chủ bằng cách ra bất kỳ lệnh adb
nào khác.
Ra lệnh adb
Ra các lệnh adb
qua một dòng lệnh trên máy phát triển của bạn hoặc qua một tập lệnh bằng các lệnh sau:
adb [-d | -e | -s serial_number] command
Nếu chỉ có một trình mô phỏng đang chạy hoặc chỉ một thiết bị được kết nối, thì lệnh adb
sẽ được gửi đến thiết bị đó theo mặc định. Nếu nhiều trình mô phỏng đang chạy và/hoặc nhiều thiết bị được đính kèm, bạn cần sử dụng tuỳ chọn -d
, -e
hoặc -s
để chỉ định thiết bị mục tiêu mà lệnh cần được hướng đến.
Bạn có thể xem danh sách chi tiết tất cả các lệnh adb
được hỗ trợ bằng lệnh sau đây:
adb --help
Phát lệnh shell
Bạn có thể dùng lệnh shell
để ra các lệnh trên thiết bị thông qua adb
hoặc để bắt đầu một shell tương tác. Để phát ra một lệnh duy nhất, hãy sử dụng lệnh shell
như sau:
adb [-d |-e | -s serial_number] shell shell_command
Để bắt đầu một màn hình shell tương tác trên thiết bị, hãy sử dụng lệnh shell
như sau:
adb [-d | -e | -s serial_number] shell
Để thoát khỏi màn hình shell tương tác, nhấn Control+D
hoặc nhập exit
.
Android cung cấp hầu hết các công cụ dòng lệnh Unix thông thường. Để biết danh sách các công cụ có sẵn, hãy sử dụng lệnh sau:
adb shell ls /system/bin
Hầu hết các lệnh thông qua đối số --help
đều có thể dùng trợ giúp.
Nhiều lệnh shell được
toybox cung cấp.
Việc trợ giúp chung áp dụng cho tất cả các lệnh của toybox hiện có qua toybox --help
.
Với Công cụ nền tảng Android 23 trở lên, adb
xử lý các đối số giống như lệnh ssh(1)
. Thay đổi này đã khắc phục rất nhiều vấn đề về chèn lệnh và giúp bạn có thể thực thi các lệnh chứa siêu ký tự shell một cách an toàn, chẳng hạn như adb install Let\'sGo.apk
. Tuy nhiên, thay đổi này có nghĩa là việc diễn giải bất kỳ lệnh nào chứa siêu ký tự shell cũng đã thay đổi.
Ví dụ: lệnh adb shell setprop key 'two words'
hiện là một lỗi do dấu ngoặc kép bị shell cục bộ nhập và thiết bị thấy adb shell setprop key two words
. Để lệnh hoạt động, hãy trích dẫn hai lần, một lần cho shell cục bộ và một lần cho shell từ xa, giống như cách bạn thực hiện với ssh(1)
. Ví dụ: adb shell setprop key "'two words'"
hoạt động vì shell cục bộ lấy cấp độ trích dẫn bên ngoài và thiết bị vẫn thấy cấp độ trích dẫn bên trong: setprop key 'two words'
. Bạn cũng có thể thoát, nhưng việc trích dẫn hai lần thường sẽ dễ dàng hơn.
Xem thêm Logcat Command-Line Tool (công cụ dòng lệnh Logcat). Công cụ này rất hữu ích trong việc theo dõi nhật ký hệ thống.
Trình quản lý hoạt động gọi
Trong một shell adb
, bạn có thể ra các lệnh bằng công cụ của trình quản lý hoạt động (am
) để thực hiện các hành động khác nhau trên hệ thống, chẳng hạn như bắt đầu một hoạt động, buộc dừng một quy trình, phát một ý định, sửa đổi các tính năng của màn hình thiết bị, v.v.
Khi ở trong một shell, cú pháp am
là:
am command
Bạn cũng có thể trực tiếp ra lệnh của trình quản lý hoạt động từ adb
mà không cần nhập shell từ xa. Ví dụ:
adb shell am start -a android.intent.action.VIEW
Lệnh | Mô tả |
---|---|
start [options] intent
|
Bắt đầu Activity do intent chỉ định. Có các tuỳ chọn sau:
|
startservice [options] intent
|
Bắt đầu Service do
intent chỉ định. Có các tuỳ chọn sau:
|
force-stop package
|
Buộc dừng mọi hoạt động liên kết với package .
|
kill [options] package
|
Loại bỏ tất cả quy trình liên kết với package . Lệnh này chỉ loại bỏ các quy trình có thể an toàn để được loại bỏ và sẽ không ảnh hưởng đến trải nghiệm người dùng.
Có các tuỳ chọn sau:
|
kill-all
|
Loại bỏ tất cả quy trình nền. |
broadcast [options] intent
|
Đưa ra ý định phát sóng. Có các tuỳ chọn sau:
|
instrument [options] component
|
Bắt đầu theo dõi bằng một thực thể Instrumentation .
Thông thường, component đích
có dạng test_package/runner_class . Có các tuỳ chọn sau:
|
profile start process file
|
Bắt đầu trình phân tích tài nguyên trên process , hãy ghi kết quả vào file . |
profile stop process
|
Dừng tính năng hồ sơ trên process . |
dumpheap [options] process file
|
Kết xuất vùng nhớ khối xếp process , ghi vào file .Có các tuỳ chọn sau:
|
set-debug-app [options] package
|
Hãy đặt ứng dụng package để gỡ lỗi. Có các tuỳ chọn sau:
|
clear-debug-app
|
Xoá gói đã đặt trước đó để gỡ lỗi bằng set-debug-app . |
monitor [options]
|
Bắt đầu theo dõi các sự cố hoặc lỗi ANR. Có các tuỳ chọn sau:
|
screen-compat {on | off} package
|
Kiểm soát chế độ tương thích với màn hình của package . |
display-size [reset | widthxheight]
|
Ghi đè kích thước hiển thị thiết bị.
Lệnh này sẽ giúp bạn kiểm thử ứng dụng của mình trên nhiều kích thước màn hình bằng cách bắt chước một độ phân giải màn hình nhỏ trên một thiết bị có màn hình lớn và ngược lại.
Ví dụ: |
display-density dpi
|
Ghi đè mật độ hiển thị của thiết bị.
Lệnh này sẽ hữu ích khi kiểm thử ứng dụng trên các mật độ màn hình khác nhau bằng cách bắt chước môi trường màn hình mật độ cao bằng cách sử dụng màn hình có mật độ mật độ thấp và ngược lại.
Ví dụ: |
to-uri intent
|
In bản đặc tả ý định cho trước dưới dạng URI. |
to-intent-uri intent
|
In bản đặc tả ý định cho trước dưới dạng một URI intent: . |
Quy cách cho đối số ý định
Đối với các lệnh của trình quản lý hoạt động mà sử dụng đối số intent
, bạn có thể chỉ định ý định đó bằng các tuỳ chọn sau:
Gọi trình quản lý gói (pm
)
Trong một shell adb
, bạn có thể ra các lệnh bằng công cụ của trình quản lý gói (pm
) để thực hiện các hành động và truy vấn về gói ứng dụng được cài đặt trên thiết bị.
Khi ở trong một shell, cú pháp pm
là:
pm command
Bạn cũng có thể trực tiếp ra lệnh của trình quản lý gói từ adb
mà không cần nhập shell từ xa. Ví dụ:
adb shell pm uninstall com.example.MyApp
Lệnh | Mô tả |
---|---|
list packages [options] filter
|
In tất cả các gói, tuỳ chọn chỉ in những gói có tên gói chứa văn bản trong filter . Tuỳ chọn:
|
list permission-groups
|
In tất cả các nhóm quyền đã biết. |
list permissions [options] group
|
In tất cả các quyền đã biết, tuỳ chọn chỉ những quyền trong group . Tuỳ chọn:
|
list instrumentation [options]
|
Liệt kê tất cả các gói kiểm thử. Tuỳ chọn:
|
list features
|
In tất cả các tính năng của hệ thống. |
list libraries
|
In tất cả các thư viện mà thiết bị hiện tại hỗ trợ. |
list users
|
In tất cả người dùng trên hệ thống. |
path package
|
In đường dẫn đến tệp APK của package nhất định. |
install [options] path
|
Cài đặt một gói (do path chỉ định) vào hệ thống. Tuỳ chọn:
|
uninstall [options] package
|
Xoá một gói khỏi hệ thống. Tuỳ chọn:
|
clear package
|
Xoá tất cả dữ liệu liên kết với một gói. |
enable package_or_component
|
Bật gói hoặc thành phần đã cho (được viết là "gói/lớp"). |
disable package_or_component
|
Tắt gói hoặc thành phần đã cho (được viết là "gói/lớp"). |
disable-user [options] package_or_component
|
Tuỳ chọn:
|
grant package_name permission
|
Cấp quyền cho một ứng dụng. Trên các thiết bị chạy Android 6.0 (API cấp 23) trở lên, quyền này có thể là bất kỳ quyền nào được khai báo trong tệp kê khai ứng dụng. Trên các thiết bị chạy Android 5.1 (API cấp 22) trở xuống, phải là một quyền tuỳ chọn được ứng dụng xác định. |
revoke package_name permission
|
Thu hồi quyền của một ứng dụng. Trên các thiết bị chạy Android 6.0 (API cấp 23) trở lên, quyền này có thể là bất kỳ quyền nào được khai báo trong tệp kê khai ứng dụng. Trên các thiết bị chạy Android 5.1 (API cấp 22) trở xuống, phải là một quyền tuỳ chọn được ứng dụng xác định. |
set-install-location location
|
Thay đổi vị trí cài đặt mặc định. Giá trị vị trí:
Lưu ý: Thao tác này chỉ nhằm gỡ lỗi. Việc sử dụng ứng dụng này có thể khiến các ứng dụng bị hỏng và hành vi không mong muốn khác. |
get-install-location
|
Trả về vị trí cài đặt hiện tại. Giá trị trả về:
|
set-permission-enforced permission [true | false]
|
Chỉ định xem có cần thực thi quyền đã cho hay không. |
trim-caches desired_free_space
|
Cắt bớt các tệp bộ nhớ đệm để đạt được dung lượng trống đã cho. |
create-user user_name
|
Tạo một người dùng mới bằng user_name đã cho, in ra giá trị nhận dạng người dùng mới của người dùng đó. |
remove-user user_id
|
Xoá người dùng có user_id đã cho, đồng thời xoá tất cả dữ liệu liên kết với người dùng đó |
get-max-users
|
In số lượng người dùng tối đa mà thiết bị hỗ trợ. |
get-app-links [options] [package]
|
In trạng thái xác minh miền cho package đã cho hoặc cho tất cả các gói nếu không có gói nào được chỉ định. Mã trạng thái được xác định như sau:
Có các tuỳ chọn sau:
|
reset-app-links [options] [package]
|
Đặt lại trạng thái xác minh miền cho gói đã cho, hoặc cho tất cả các gói nếu không có gói nào được chỉ định.
Có các tuỳ chọn sau:
|
verify-app-links [--re-verify] [package]
|
Phát đi thông báo yêu cầu xác minh cho package đã cho hoặc cho tất cả các gói nếu không có gói nào được chỉ định. Chỉ gửi nếu trước đó gói chưa ghi lại phản hồi nào.
|
set-app-links [--package package] state domains
|
Đặt trạng thái của miền cho một gói theo cách thủ công. Để tác vụ này hoạt động, gói phải khai báo miền là autoVerify. Lệnh này sẽ không báo cáo lỗi cho những miền không thể áp dụng.
|
set-app-links-user-selection --user user_id [--package package]
enabled domains
|
Đặt trạng thái lựa chọn của người dùng máy tính lưu trữ cho một gói theo cách thủ công. Gói phải khai báo miền để mã này hoạt động. Lệnh này sẽ không báo cáo lỗi cho những miền không thể áp dụng.
|
set-app-links-user-selection --user user_id [--package package]
enabled domains
|
Đặt trạng thái lựa chọn của người dùng máy tính lưu trữ cho một gói theo cách thủ công. Gói phải khai báo miền để mã này hoạt động. Lệnh này sẽ không báo cáo lỗi cho những miền không thể áp dụng.
|
set-app-links-allowed --user user_id [--package package] allowed
|
Bật/tắt chế độ cài đặt xử lý đường liên kết được xác minh tự động cho một gói.
|
get-app-link-owners --user user_id [--package package] domains
|
In chủ sở hữu của một miền cụ thể cho người dùng nhất định theo thứ tự ưu tiên từ thấp đến cao.
|
Trình quản lý chính sách thiết bị của lệnh gọi (dpm
)
Để giúp bạn phát triển và kiểm thử các ứng dụng quản lý thiết bị, ra các lệnh cho công cụ trình quản lý chính sách thiết bị (dpm
). Sử dụng công cụ này để kiểm soát ứng dụng quản trị đang hoạt động hoặc thay đổi dữ liệu về trạng thái của một chính sách trên thiết bị.
Khi ở trong một shell, cú pháp dpm
là:
dpm command
Bạn cũng có thể trực tiếp ra một lệnh của trình quản lý chính sách thiết bị ngay từ adb
mà không cần nhập shell từ xa:
adb shell dpm command
Lệnh | Mô tả |
---|---|
set-active-admin [options] component
|
Đặt component làm quản trị viên đang hoạt động.
Có các tuỳ chọn sau:
|
set-profile-owner [options] component
|
Đặt component làm quản trị viên đang hoạt động và gói của nó làm chủ sở hữu hồ sơ cho một người dùng hiện tại.
Có các tuỳ chọn sau:
|
set-device-owner [options] component
|
Đặt component làm quản trị viên đang hoạt động và gói của nó làm chủ sở hữu thiết bị.
Có các tuỳ chọn sau:
|
remove-active-admin [options] component
|
Tắt một quản trị viên đang hoạt động. Ứng dụng phải khai báo android:testOnly trong tệp kê khai. Lệnh này cũng sẽ loại bỏ chủ sở hữu của thiết bị và hồ sơ này.
Có các tuỳ chọn sau:
|
clear-freeze-period-record
|
Xoá bản ghi của các khoảng thời gian đóng băng đã đặt trước đó trên thiết bị cho các bản cập nhật OTA của hệ thống. Việc này rất hữu ích để tránh các hạn chế về việc lập lịch biểu thiết bị khi phát triển các ứng dụng quản lý khoảng thời gian đóng băng. Xem Quản lý bản cập nhật hệ thống.
Được hỗ trợ trên các thiết bị chạy Android 9.0 (API cấp 28) trở lên. |
force-network-logs
|
Buộc hệ thống làm cho mọi nhật ký mạng hiện có sẵn sàng truy xuất bằng DPC. Nếu có kết nối hoặc nhật ký DNS, DPC sẽ nhận được lệnh gọi lại onNetworkLogsAvailable() . Xem phần Ghi nhật ký hoạt động mạng.
Lệnh này bị giới hạn tốc độ. Được hỗ trợ trên các thiết bị chạy Android 9.0 (API cấp 28) trở lên. |
force-security-logs
|
Buộc hệ thống cung cấp bất kỳ nhật ký bảo mật hiện có nào cho DPC. Nếu có sẵn nhật ký, DPC sẽ nhận được lệnh gọi lại onSecurityLogsAvailable() . Xem Ghi nhật ký hoạt động
thiết bị của doanh nghiệp.
Lệnh này bị giới hạn tốc độ. Được hỗ trợ trên các thiết bị chạy Android 9.0 (API cấp 28) trở lên. |
Chụp ảnh màn hình
Lệnh screencap
là một tiện ích shell để chụp ảnh màn hình thiết bị.
Khi ở trong một shell, cú pháp screencap
là:
screencap filename
Để sử dụng screencap
từ dòng lệnh, hãy nhập nội dung sau:
adb shell screencap /sdcard/screen.png
Dưới đây là một phiên chụp màn hình mẫu, sử dụng shell adb
để chụp ảnh màn hình và lệnh pull
để tải tệp xuống qua thiết bị:
$ adb shell shell@ $ screencap /sdcard/screen.png shell@ $ exit $ adb pull /sdcard/screen.png
Quay video
Lệnh screenrecord
là một tiện ích shell để ghi lại màn hình của các thiết bị chạy Android 4.4 (API cấp 19) trở lên. Tiện ích này ghi lại hoạt động trên màn hình vào một tệp MPEG-4. Bạn có thể sử dụng tệp này để tạo video quảng cáo hoặc đào tạo hoặc để gỡ lỗi và kiểm thử.
Trong một shell, hãy sử dụng cú pháp sau:
screenrecord [options] filename
Để sử dụng screenrecord
từ dòng lệnh, hãy nhập nội dung sau:
adb shell screenrecord /sdcard/demo.mp4
Dừng ghi màn hình bằng cách nhấn tổ hợp phím Control+C. Nếu không, quá trình quay sẽ tự động dừng ở 3 phút hoặc giới hạn thời gian do --time-limit
đặt.
Để bắt đầu quay màn hình thiết bị, hãy chạy lệnh screenrecord
để quay video. Sau đó, hãy chạy lệnh pull
để tải video từ thiết bị xuống máy tính lưu trữ. Dưới đây là ví dụ về một phiên ghi hình:
$ adb shell shell@ $ screenrecord --verbose /sdcard/demo.mp4 (press Control + C to stop) shell@ $ exit $ adb pull /sdcard/demo.mp4
Tiện ích screenrecord
có thể ghi lại ở bất kỳ độ phân giải và tốc độ bit nào được hỗ trợ theo yêu cầu của bạn, trong khi vẫn giữ nguyên tỷ lệ khung hình của màn hình thiết bị. Theo mặc định, các bản ghi tiện ích ở độ phân giải và hướng màn hình gốc sẽ có thời lượng tối đa là ba phút.
Các giới hạn của tiện ích screenrecord
:
- Âm thanh sẽ không được ghi lại bằng tệp video.
- Các thiết bị chạy Wear OS không có tính năng quay video.
- Một số thiết bị có thể không ghi lại được ở độ phân giải màn hình gốc. Nếu bạn gặp sự cố với việc ghi màn hình, thử sử dụng độ phân giải màn hình thấp hơn.
- Xoay màn hình trong khi quay không được hỗ trợ. Nếu màn hình xoay trong khi quay, một số màn hình sẽ bị cắt khi quay video.
Mô tuỳ | Mô tả |
---|---|
--help
|
Hiển thị cú pháp và tuỳ chọn lệnh |
--size widthxheight
|
Đặt kích thước video: 1280x720 . Giá trị mặc định là độ phân giải hiển thị gốc của thiết bị (nếu được hỗ trợ), 1280x720 nếu không được hỗ trợ. Để có kết quả tốt nhất, hãy sử dụng kích thước được bộ mã hoá Video nâng cao (AVC) hỗ trợ trên thiết bị của bạn. |
--bit-rate rate |
Đặt tốc độ bit của video, tính bằng megabit mỗi giây. Giá trị mặc định là 20 Mb/giây.
Bạn có thể tăng tốc độ bit để cải thiện chất lượng video. Tuy nhiên, làm như vậy sẽ dẫn đến kích thước các tệp phim lớn hơn. Ví dụ sau đây đặt tốc độ bit bản ghi thành 6Mbps: screenrecord --bit-rate 6000000 /sdcard/demo.mp4 |
--time-limit time |
Đặt thời gian ghi hình tối đa tính bằng giây. Giá trị mặc định và tối đa là 180 (3 phút). |
--rotate |
Xoay đầu ra 90 độ. Tính năng này đang trong giai đoạn thử nghiệm. |
--verbose |
Hiển thị thông tin nhật ký trên màn hình dòng lệnh. Nếu bạn không đặt tuỳ chọn này, tiện ích sẽ không hiển thị bất kỳ thông tin nào trong khi chạy. |
Đọc hồ sơ ART cho ứng dụng
Kể từ Android 7.0 (API cấp 24), Android runtime (ART) sẽ thu thập hồ sơ thực thi cho các ứng dụng đã cài đặt được dùng để tối ưu hoá hiệu suất của ứng dụng. Kiểm tra các hồ sơ đã thu thập để tìm hiểu phương thức nào được thực thi thường xuyên và lớp nào được dùng trong quá trình khởi động ứng dụng.
Lưu ý: Bạn chỉ có thể truy xuất tên tệp hồ sơ thực thi nếu có quyền truy cập thư mục gốc vào hệ thống tệp, chẳng hạn như trên trình mô phỏng.
Để tạo một mẫu văn bản cho thông tin hồ sơ, hãy sử dụng lệnh sau:
adb shell cmd package dump-profiles package
Để truy xuất tệp được tạo, hãy sử dụng:
adb pull /data/misc/profman/package.prof.txt
Đặt lại thiết bị thử nghiệm
Nếu bạn kiểm thử ứng dụng trên nhiều thiết bị kiểm thử, có lẽ bạn nên đặt lại thiết bị của mình giữa các lần kiểm thử, chẳng hạn như để loại bỏ dữ liệu người dùng và đặt lại môi trường thử nghiệm. Bạn có thể đặt lại thiết bị kiểm thử chạy trên Android 10 (API cấp 29) trở lên về trạng thái ban đầu bằng lệnh shell testharness
adb
, như minh hoạ bên dưới.
adb shell cmd testharness enable
Khi khôi phục thiết bị bằng testharness
, thiết bị sẽ tự động sao lưu khoá RSA cho phép gỡ lỗi qua máy trạm hiện tại ở một vị trí ổn định. Nghĩa là, sau khi thiết bị được đặt lại, máy trạm có thể tiếp tục gỡ lỗi và ra các lệnh adb
cho thiết bị mà không cần đăng ký khoá mới theo cách thủ công.
Ngoài ra, để giúp bạn tiếp tục thử nghiệm ứng dụng một cách dễ dàng và an toàn hơn, hãy dùng testharness
để khôi phục thiết bị cũng sẽ thay đổi các chế độ cài đặt sau trên thiết bị:
- Thiết bị thiết lập một số cài đặt hệ thống nhất định để trình hướng dẫn thiết lập thiết bị ban đầu không xuất hiện. Nghĩa là, thiết bị chuyển sang trạng thái mà từ đó bạn có thể nhanh chóng cài đặt, gỡ lỗi và kiểm thử ứng dụng.
- Cài đặt:
- Tắt màn hình khoá
- Tắt cảnh báo khẩn cấp
- Tắt tính năng tự động đồng bộ hoá cho tài khoản
- Tắt tính năng tự động cập nhật hệ thống
- Khác:
- Tắt các ứng dụng bảo mật được cài đặt sẵn
Nếu ứng dụng của bạn cần phát hiện và điều chỉnh cho phù hợp với chế độ cài đặt mặc định của lệnh testharness
, hãy sử dụng ActivityManager.isRunningInUserTestHarness()
.
sqlite
sqlite3
bắt đầu chương trình dòng lệnh sqlite
để kiểm tra cơ sở dữ liệu SQLite.
Nó bao gồm các lệnh như .dump
để in (print) nội dung của bảng và .schema
để in câu lệnh SQL CREATE
cho bảng hiện có.
Bạn cũng có thể thực thi các lệnh SQLite qua dòng lệnh, như dưới đây.
$ adb -s emulator-5554 shell $ sqlite3 /data/data/com.example.app/databases/rssitems.db SQLite version 3.3.12 Enter ".help" for instructions
Lưu ý: Bạn chỉ có thể truy cập cơ sở dữ liệu SQLite nếu có quyền truy cập thư mục gốc vào hệ thống tệp, chẳng hạn như trên trình mô phỏng.
Để biết thêm thông tin, hãy xem tài liệu về dòng lệnh sqlite3
.
Phần phụ trợ USB adb
Máy chủ adb có thể tương tác với ngăn xếp USB thông qua 2 phần phụ trợ. Ứng dụng này có thể sử dụng phần phụ trợ gốc của hệ điều hành (Windows, Linux hoặc macOS) hoặc có thể sử dụng phần phụ trợ libusb
.
Một số tính năng, chẳng hạn như attach
, detach
và phát hiện tốc độ USB, chỉ có sẵn khi sử dụng phần phụ trợ libusb
.
Bạn có thể chọn một phần phụ trợ bằng cách sử dụng biến môi trường ADB_LIBUSB
.
Nếu bạn không đặt, adb sẽ sử dụng phần phụ trợ mặc định. Hành vi mặc định khác nhau giữa các hệ điều hành. Kể từ ADB phiên bản 34, phần phụ trợ liubusb
được sử dụng theo mặc định trên tất cả hệ điều hành, ngoại trừ Windows, nơi phần phụ trợ gốc được sử dụng theo mặc định. Nếu bạn đặt ADB_LIBUSB
, thì thuộc tính này sẽ xác định xem có sử dụng phần phụ trợ gốc hay libusb
hay không. Hãy xem trang hướng dẫn về adb để biết thêm thông tin về các biến môi trường adb.
Phần phụ trợ mDNS adb
ADB có thể sử dụng giao thức DNS đa địa chỉ để tự động kết nối máy chủ và thiết bị. Máy chủ ADB cung cấp hai phần phụ trợ, Bonjour (mdnsứnger của Apple) và Openscreen.
Phần phụ trợ Bonjour cần có một trình nền đang chạy trên máy chủ lưu trữ.
Trên macOS, trình nền tích hợp của Apple luôn chạy, nhưng trên Windows và Linux, người dùng phải đảm bảo trình nền mdnsd
đang chạy.
Nếu lệnh adb mdns check
trả về lỗi, thì có thể ADB đang sử dụng phần phụ trợ Bonjour nhưng không có trình nền Bonjour nào đang chạy.
Phần phụ trợ Openscreen không cần trình nền chạy trên máy. Hỗ trợ cho phần phụ trợ Openscreen trên macOS bắt đầu từ ADB phiên bản 35. Windows và Linux được hỗ trợ kể từ ADB phiên bản 34.
Theo mặc định, ADB sử dụng phần phụ trợ Bonjour. Bạn có thể thay đổi hành vi này bằng cách sử dụng biến môi trường ADB_MDNS_OPENSCREEN
(đặt thành 1
hoặc 0
). Hãy xem trang hướng dẫn sử dụng ADB để biết thêm chi tiết.