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 một 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 các ứng dụng. Lệnh này cung cấp quyền truy cập vào một vỏ 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 máy khách-máy chủ bao gồm ba thành phần:
- Một ứng dụng: Ứng dụng này sẽ gửi lệnh. Khách hàng chạy trên máy phát triển của bạn. Bạn có thể gọi một ứng dụng từ một dòng lệnh bằng cách dùng một lệnh adb.
- Một daemon (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ủ 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. Bạn có thể tải
gói này xuống bằng Trình quản lý SDK để cài đặt
gói này tại android_sdk/platform-tools/
. Hoặc nếu muốn có gói Công cụ nền tảng Android SDK
độc lập, bạn có thể tải xuống gói này 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 xem có quá trình máy chủ adb nào đang chạy hay không. Nếu không có, quá trình sẽ bắt đầu 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ừ máy khách adb—tất cả máy khách 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. Dịch vụ này định vị các trình mô phỏng bằng cách quét các cổng có số lẻ trong dải ô 5555 đến 5585, dải ô được 16 trình mô phỏng đầu tiên sử dụng. Khi tìm thấy một adb daemon (adbd), máy chủ sẽ thiết lập kết nối với cổng đó. Xin lưu ý rằ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à cứ tiếp tục như vậy...
Như đã hiển thị, 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 các kết nối cho tất 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 khách adb, nên bạn có thể kiểm soát mọi thiết bị từ bất kỳ ứng dụng nào (hoặc từ tập lệnh).
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ị kết nối qua USB, bạn phải bật gỡ lỗi USB trong phần cài đặt hệ thống của thiết bị, trong Tùy chọn cho nhà phát triển. Để sử dụng adb với một thiết bị kết nối qua Wi-Fi, hãy xem phần Kết nối với một thiết bị qua Wi-Fi.
Trên Android 4.2 trở lên, màn hình Tùy chọn cho nhà phát triển sẽ bị ẩn theo mặc định. Để hiển thị số điện thoại, hãy chuyển đến phần Cài đặt > Giới thiệu về điện thoại rồi nhấn vào Số bản dựng bảy lần. Quay lại màn hình trước để tìm Tùy chọn cho nhà phát triển ở dưới cùng.
Trên một số thiết bị, màn hình Tùy chọn cho nhà phát triển có thể được đặt hoặc đặt tên khác.
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
từ 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à "thiết bị".
Lưu ý: Khi bạn kết nối một thiết bị chạy Android 4.2.2 trở lên, hệ thống sẽ hiển thị một hộp thoại hỏi xem có chấp nhận khóa 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 bảo vệ thiết bị của người dùng vì đảm bảo rằng không thể thực thi gỡ lỗi USB và các lệnh adb khác, trừ khi bạn có thể mở khóa 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 bài viết 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 ( phiên bản Android 11 trở lên)
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. Hãy xem hướng dẫn gỡ lỗi ứng dụng Wear OS để biết thêm thông tin.
Android 11 trở lên hỗ trợ triển khai và gỡ lỗi ứng dụng không dây khỏi máy trạm bằng cách sử dụng Android Debug Bridge (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 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, bạn phải hoàn tất các bước 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 thiết bị của bạn đang chạy trên Android 11 trở lên. Để biết thêm thông tin, hãy xem phần Kiểm tra và cập nhật phiên bản Android.
-
Đảm bảo bạn có Android Studio Bumblebee. 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 tùy chọn cho nhà phát triển trên thiết bị:
-
Trên thiết bị, hãy tìm tùy chọn Số bản dựng. Bạn có thể tìm thấy mã này ở các vị trí sau cho các thiết bị:
Thiết bị Cài đặt Google Pixel
Cài đặt > Giới thiệu về điện thoại > Số bản dựng.
Samsung Galaxy S8 trở lên
Cài đặt > Giới thiệu về điện thoại > Thông tin phần mềm > Số bản dựng
LG G6 trở lên
Cài đặt > Giới thiệu về điện thoại > Thông tin phần mềm > Số bản dựng
HTC U11 trở lên
Cài đặt > Giới thiệu > Thông tin phần mềm > Thêm > Số bản dựng hoặc Cài đặt > Hệ thống > Giới thiệu về điện thoại > Thông tin phần mềm > Thêm > Số bản dựng
OnePlus 5T trở lên
Cài đặt > Giới thiệu về điện thoại > Số bản dựng.
-
Nhấn vào tùy chọn Số bản dựng bảy lần cho đến khi bạn thấy thông báo
You are now a developer!
Điều này sẽ bật tùy chọn cho nhà phát triển trên điện thoại của bạn.
-
-
Bật tính năng gỡ lỗi qua Wi-Fi trên thiết bị của bạn:
-
Trên thiết bị, hãy tìm Tùy chọn cho nhà phát triển. Bạn có thể tìm thấy tùy chọn này ở những vị trí sau đối với các thiết bị:
Thiết bị Cài đặt Google Pixel, OnePlus 5T trở lên
Cài đặt > Hệ thống > Tùy chọn cho nhà phát triển
Samsung Galaxy S8 trở lên, LG G6 trở lên, HTC U11 trở lên
Cài đặt > Tùy chọn cho nhà phát triển
-
Trong mục Tùy chọn cho nhà phát triển, hãy cuộn xuống phần Gỡ lỗi rồi bật Gỡ lỗi không dây. Trong cửa sổ bật lên Cho phép gỡ lỗi không dây trên mạng này?, hãy chọn Cho phép.
-
-
Mở Android Studio rồi chọn Ghép nối thiết bị bằng Wi-Fi trong trình đơn thả xuống cấu hình đang chạy.
Hình 1. Trình đơn thả xuống để chạy cấu hình.Cửa sổ Ghép nối thiết bị qua Wi-Fi sẽ bật lên, như minh họa bên dưới.
Hình 2. Cửa sổ bật lên để ghép nối thiết bị bằng mã QR hoặc mã ghép nối -
Trên thiết bị, hãy nhấn vào Gỡ lỗi không dây và ghép nối thiết bị:
Hình 3. Ảnh chụp màn hình cài đặt Gỡ lỗi không dây trên điện thoại Google Pixel.-
Để 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 ở trên.
-
Để 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 từ cửa sổ bật lên Ghép nối thiết bị qua Wi-Fi ở trên. Trên thiết bị, hãy chọn Ghép nối bằng mã ghép nối và ghi lại mã pin gồm sáu chữ số. 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ã PIN gồm sáu chữ số hiển thị trên thiết bị của bạn.
Hình 4. Ví dụ về mục nhập mã PIN có sáu chữ số.
-
-
Sau khi ghép nối, bạn có thể thử triển khai ứng dụng trên 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 Paired devices (Thiết bị đã ghép nối) rồi chọn Forget (Quên).
-
Nếu muốn bật và tắt tính năng gỡ lỗi qua Wi-Fi một cách nhanh chóng, 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 , tìm thấy trongTùy chọn cho nhà phát triển >Ô cài đặt nhanh dành cho nhà phát triển.
Hình 5. Chế độ cài đặt ô cài đặt nhanh dành cho nhà phát triển cho phép bạn bật và tắt tính năng gỡ lỗi nhanh không dây.Ngoài ra, để kết nối với thiết bị của bạn thông qua dòng lệnh mà không dùng Android Studio, hãy làm theo các bước sau:
-
Bật tùy 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 không dây 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 và 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ị với 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.
Hình 6. Thông báo cho biết thiết bị của bạn đã được ghép nối thành công.
-
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
Để đáp ứng các điều kiện tiên quyết khi gỡ lỗi qua Wi-Fi, hãy đảm bảo rằng:
-
Máy trạm và thiết bị của bạn kết nối với cùng một mạng không dây.
-
Thiết bị của bạn đang chạy Android 11 trở lên. Để 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.
-
Bạn có Android Studio Bumblebee. Bạn có thể tải xuống tại đây.
-
Bạn đã cài đặt phiên bản mới nhất của Công cụ nền tảng SDK trên máy trạm của mình.
Kiểm tra xem có các sự cố đã biết khác không
Sau đây là các sự cố đã biết khi gỡ lỗi qua Wi-Fi trong Android Studio và cách khắc phục.
-
Wi-Fi không kết nối: Một số mạng Wi-Fi, chẳng hạn như mạng Wi-Fi doanh nghiệp, có thể chặn kết nối p2p và không cho phép bạn kết nối qua Wi-Fi. Hãy thử kết nối với cáp hoặc mạng Wi-Fi khác.
-
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.
Kết nối với một thiết bị qua Wi-Fi (Android 10 trở xuống)
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 10 trở xuống. Hãy 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 trở xuống, bạn cần thực hiện một số bước ban đầu qua USB, như mô tả bên dưới:
- Kết nối thiết bị Android và máy tính lưu trữ adb của bạn với một mạng Wi-Fi chung có thể truy cập được cho cả hai. Hãy lưu ý rằng 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.
- Nếu bạn đang kết nối với thiết bị Wear OS, hãy tắt Bluetooth trên điện thoại đã ghép nối với thiết bị.
- 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 để nghe 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 mục Cài đặt > Giới thiệu về máy tính bảng (hoặc Giới thiệu về điện thoại ) > Trạng thái > Địa chỉ IP. Hoặc, trên thiết bị Wear OS, bạn có thể tìm thấy địa chỉ IP trong mục Cài đặt > Cài đặt Wi-Fi > Nâng cao > Địa chỉ IP.
-
Kết nối với thiết bị theo địa chỉ IP.
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ị đích.
$ adb devices List of devices attached device_ip_address:5555 device
Bạn đã sẵn sàng tham gia!
Nếu kết nối adb bị mất:
- Đảm bảo rằng máy chủ lưu trữ vẫn kết nối với cùng một mạng Wi-Fi mà thiết bị Android của bạn đang sử dụng.
-
Kết nối lại bằng cách thực thi lại bước
adb connect
. -
Hoặc nếu cách đó không hiệu quả, hãy đặt lại máy chủ adb của bạn:
adb kill-server
Sau đó, hãy bắt đầu lại từ đầu.
Truy vấn dành 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. Bạn có thể 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: Một chuỗi do adb tạo để nhận dạng duy nhất thiết bị bằng số cổng của số đó.
Dưới đây là một số sê-ri mẫu:
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ới adb hoặc không phản hồi.device
: Thiết bị hiện được kết nối với máy chủ adb. Xin lưu ý rằng 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ới adb trong khi hệ thống vẫn đang khởi động. Tuy nhiên, 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 tùy 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ị để 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
Không có trình mô phỏng
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ị trong đầ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. Điều này xảy ra khi tất cả các điều kiện sau đây đều đúng.
- Máy chủ adb không chạy và
- Bạn sử dụng lệnh
emulator
với tùy chọn-port
hoặc-ports
với giá trị cổng được đánh số lẻ từ 5554 đến 5584, và - Cổng 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 và
- 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à không chạy nhiều
hơn 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ư đã giải thích trong các ví dụ sau.
Ví dụ 1: Trong trình tự lệnh sau, lệnh adb devices
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. Để xem danh sách các 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
sẽ hiển thị
danh sách các 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, sau đó 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ề tùy chọn dòng lệnh của trình mô phỏng, xem Sử dụng thông số dòng lệnh.
Gửi lệnh đến 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. Để chỉ định mục tiêu, hãy sử 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 tùy chọn
-s
cùng với các lệnh adb để chỉ định số sê-ri.
Nếu dự định 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
.
Trong ví dụ sau, danh sách các thiết bị đính kèm lấy được, sau đó sử 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 $ adb -s emulator-5555 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ẽ tạo ra lỗi.
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 tùy chọn -e
để gửi lệnh đến trình mô phỏng. Tương tự như vậy, 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 tùy 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 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 tùy chọn -t
kèm theo lệnh install
khi cài đặt một APK thử nghiệm. Để biết thêm thông tin, hãy xem -t
.
Để 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.
Xin lưu ý rằng nếu đang sử dụng Android Studio, thì bạn không cần trực tiếp dùng adb để cài đặt ứng dụng trên trình mô phỏng/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
Bạn có thể dùng lệnh forward
để thiết lập tính năng chuyển tiếp cổng tùy ý, trong đó
chuyển tiếp các yêu cầu từ một cổng máy chủ 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 chủ 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 chủ 6100 đến local:logd:
adb forward tcp:6100 local:logd
Sao chép tệp đến/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 tùy ý 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ị, hãy 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ị, hãy 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 foo.txt /sdcard/foo.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 quy trình này để giải quyết vấn đề (ví dụ: nếu adb không phản hồi lệnh).
Để dừng máy chủ adb, hãy sử dụng lệnh adb kill-server
.
Sau đó, bạn có thể khởi động lại máy chủ bằng cách tạo bất kỳ lệnh adb nào khác.
Phát hành lệnh adb
Bạn có thể đưa ra các lệnh adb từ một dòng lệnh trên máy phát triển của bạn hoặc từ một tập lệnh. Mức sử dụng là:
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 tùy chọn -d
, -e
hoặc -s
để chỉ định thiết bị đích mà lệnh sẽ chứa để được chỉ dẫ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ể sử dụng lệnh shell
để thực hiện 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.
Để thực hiện một lệnh, 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, hãy nhấn tổ hợp phím Control + D hoặc nhập exit
.
Lưu ý:
Với Android Platform-Tools 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ự dưới dạng mã 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 foo 'a b'
hiện là một lỗi do
dấu ngoặc đơn ('
) bị vỏ cục bộ nhập và thiết bị thấy
adb shell setprop foo a b
. Để sử dụng lệnh, 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 foo "'a b'"
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 trong phần đối số --help
đều có thể dùng trợ giúp.
Nhiều lệnh shell được
toybox cung cấp.
Dịch vụ trợ giúp chung áp dụng cho tất cả các lệnh của toybox hiện có qua toybox --help
.
Xem thêm Logcat Command-Line Tool, công cụ này rất hữu ích cho việc theo dõi nhật ký hệ thống.
Trình quản lý hoạt động gọi (am
)
Trong một adb shell, bạn có thể đưa 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 và các tính năng khác của màn hình thiết bị. Khi ở trong một shell,
cú pháp sẽ là:
am command
Bạn cũng có thể trực tiếp đưa ra lệnh của trình quản lý hoạt động từ adb mà không cần nhập màn hình từ xa. Ví dụ:
adb shell am start -a android.intent.action.VIEW
Bàn 2. Các lệnh hiện có trên trình quản lý hoạt động
Lệnh | Mô tả |
---|---|
start [options] intent
|
Bắt đầu Activity do
intent chỉ định. Xem Đặc tả cho các đối số ý định. Các tùy chọn là:
|
startservice [options] intent
|
Bắt đầu Service do
intent chỉ định. Xem Đặc tả cho các đối số ý định. Các tùy chọn là:
|
force-stop package
|
Buộc dừng mọi nội dung liên kết với package (tên gói của ứng dụng).
|
kill [options] package
|
Tắt tất cả quy trình liên kết với package (tên gói của ứng dụng). Lệnh này chỉ loại bỏ
các quy trình an toàn để giết người và sẽ không ảnh hưởng đến
trải nghiệm người dùng.
Các tùy chọn là:
|
kill-all
|
Loại bỏ tất cả quy trình nền. |
broadcast [options] intent
|
Đưa ra ý định phát sóng. Xem Đặc tả cho các đối số ý định. Các tùy chọn là:
|
instrument [options] component
|
Bắt đầu theo dõi bằng một
bản sao Instrumentation .
Thông thường, component đích
có dạng test_package/runner_class . Các tùy chọn là:
|
profile start process file
|
Bắt đầu trình phân tích tài nguyên trên process , 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 tùy chọn là:
|
set-debug-app [options] package
|
Hãy đặt ứng dụng package để gỡ lỗi. Các tùy chọn là:
|
clear-debug-app
|
Xóa 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 tùy chọn là:
|
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 thử nghiệm ứ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 bạn thử nghiệm ứng dụng của mình trên các mật độ màn hình khác nhau trên 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: . |
Thông số kỹ thuật cho đối số có ý định
Đối với các lệnh của trình quản lý hoạt động sử dụng một đối số intent
, bạn có thể
chỉ định ý định đó bằng các tùy chọn sau:
Gọi người quản lý gói (pm
)
Trong một adb shell, bạn có thể đưa 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 sẽ là:
pm command
Bạn cũng có thể trực tiếp đưa ra lệnh của trình quản lý gói từ adb mà không cần nhập màn hình từ xa. Ví dụ:
adb shell pm uninstall com.example.MyApp
Bàn 3. Các lệnh hiện có đối với người quản lý gói.
Lệnh | Mô tả |
---|---|
list packages [options] filter
|
In tất cả các gói, tùy chọn chỉ in những gói có tên gói chứa văn bản trong filter . Tùy 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, (không bắt buộc)
những quyền trong group . Tùy chọn:
|
list instrumentation [options]
|
Liệt kê tất cả các gói thử nghiệm. Tùy 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 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. Tùy chọn:
|
uninstall [options] package
|
Xóa một gói khỏi hệ thống. Tùy chọn:
|
clear package
|
Xóa 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
|
Tùy 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 không bắt buộc do ứ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 mà bạn đã 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 không bắt buộc do ứ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 ý: Thông tin 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à các 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
|
Hãy cắt bớt các tệp bộ nhớ đệm để giải phóng dung lượng trống. |
create-user user_name
|
Tạo một người dùng mới bằng mã user_name cụ thể,
in ra giá trị nhận dạng người dùng mới của người dùng đó.
|
remove-user user_id
|
Xóa người dùng có mã user_id đã chọn,
đồng thời xóa 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ợ. |
Trình quản lý chính sách thiết bị của cuộc gọi (dpm
)
Để giúp bạn phát triển và thử nghiệm các ứng dụng quản lý thiết bị (hoặc các ứng dụng khác của doanh nghiệp), bạn có thể đưa
ra lệnh cho công cụ 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 là:
dpm command
Bạn cũng có thể đưa 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 khung từ xa:
adb shell dpm command
Bàn 4. Các lệnh hiện có đối với trình quản lý chính sách thiết bị
Lệnh | Mô tả |
---|---|
set-active-admin [options] component
|
Đặt component làm quản trị viên đang hoạt động.
Các tùy chọn là:
|
set-profile-owner [options] component
|
Đặt component làm quản trị viên đang hoạt động và gói dịch vụ làm chủ sở hữu hồ sơ cho một người dùng hiện tại.
Các tùy chọn là:
|
set-device-owner [options] component
|
Đặt component làm quản trị viên đang hoạt động và gói dịch vụ làm chủ sở hữu thiết bị.
Các tùy chọn là:
|
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ẽ xóa chủ sở hữu của thiết bị và hồ sơ này.
Các tùy chọn là:
|
clear-freeze-period-record
|
Xóa 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 sẽ hữu ích
để tránh các hạn chế về lịch biểu của thiết bị khi phát triển các ứng dụng quản lý khoảng thời gian cố định. 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 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 khung adb để chụp ảnh màn hình và lệnh
pull
để tải tệp xuống từ 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à thử nghiệm.
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 (Command + C trên máy Mac); nếu không, quá trình ghi
sẽ tự động dừng ở mức ba 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 âm:
$ 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ợ mà bạn yêu cầu, 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, hãy 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 ghi, một số màn hình sẽ bị cắt khi quay video.
Bàn 5. Tùy chọn screenrecord
Tùy chọn | Mô tả |
---|---|
--help
|
Hiển thị cú pháp và tùy 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 hỗ trợ
bộ mã hóa Video nâng cao (AVC) 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à 4 Mb mỗi 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
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à giá trị 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 tùy 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 cấu hình thực thi cho các ứng dụng đã cài đặt (được dùng để tối ưu hóa hiệu suất ứng dụng). Bạn nên kiểm tra các hồ sơ đã thu thập để biết loại phương thức nào được xác định là thường xuyên được thực thi và lớp nào sẽ được dùng trong quá trình khởi động ứng dụng.
Để tạo một dạng văn bản cho thông tin hồ sơ, hãy sử dụng lệnh:
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.txt
Đặt lại thiết bị thử nghiệm
Nếu bạn thử nghiệm ứng dụng trên nhiều thiết bị thử nghiệm, chẳng hạn như bạn nên đặt lại thiết bị của mình giữa
các lần thử nghiệm, chẳng hạn như để xóa 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ị thử nghiệm chạy trên thiết bị chạy Android 10 (API cấp 29) trở lên bằng
lệnh testharness
adb shell, như hiển thị 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 khóa 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à đưa ra các lệnh adb cho thiết bị
mà không cần đăng ký khóa 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, sử dụng testharness
để khôi phục thiết bị cũng sẽ thay đổi các tùy chọn cài đặt sau trên thiết bị:
- Thiết bị thiết lập một số chế độ 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à thử nghiệm ứng dụng.
- Cài đặt:
- Tắt màn hình khóa
- Tắt cảnh báo khẩn cấp
- Tắt tính năng tự động đồng bộ hóa 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
, thì bạn có thể 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.
Phương thức này bao gồm các lệnh như .dump
để in 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 từ dòng lệnh, như được hiển thị 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
Để biết thêm thông tin, hãy xem tài liệu về dòng lệnh sqlite3.