Cầu gỡ lỗi Android (adb) | Android Developers
Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
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.
Mục Lục
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 của mình cho nhiều thiết bị từ xa mà không cần kết nối thiết bị qua USB. Theo đó, bạn sẽ không cần xử lý những vấn đề thường gặp khi 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.
-
Đảm bảo rằng 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
Dưới đây là danh sách 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. Để giải quyết vấn đề này, kết nối lại với mạng.
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 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 để 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 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ị đích.
$ 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 có tác dụng, hãy đặt lại máy tính lưu trữ
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 $ 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ẽ hiển thị 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 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
.
Để 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 'value'
hiện là một lỗi do dấu ngoặc đơn ('
) bị shell cục bộ nhập (swallowed) và thiết bị thấy adb shell setprop key value
. Để 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 'value'
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.
Xem Quy cách đối số ý định.
Có các tuỳ chọn sau:
-D
: Bật tính năng gỡ lỗi.-W
: Chờ quá trình khởi động hoàn tất.--start-profiler file
: Bắt đầu trình phân tích tài nguyên và gửi kết quả chofile
.-P file
: Giống như--start-profiler
, nhưng việc lập hồ sơ sẽ dừng khi ứng dụng không hoạt động.-R count
: Lặp lại việc khởi động hoạt động đócount
lần. Trước mỗi lần lặp lại, hoạt động hàng đầu sẽ kết thúc.-S
: Buộc dừng ứng dụng đích trước khi bắt đầu hoạt động.--opengl-trace
: Bật tính năng theo dõi hàm OpenGL.--user user_id | current
: Chỉ định người dùng nào cần chạy; nếu không được xác định, thì chạy như người dùng hiện tại.
startservice [options] intent
Bắt đầu Service
do
intent
chỉ định.
Xem Quy cách đối số ý định.
Có các tuỳ chọn sau:
--user user_id | current
: Chỉ định người dùng nào cần chạy; nếu không được xác định, thì chạy như người dùng hiện tại.
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:
--user user_id | all | current
: Chỉ định quy trình nào của người dùng sẽ loại bỏ.
Nếu bạn không chỉ định thì loại bỏ tất cả quy trình của người dùng.
kill-all
Loại bỏ tất cả quy trình nền.
broadcast [options] intent
Đưa ra ý định phát sóng.
Xem Quy cách đối số ý định.
Có các tuỳ chọn sau:
[--user user_id | all | current]
: Chỉ định người dùng nào sẽ được gửi đến; nếu không chỉ định, gửi cho tất cả người dùng.
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:
-r
: In kết quả thô (nếu không giải mãreport_key_streamresult
). Sử dụng cùng với[-e perf true]
để tạo đầu ra thô để đo lường hiệu suất.-e name value
: Đặt đối sốname
thànhvalue
.
Đối với trình kiểm thử, dạng phổ biến là
.
-e testrunner_flag value[,value...]-p file
: Ghi dữ liệu cấu hình vàofile
.-w
: Chờ thiết bị đo lường hoàn tất trước khi quay lại. Bắt buộc đối với
trình kiểm thử.--no-window-animation
: Tắt ảnh động cửa sổ trong khi đang chạy.--user user_id | current
: Chỉ định công cụ người dùng nào sẽ chạy.
Nếu không có chỉ định, hãy chạy trong người dùng hiện tại.
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:
--user [user_id | current]
: Khi cung cấp tên quy trình, chỉ định người dùng quy trình để kết xuất. Nếu không chỉ định thì hệ thống sẽ sử dụng người dùng hiện tại.-n
: Kết xuất dữ liệu gốc của vùng nhớ khối xếp thay vì vùng nhớ khối xếp được quản lý.
set-debug-app [options] package
Hãy đặt ứng dụng package
để gỡ lỗi.
Có các tuỳ chọn sau:
-w
: Chờ trình gỡ lỗi xuất hiện khi ứng dụng khởi động.--persistent
: Giữ lại giá trị này.
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:
--gdb
: Khởi độnggdbserv
trên cổng đã cho khi gặp sự cố/ANR.
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ụ:am display-size 1280x800
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ụ:am display-density 480
to-uri intent
In bản đặc tả ý định cho trước dưới dạng URI.
Xem Quy cách đối số ý định.
to-intent-uri intent
In bản đặc tả ý định cho trước dưới dạng một URI intent:
.
Xem Quy cách đối số ý định.
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:
-a action
- Chọn hành động cho ý định, chẳng hạn như
android.intent.action.VIEW
.
Bạn chỉ có thể khai báo thông tin này một lần. -d data_uri
- Chỉ định URI dữ liệu theo ý định, chẳng hạn như
content://contacts/people/1
.
Bạn chỉ có thể khai báo thông tin này một lần. -t mime_type
- Chỉ định loại MIME ý định, chẳng hạn như
image/png
.
Bạn chỉ có thể khai báo thông tin này một lần. -c category
- Chọn một loại ý định, chẳng hạn như
android.intent.category.APP_CONTACTS
. -n component
- Chỉ định tên thành phần kèm theo tiền tố tên gói để tạo một ý định rõ ràng, chẳng hạn như
com.example.app/.ExampleActivity
. -f flags
- Thêm cờ vào ý định do
setFlags()
hỗ trợ. --esn extra_key
- Thêm phần tử rỗng. Tuỳ chọn này không được hỗ trợ cho ý định URI.
-e | --es extra_key extra_string_value
- Thêm dữ liệu chuỗi dưới dạng một cặp khoá-giá trị.
--ez extra_key extra_boolean_value
- Thêm dữ liệu boolean dưới dạng một cặp khoá-giá trị.
--ei extra_key extra_int_value
- Thêm dữ liệu số nguyên dưới dạng một cặp khoá-giá trị.
--el extra_key extra_long_value
- Thêm dữ liệu dài dưới dạng một cặp khoá-giá trị.
--ef extra_key extra_float_value
- Thêm dữ liệu nổi dưới dạng một cặp khoá-giá trị.
--eu extra_key extra_uri_value
- Thêm dữ liệu URI dưới dạng một cặp khoá-giá trị.
--ecn extra_key extra_component_name_value
- Thêm tên thành phần. Tên này được chuyển đổi và chuyển dưới dạng đối tượng
ComponentName
. --eia extra_key extra_int_value[,extra_int_value...]
- Thêm một mảng số nguyên.
--ela extra_key extra_long_value[,extra_long_value...]
- Thêm một mảng [dữ liệu] dài.
--efa extra_key extra_float_value[,extra_float_value...]
- Thêm một dãy số thực.
--grant-read-uri-permission
- Bao gồm cờ
FLAG_GRANT_READ_URI_PERMISSION
. --grant-write-uri-permission
- Bao gồm cờ
FLAG_GRANT_WRITE_URI_PERMISSION
. --debug-log-resolution
- Bao gồm cờ
FLAG_DEBUG_LOG_RESOLUTION
. --exclude-stopped-packages
- Bao gồm cờ
FLAG_EXCLUDE_STOPPED_PACKAGES
. --include-stopped-packages
- Bao gồm cờ
FLAG_INCLUDE_STOPPED_PACKAGES
. --activity-brought-to-front
- Bao gồm cờ
FLAG_ACTIVITY_BROUGHT_TO_FRONT
. --activity-clear-top
- Bao gồm cờ
FLAG_ACTIVITY_CLEAR_TOP
. --activity-clear-when-task-reset
- Bao gồm cờ
FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET
. --activity-exclude-from-recents
- Bao gồm cờ
FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS
. --activity-launched-from-history
- Bao gồm cờ
FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY
. --activity-multiple-task
- Bao gồm cờ
FLAG_ACTIVITY_MULTIPLE_TASK
. --activity-no-animation
- Bao gồm cờ
FLAG_ACTIVITY_NO_ANIMATION
. --activity-no-history
- Bao gồm cờ
FLAG_ACTIVITY_NO_HISTORY
. --activity-no-user-action
- Bao gồm cờ
FLAG_ACTIVITY_NO_USER_ACTION
. --activity-previous-is-top
- Bao gồm cờ
FLAG_ACTIVITY_PREVIOUS_IS_TOP
. --activity-reorder-to-front
- Bao gồm cờ
FLAG_ACTIVITY_REORDER_TO_FRONT
. --activity-reset-task-if-needed
- Bao gồm cờ
FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
. --activity-single-top
- Bao gồm cờ
FLAG_ACTIVITY_SINGLE_TOP
. --activity-clear-task
- Bao gồm cờ
FLAG_ACTIVITY_CLEAR_TASK
. --activity-task-on-home
- Bao gồm cờ
FLAG_ACTIVITY_TASK_ON_HOME
. --receiver-registered-only
- Bao gồm cờ
FLAG_RECEIVER_REGISTERED_ONLY
. --receiver-replace-pending
- Bao gồm cờ
FLAG_RECEIVER_REPLACE_PENDING
. --selector
- Yêu cầu sử dụng các tuỳ chọn
-d
và-t
để đặt dữ liệu và loại ý định. URI component package
- Bạn có thể chỉ định trực tiếp URI, tên gói và tên thành phần khi không đủ điều kiện bằng một trong các tuỳ chọn trên. Khi một đối số không đủ điều kiện, công cụ sẽ giả định đối số đó là một URI nếu đối số đó chứa dấu “:” (dấu hai chấm). Các công cụ giả định đối số là tên thành phần nếu đối số đó có chứa “/” (dấu gạch chéo lên); nếu không thì giả định đối số đó là tên gói.
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:
-f
: Xem tệp liên kết.-d
: Lọc để chỉ cho thấy các gói đã tắt.-e
: Lọc để chỉ cho thấy các gói đã bật.-s
: Lọc để chỉ cho thấy các gói hệ thống.-3
: Lọc để chỉ cho thấy các gói của bên thứ ba.-i
: Xem trình cài đặt cho các gói.-u
: Bao gồm các gói chưa gỡ cài đặt.--user user_id
: Không gian người dùng để truy vấ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:
-g
: Sắp xếp theo nhóm.-f
: In tất cả thông tin.-s
: Tóm tắt ngắn.-d
: Chỉ liệt kê các quyền nguy hiểm.-u
: Chỉ liệt kê các quyền mà người dùng sẽ thấy.
list instrumentation [options]
Liệt kê tất cả các gói kiểm thử.
Tuỳ chọn:
-f
: Liệt kê tệp APK cho gói kiểm thử.target_package
: Chỉ liệt kê các gói kiểm thử cho ứng dụng này.
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:
-r
: Cài đặt lại một ứng dụng hiện có, giữ lại dữ liệu của ứng dụng đó.-t
: Cho phép cài đặt các tệp APK kiểm thử. Gradle tạo ra một tệp APK kiểm thử khi bạn chỉ chạy hoặc gỡ lỗi ứng dụng hoặc sử dụng lệnh Build > Build APK (Tạo > Tạo APK) trên Android Studio. Nếu tệp APK được tạo bằng SDK xem trước dành cho nhà phát triển, bạn phải thêm cả tuỳ chọn-t
bằng lệnhinstall
nếu đang cài đặt tệp APK kiểm thử.-i installer_package_name
: Chỉ định tên gói của trình cài đặt.--install-location location
: Đặt vị trí cài đặt bằng một trong những giá trị sau:0
: Sử dụng vị trí cài đặt mặc định1
: Cài đặt trên bộ nhớ trong của thiết bị2
: Cài đặt trên phương tiện bên ngoài
-f
: Cài đặt gói trên bộ nhớ trong của hệ thống.-d
: Cho phép hạ cấp mã phiên bản.-g
: Cấp tất cả các quyền có trong tệp kê khai ứng dụng.--fastdeploy
: Cập nhật nhanh gói đã cài đặt bằng cách chỉ cập nhật các phần trong tệp APK đã thay đổi.--incremental
: Cài đặt đủ tệp APK để chạy ứng dụng trong khi truyền trực tuyến dữ liệu còn lại trong nền. Để sử dụng tính năng này, bạn phải ký tệp APK, tạo một tệp APK Signature Scheme v4 rồi đặt tệp này trong cùng thư mục với tệp APK đó. Tính năng này chỉ được hỗ trợ trên một số thiết bị nhất định. Tuỳ chọn này buộcadb
sử dụng tính năng hoặc không thành công nếu không được hỗ trợ kèm theo thông tin chi tiết về lý do tính năng không hoạt động. Thêm tuỳ chọn--wait
để chờ cho đến khi tệp APK được cài đặt hoàn toàn trước khi cấp quyền truy cập vào tệp APK đó.--no-incremental
ngănadb
sử dụng tính năng này.
uninstall [options] package
Xoá một gói khỏi hệ thống.
Tuỳ chọn:
-k
: Lưu lại các thư mục bộ nhớ đệm và dữ liệu sau khi xoá gói.--user user_id
: Chỉ định người dùng cần xoá gói.--versionCode version_code
: Chỉ gỡ cài đặt nếu ứng dụng có mã phiên bản cụ thể.
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:
--user user_id
: Người dùng để tắt.
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í:
0
: Tự động: Để hệ thống quyết định vị trí tốt nhất.1
: Nội bộ: cài đặt trên bộ nhớ trong của thiết bị.2
: Bên ngoài: Cài đặt trên phương tiện bên ngoài.
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ề:
0 [auto]
: Tự động: Để hệ thống quyết định vị trí tốt nhất.1 [internal]
: Cài đặt trên bộ nhớ trong của thiết bị2 [external]
: Cài đặt trên phương tiện bên ngoài
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:
-
none
: chưa ghi lại phản hồi nào cho miền này verified
: đã xác minh miền thành công-
approved
: hiệu lực được phê duyệt, thường là qua shell -
denied
: hiệu lực bị từ chối, thường là qua shell -
migrated
: giữ nguyên thông tin xác minh từ một phản hồi cũ -
restored
: giữ nguyên thông tin xác minh từ một hành động khôi phục dữ liệu người dùng -
legacy_failure
: bị trình xác minh cũ từ chối, lý do không xác định -
system_configured
: được cấu hình thiết bị phê duyệt tự động -
>= 1024
: Mã lỗi tuỳ chỉnh dành riêng cho trình xác minh thiết bị
Có các tuỳ chọn sau:
--user user_id
: bao gồm lựa chọn của người dùng. Bao gồm tất cả các miền, chứ không chỉ là miền autoVerify.
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.
package
: gói cần đặt lại, hoặc “all” để đặt lại tất cả các gói
Có các tuỳ chọn sau:
--user user_id
: bao gồm lựa chọn của người dùng. Bao gồm tất cả các miền, chứ không chỉ là miền autoVerify.
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.
--re-verify
: gửi ngay cả khi gói đã ghi lại phản hồi
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.
--package package
: gói cần đặt, hoặc “all” để đặt tất cả các góistate
: mã để đặt miền, các giá trị hợp lệ là:STATE_NO_RESPONSE (0)
: đặt lại như thể chưa phản hồi nào được ghi lại.STATE_SUCCESS (1)
: coi miền đã được tác nhân xác minh miền xác minh thành công. Xin lưu ý rằng tác nhân xác minh miền có thể ghi đè thông tin này.STATE_APPROVED (2)
: coi miền là luôn được phê duyệt, không cho phép tác nhân xác minh miền thay đổi miền.STATE_DENIED (3)
: coi miền là luôn bị từ chối, không cho phép tác nhân xác minh miền thay đổi miền.
domains
: danh sách được phân tách bằng dấu cách gồm các miền cần thay đổi, hoặc “all” để thay đổi mọi miền.
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.
--user user_id
: người dùng thay đổi lựa chọn cho--package package
: gói cần đặtenabled
: liệu có phê duyệt miền hay khôngdomains
: danh sách được phân tách bằng dấu cách gồm các miền cần thay đổi, hoặc “all” để thay đổi mọi miền.
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.
--user user_id
: người dùng thay đổi lựa chọn cho--package package
: gói cần đặtenabled
: liệu có phê duyệt miền hay khôngdomains
: danh sách được phân tách bằng dấu cách gồm các miền cần thay đổi, hoặc “all” để thay đổi mọi miền.
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.
--user user_id
: người dùng để thay đổi lựa chọn cho--package package
: gói cần đặt, hoặc “all” để đặt tất cả các gói; các gói sẽ được đặt lại nếu không có gói nào được chỉ định.allowed
: true để cho phép gói mở đường liên kết được xác minh tự động, false để vô hiệu hoá
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.
--user user_id
: người dùng để truy vấn--package package
: cũng có thể tuỳ chọn in cho mọi miền web mà một gói khai báo, hoặc “all” để in tất cả các góidomains
: danh sách được phân tách bằng dấu cách gồm các miền cần truy vấn
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:
--user user_id
: Chỉ định người dùng đích. Bạn cũng có thể chuyển--user current
để chọn người dùng hiện tại.
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:
--user user_id
: Chỉ định người dùng đích. Bạn cũng có thể
chuyển--user current
để chọn người dùng hiện tại.--name name
: Chỉ định tên tổ chức mà con người có thể đọc được.
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:
--user user_id
: Chỉ định người dùng đích. Bạn cũng có thể chuyển--user current
để chọn người dùng hiện tại.--name name
: Chỉ định tên tổ chức mà con người có thể đọc được.
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:
--user user_id
: Chỉ định người dùng đích. Bạn cũng có thể chuyển--user current
để chọn người dùng hiện tại.
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
qua 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
qua 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 khi quay đượ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 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ợ), 1280×720 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à 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 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
.