Cầu gỡ lỗi Android (adb)

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.

  1. Đả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.

  2. Đả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.

  3. Đảm bảo bạn có Android Studio Bumblebee. Bạn có thể tải xuống tại đây.

  4. 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:

  1. Bật tùy chọn cho nhà phát triển trên thiết bị:

    1. 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.

    2. 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.

  2. Bật tính năng gỡ lỗi qua Wi-Fi trên thiết bị của bạn:

    1. 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

    2. 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.

  3. 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.

    Trình đơn thả xuống để chạy cấu hình
    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.

    Ảnh chụp màn hình của các thiết bị ghép nối qua cửa sổ bật lên của Wi-Fi
    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
  4. 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ị:

    Ảnh chụp màn hình điện thoại Pixel hiển thị tùy chọn cài đặt Hệ thống gỡ lỗi không dây.
    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.
    1. Để 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.

    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 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.

      Ảnh chụp màn hình nhập mã PIN mẫu
      Hình 4. Ví dụ về mục nhập mã PIN có sáu chữ số.
  5. 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).

  6. 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.

    Ảnh chụp màn hình Cài đặt nhanh dành cho nhà phát triển trên điện thoại Google Pixel.
    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:

    1. Bật tùy chọn cho nhà phát triển trên thiết bị như mô tả ở trên.

    2. Bật tính năng Gỡ lỗi không dây trên thiết bị như mô tả ở trên.

    3. 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.

    4. 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ị.

    5. 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.

    6. Khi được nhắc, hãy nhập mã ghép nối, như hiển thị dưới đây.

      Ảnh chụp màn hình của quá trình ghép nối trên dòng lệnh.
      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:

  1. 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.

  2. 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.

  3. Bạn có Android Studio Bumblebee. Bạn có thể tải xuống tại đây.

  4. 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.

  1. 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.

  2. 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:

  1. 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.
  2. 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ị.
  3. Kết nối thiết bị với máy tính lưu trữ bằng cáp USB.
  4. Đặt thiết bị đích để nghe kết nối TCP/IP trên cổng 5555.
    adb tcpip 5555
    
  5. Rút cáp USB khỏi thiết bị đích.
  6. 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.
  7. Kết nối với thiết bị theo địa chỉ IP.
    adb connect device_ip_address:5555
    
  8. 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:

  1. Đả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.
  2. Kết nối lại bằng cách thực thi lại bước adb connect.
  3. 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ệnh devices 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.

  1. Máy chủ adb không chạy và
  2. 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à
  3. 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à
  4. 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$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 pullpush để 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 pullpush 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ế localremote 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à:

  • -D: Bật tính năng gỡ lỗi.
  • -W: Chờ quá trình ra mắt 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ả cho file.
  • -P file: Giống như --start-profiler, nhưng hồ sơ sẽ dừng khi ứng dụng không hoạt động.
  • -R count: Lặp lại hoạt động khởi chạy 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 bạn không xác định, hãy chạy với tư cách là người dùng hiện tại.
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à:

  • --user user_id | current: Chỉ định người dùng nào cần chạy; nếu bạn không xác định, hãy chạy với tư cách là người dùng hiện tại.
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à:

  • --user user_id | all | current: Chỉ định người dùng có quy trình xóa; tất cả người dùng nếu bạn không chỉ định.
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à:

  • [--user user_id | all | current]: Chỉ định người dùng sẽ được gửi đến; nếu bạn không chỉ định, hãy gửi cho tất cả người dùng.
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à:

  • -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ành value. Đối với người chạy thử nghiệm, một dạng phổ biến là -e testrunner_flag value[,value...].
  • -p file: Ghi dữ liệu cấu hình cho file.
  • -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 chạy thử nghiệm.
  • --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 sẽ chạy; người dùng hiện tại nếu không được chỉ định.
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à:

  • --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; sử dụng người dùng hiện tại nếu bạn không chỉ định.
  • -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 tùy chọn là:

  • -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 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à:

  • --gdb: Khởi động gdbserv 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 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ụ:
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 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ụ:
am display-density 480

to-uri intent In bản đặc tả ý định cho trước dưới dạng URI.

Xem Đặc tả cho các đố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 Đặc tả cho các đối số ý định.

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:

  • -f: Xem tệp liên kết.
  • -d: Lọc để chỉ hiển thị các gói đã tắt.
  • -e: Lọc để chỉ hiển thị các gói đã bật.
  • -s: Lọc để chỉ hiển thị các gói hệ thống.
  • -3: Lọc để chỉ hiển thị 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á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, (không bắt buộc) những quyền trong group.

Tùy 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 thử nghiệm.

Tùy chọn:

  • -f: Liệt kê tệp APK cho gói thử nghiệm.
  • target_package: Chỉ liệt kê các gói thử nghiệm 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 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:

  • -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 APK thử nghiệm. Gradle tạo ra một tệp APK thử nghiệm khi bạn chỉ chạy hoặc gỡ lỗi ứng dụng hoặc sử dụng lệnh Build > Build APK trên Android Studio. Nếu APK được tạo bằng SDK xem trước dành cho nhà phát triển (nếu targetSdkVersion là một chữ cái thay vì một số), bạn phải sử dụng tùy chọn -t bằng lệnh install nếu bạn đang cài đặt một APK thử nghiệm.
  • -i installer_package_name: Chỉ định tên gói 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 định
    • 1: 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 APK đã thay đổi.
  • --incremental: Cài đặt đủ 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ý APK, tạo một tệp APK Signature Scheme v4 và đặt tệp này trong cùng thư mục với APK. Tính năng này chỉ được hỗ trợ trên một số thiết bị nhất định. Tùy chọn này buộc adb 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 tùy chọn --wait để chờ cho đến khi APK được cài đặt hoàn toàn trước khi cấp quyền truy cập vào APK.

    --no-incremental ngăn adb sử dụng tính năng này.

uninstall [options] package Xóa một gói khỏi hệ thống.

Tùy chọn:

  • -k: Hãy lưu lại các thư mục bộ nhớ đệm và dữ liệu sau khi xóa gói hàng.
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:

  • --user user_id: Người dùng vô hiệu hóa.
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í:
  • 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: trên phương tiện bên ngoài.

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ề:
  • 0 [auto]: Cho phép hệ thống quyết định vị trí tốt nhất
  • 1 [internal]: Số lượt cài đặt trên bộ nhớ trong của thiết bị
  • 2 [external]: Số lượt cài đặt trên nội dung nghe nhì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 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ợ.
get-app-links [options] [package]

In trạng thái xác minh miền cho package nhất định 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 tùy chỉnh dành riêng cho trình xác minh thiết bị

Các tuỳ chọn là:

  • --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 nhất định 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 tuỳ chọn là:

  • --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 nhất định 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 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. Để mã này hoạt động, gói phải khai báo miền là miền 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ói
  • state: mã để đặt miền, các giá trị hợp lệ là:
    • STATE_NO_RESPONSE (0): đặt lại giống như chưa ghi phản hồi nào.
    • STATE_SUCCESS (1): coi miền là đã đượ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 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/code>: the package to set<
  • enabled: whether or not to approve the domain
  • domains: space separated list of domains to change, or "all" to change every domain.
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 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 đặt
  • enabled: có phê duyệt miền hay không
  • 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-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; hệ thống sẽ đặt lại các gó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 cần truy vấn
  • --package package: cũng có thể 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ói
  • domains: 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 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à:

  • --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 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à:

  • --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 dịch vụ làm chủ sở hữu thiết bị.

Các tùy chọn là:

  • --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ẽ xóa chủ sở hữu của thiết bị và hồ sơ này.

Các tùy chọn là:

  • --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 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.