Android Debug Bridge (adb)

Android Debug Bridge (adb) to uniwersalne narzędzie wiersza poleceń, które umożliwia komunikację z urządzenia. Polecenie adb ułatwia wykonywanie różnych czynności na urządzeniach, takich jak instalowanie debugowania aplikacji. adb zapewnia dostęp do powłoki Unix, której można używać do uruchamiania różnych poleceń na urządzeniu. Jest to program klient-serwer, który składa się z 3 elementów:

  • Klient, który wysyła polecenia. Klient działa na komputerze, na którym tworzysz aplikacje. Dostępne opcje aby wywołać klienta z terminalu wiersza poleceń, uruchamiając polecenie adb.
  • Demon (adbd), który uruchamia polecenia na urządzeniu. Demon działa jako tło na każdym z urządzeń.
  • Serwer zarządzający komunikacją między klientem a demonem. Serwer działa w tle na komputerze, na którym tworzysz aplikacje.

adb wchodzi w skład pakietu narzędzi platformy Android SDK. Pobierz to z Menedżerem SDK, który instaluje pakiet go na stronie android_sdk/platform-tools/. Korzystanie z samodzielnego pakietu SDK do Androida pakietu narzędzi Platform Tools, pobierz go tutaj.

Informacje o łączeniu urządzenia do używania przez adb, w tym o korzystaniu z połączenia do rozwiązywania typowych problemów przez Asystenta, patrz sekcja Uruchamianie aplikacji na urządzeniu.

Jak działa narzędzie adb

Po uruchomieniu klienta adb klient najpierw sprawdza, czy Proces serwera adb jest już uruchomiony. Jeśli go nie ma, rozpocznie się proces serwera. Podczas uruchamiania serwer tworzy powiązanie z lokalnym portem TCP 5037 i nasłuchuje poleceń wysyłanych z adb klientów.

Uwaga: wszystkie klienty adb używają do komunikacji portu 5037 z serwerem adb.

Serwer konfiguruje połączenia ze wszystkimi uruchomionymi urządzeniami. Lokalizuje emulatory, skanując porty o nieparzystych numerach w zakresie Od 5555 do 5585, czyli zakres używany przez pierwszych 16 emulatorów. Gdzie serwer znajduje adb demona (adbd), konfiguruje połączenie z tym portem.

Każdy emulator używa pary sekwencyjnych portów – portu o parzystym numerze połączeń konsoli i port z nieparzystymi numerami na potrzeby połączeń adb. Na przykład:

Emulator 1, konsola: 5554
Emulator 1, adb: 5555
Emulator 2, konsola: 5556
Emulator 2, adb: 5557
i tak dalej.

Jak widać, emulator podłączony do adb przez port 5555 jest taki sam jak emulator. której konsola nasłuchuje na porcie 5554.

Gdy serwer skonfiguruje połączenia ze wszystkimi urządzeniami, możesz używać poleceń adb, aby: dostęp do tych urządzeń. Ponieważ serwer zarządza połączeniami z urządzeniami i obsługuje te funkcje z wielu klientów adb, możesz sterować dowolnym urządzeniem z dowolnego klienta lub ze scenariusza.

Włącz debugowanie adb na urządzeniu

Aby używać narzędzia adb na urządzeniu podłączonym przez USB, musisz włączyć Debugowanie USB w ustawieniach systemowych urządzenia w sekcji Opcje programisty. Na Androidzie 4.2 (poziom interfejsu API 17) i nowszych wersjach jest dostępny ekran Opcje programisty. jest domyślnie ukryty. Aby był widoczny, włącz Opcje programisty.

Możesz teraz połączyć urządzenie przez USB. Możesz sprawdzić, czy Twoje urządzenie połączono, wykonując adb devices z android_sdk/platform-tools/. Jeśli masz połączenie, wyświetli się nazwa urządzenia.

Uwaga: gdy podłączysz urządzenie z Androidem 4.2.2 (API na poziomie 17) lub wyższym, system wyświetla okno z pytaniem, czy zaakceptować klucz RSA, który umożliwia na tym komputerze. Ten mechanizm chroni urządzenia użytkowników, ponieważ zapewnia że debugowanie USB i inne polecenia adb nie mogą być wykonywane, chyba że odblokujesz i potwierdź to okno.

Więcej informacji o łączeniu z urządzeniem przez USB znajdziesz w artykule Uruchamianie aplikacji na urządzeniu

Połącz się z urządzeniem przez Wi-Fi

Uwaga: instrukcje poniżej nie dotyczą urządzeń Wear z Android 11 (poziom API 30). Zobacz przewodnik debugowania aplikacji na Wear OS – znajdziesz więcej informacji.

Obsługa bezprzewodowego wdrażania i debugowania aplikacji na Androida 11 (poziom interfejsu API 30) i nowszych stacji roboczej za pomocą narzędzia Android Debug Bridge (adb). Możesz na przykład wdrożyć kod do debugowania na wiele urządzeń zdalnych bez konieczności fizycznego USB. Dzięki temu nie trzeba rozwiązywać typowych problemów z połączeniem USB, takich jak sterowniki instalacji.

Zanim zaczniesz korzystać z debugowania bezprzewodowego, wykonaj te czynności:

  • Upewnij się, że Twoja stacja robocza i urządzenie są połączone z tą samą siecią bezprzewodową.

  • Upewnij się, że na telefonie lub Androidzie działa Android 11 (poziom interfejsu API 30) lub nowszy. w wersji 13 (poziom API 33) lub nowszej w przypadku telewizora i Wear OS; Więcej informacji: Czek i Zaktualizuj Wersja Androida.

  • Jeśli używasz IDE, upewnij się, że masz zainstalowaną najnowszą wersję Android Studio. Możesz to pobrać tutaj.

  • Na swojej stacji roboczej zaktualizuj aplikację Narzędzia platformy SDK

Aby korzystać z debugowania bezprzewodowego, musisz sparować urządzenie ze stacją roboczą za pomocą kodu QR lub kod parowania. Stacja robocza i urządzenie muszą być połączone z tą samą siecią bezprzewodową. Do połączyć się z urządzeniem, wykonaj te czynności:

  1. Włączanie opcji programisty na swoim urządzeniu.

  2. Otwórz Android Studio i wybierz z biegu opcję Paruj urządzenia przez Wi-Fi. w menu konfiguracji.

    Menu uruchamiania konfiguracji
    Rysunek 1. Menu uruchamiania konfiguracji.

    Pojawi się okno Paruj urządzenia przez Wi-Fi, tak jak na ilustracji 2.

    Zrzut ekranu pokazujący parowanie urządzeń przez wyskakujące okienko Wi-Fi
    Rysunek 2. Wyskakujące okienko, w którym możesz sparować urządzenia za pomocą kodu QR lub parowania w kodzie.
  3. Na urządzeniu kliknij Debugowanie bezprzewodowe i sparuj urządzenie:

    Zrzut ekranu z
            Telefon Pixel z ustawieniem systemów debugowania bezprzewodowego.
    Rysunek 3. Zrzut ekranu pokazujący ustawienie Debugowanie bezprzewodowe włączone telefon Google Pixel.
    1. Aby sparować urządzenie przy użyciu kodu QR, wybierz Sparuj urządzenie z kodem QR i zeskanuj Kod QR uzyskany z wyskakującego okienka Paruj urządzenia przez Wi-Fi przedstawionego na ilustracji 2.

    2. Aby sparować urządzenie przy użyciu kodu parowania, wybierz Sparuj urządzenie za pomocą kodu parowania wyskakujące okienko Sparuj urządzenia przez Wi-Fi. Na urządzeniu wybierz Sparuj za pomocą kodu parowania i zanotuj podany 6-cyfrowy kod. Gdy urządzenie pojawi się na Sparuj urządzenia przez Wi-Fi, wybierz Sparuj i wpisz 6-cyfrowy kod wyświetlany na urządzeniu.

      Zrzut ekranu pokazujący przykładowy kod PIN
      Rysunek 4. Przykład wpisania 6-cyfrowego kodu.
  4. Po sparowaniu urządzenia możesz spróbować wdrożyć na nim aplikację.

    Aby sparować inne urządzenie lub zapomnieć obecne urządzenie na stacji roboczej, przejdź do Debugowanie bezprzewodowe na urządzeniu. Kliknij nazwę stacji roboczej w sekcji Sparowano urządzeń i wybierz Zapomnij.

  5. Jeśli chcesz szybko włączyć lub wyłączyć debugowanie bezprzewodowe, możesz użyć Kafelki szybkich ustawień dla programistów Debugowanie bezprzewodowe – w Opcjach programisty > Programista Szybkich ustawień .

    Zrzut ekranu z
            Kafelki szybkich ustawień programisty z telefonu Google Pixel.
    Rysunek 5. Ustawienie kafelki Szybkich ustawień dla programistów; umożliwia szybkie włączanie i wyłączanie debugowania bezprzewodowego.

Połączenie Wi-Fi za pomocą wiersza poleceń

Aby połączyć się z urządzeniem za pomocą wiersza poleceń bez Android Studio, wykonaj wykonaj te czynności:

  1. Włącz na urządzeniu opcje programisty w sposób opisany wcześniej.

  2. Włącz na urządzeniu Debugowanie bezprzewodowe w sposób opisany wcześniej.

  3. Na swojej stacji roboczej otwórz okno terminala i przejdź do android_sdk/platform-tools

  4. Aby znaleźć swój adres IP, numer portu i kod parowania, wybierz Sparuj urządzenie z kodu parowania. Zwróć uwagę na adres IP, numer portu i kod parowania wyświetlone na urządzenia.

  5. Na terminalu stacji roboczej uruchom adb pair ipaddr:port. Użyj adresu IP i numeru portu powyżej.

  6. Gdy pojawi się prośba, wpisz kod parowania, jak pokazano poniżej.

    Zrzut ekranu z
            w wierszu poleceń.
    Rysunek 6. Wyświetla się komunikat, że urządzenie zostało prawidłowo sparowano.

Rozwiązywanie problemów z połączeniem bezprzewodowym

Jeśli masz problemy z bezprzewodowym połączeniem się z urządzeniem, wypróbuj te rozwiązania: sposoby rozwiązywania problemów.

Sprawdź, czy Twoja stacja robocza i urządzenie spełniają wymagania wstępne

Sprawdź, czy stacja robocza i urządzenie spełniają wymagania wstępne wymienione w od początku tej sekcji.

Sprawdź, czy nie wystąpiły inne znane problemy

Poniżej znajdziesz listę aktualnych znanych problemów z debugowaniem bezprzewodowym (z programem adb lub Android) Studio), i sposób rozwiązania tych problemów:

  • Wi-Fi się nie łączy: bezpieczne sieci Wi-Fi, takie jak firmowe sieci Wi-Fi, może blokować połączenia p2p i uniemożliwiać łączenie się przez Wi-Fi. Spróbuj połączyć się za pomocą kabla lub innej (niefirmowej) sieci Wi-Fi. Połączenie bezprzewodowe przez adb connect ip:port przez tcp/ip (po pierwszym połączeniu USB) to inna opcja, w przypadku użycia sieci innej niż korporacyjna.

  • adb przez Wi-Fi czasami wyłącza się automatycznie: może się tak zdarzyć, jeśli urządzenie przełącza się na sieć Wi-Fi lub rozłącza się. Aby rozwiązać ten problem, połącz się ponownie z siecią.

  • Urządzenie nie łączy się po sparowaniu: adb używa mDNS do wykrywać sparowane urządzenia i automatycznie się z nimi łączyć. Jeśli sieć lub urządzenie nie obsługuje mDNS lub została wyłączona, musisz ręcznie połącz się z urządzeniem za pomocą adb connect ip:port.

Połącz się bezprzewodowo z urządzeniem po pierwszym połączeniu USB (tylko opcja dostępna w Androidzie 10 i starszych)

Uwaga: ten proces dotyczy również Androida 11 (oraz jednak jest to jednak ograniczenie, ponieważ wymaga to również *początkowego* połączenia przez fizyczny USB.

Uwaga: te instrukcje nie dotyczą urządzeń Wear z Androidem 10 (poziom interfejsu API 29) lub niższym. Zobacz przewodnik na temat: debugowania aplikacji na Wear OS – znajdziesz więcej informacji.

adb zwykle komunikuje się z urządzeniem przez USB, ale możesz też użyć tej funkcji: adb przez Wi-Fi. Aby połączyć urządzenie z Androidem 10 (poziom interfejsu API 29) lub niższym: Wykonaj te początkowe czynności przez USB:

  1. Połącz urządzenie z Androidem i komputer adb we wspólnej sieci Wi-Fi.
  2. Uwaga: pamiętaj, że nie wszystkie punkty dostępu są odpowiednie. Może być konieczne użycie punktu dostępu której zapora sieciowa jest prawidłowo skonfigurowana i obsługuje interfejs adb.

  3. Podłącz urządzenie do komputera hosta za pomocą kabla USB.
  4. Ustaw urządzenie docelowe, aby nasłuchiwało połączenia TCP/IP na porcie 5555:
    adb tcpip 5555
    
  5. Odłącz kabel USB od urządzenia docelowego.
  6. Znajdź adres IP urządzenia z Androidem. Na przykład na urządzeniu Nexus adres IP, kliknij Ustawienia > Informacje o tablecie (lub Informacje o telefonie) > Stan > Adres IP.
  7. Połącz się z urządzeniem za pomocą adresu IP:
    adb connect device_ip_address:5555
    
  8. Sprawdź, czy komputer hosta jest podłączony do urządzenia docelowego:
    $ adb devices
    List of devices attached
    device_ip_address:5555 device
    

Twoje urządzenie jest teraz połączone z aplikacją adb.

Jeśli połączenie adb z urządzeniem zostanie utracone:

  • Upewnij się, że host jest nadal połączony z tą samą siecią Wi-Fi co Twoje urządzenie z Androidem.
  • Połącz się ponownie, jeszcze raz wykonując krok adb connect.
  • Jeśli to nie pomoże, zresetuj hosta adb:
    adb kill-server
    

    Potem trzeba zacząć od początku.

Zapytanie dotyczące urządzeń

Przed wykonaniem poleceń adb warto wiedzieć, które instancje urządzeń są połączone do serwera adb. Wygeneruj listę podłączonych urządzeń za pomocą Polecenie devices:

  adb devices -l
  

W odpowiedzi adb wydrukuje te informacje o stanie dla każdego urządzenia:

  • Numer seryjny:adb tworzy ciąg znaków jednoznacznie identyfikujący urządzenie. według numeru portu. Oto przykładowy numer seryjny: emulator-5554
  • Stan: urządzenie może mieć jeden z tych stanów połączenia:
    • offline: urządzenie nie jest połączone z siecią adb lub nie odpowiadania.
    • device: urządzenie jest połączone z serwerem adb. Pamiętaj, że nie oznacza to, że system Android został w pełni uruchomiony i działa, ponieważ urządzenie łączy się z usługą adb gdy system jest wciąż uruchamiany. Po uruchomieniu jest to normalny proces stanu urządzenia.
    • no device: brak połączonych urządzeń.
  • Opis: jeśli użyjesz opcji -l, nagłówek devices informuje, jakie jest urządzenie. Te informacje są przydatne, gdy masz wiele urządzeń są połączone, dzięki czemu można je odróżnić.

W przykładzie poniżej widać polecenie devices i jego dane wyjściowe. Są trzy uruchomionych urządzeniach. Pierwsze 2 wiersze na liście to emulatory, a trzeci – sprzęt. urządzenia podłączonego do komputera.

$ 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

Nie ma emulatora na liście

Polecenie adb devices zawiera sekwencję poleceń z zróżnicowaną wielkością liter, która powoduje uruchomienie emulatory, aby nie pojawiały się w danych wyjściowych adb devices, chociaż są one widoczne na pulpicie. Dzieje się tak, gdy wszystkie te warunki warunki są spełnione:

  • Serwer adb nie jest uruchomiony.
  • Możesz użyć polecenia emulator z parametrem -port lub -ports z wartością portu o nieparzystym numerze z zakresu od 5554 do 5584.
  • Wybrany port z nieparzystymi numerami nie jest zajęty, więc połączenie można nawiązać z z określonym numerem portu – lub, jeśli jest zajęty, emulator przełączy się na inny port spełniający wymagania opisane w punkcie 2.
  • Serwer adb uruchamiasz po uruchomieniu emulatora.

Jednym ze sposobów uniknięcia tej sytuacji jest zezwolenie emulatorowi na wybór własnych portów i dalsze uruchamianie 16 emulatorów jednocześnie. Innym sposobem jest uruchamianie serwera adb zawsze przed użyj polecenia emulator zgodnie z poniższymi przykładami.

Przykład 1: w tej sekwencji poleceń rozpoczyna się polecenie adb devices serwer adb, ale lista urządzeń nie jest wyświetlana.

Zatrzymaj serwer adb i wpisz poniższe polecenia w podanej kolejności. Dla: AVD wpisz prawidłową nazwę AVD z systemu. Aby uzyskać listę nazw AVD, wpisz emulator -list-avds Polecenie emulator znajduje się w 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 *

Przykład 2: w tej sekwencji poleceń adb devices wyświetla wartość lista urządzeń, ponieważ serwer adb został uruchomiony jako pierwszy.

Aby zobaczyć emulator w danych wyjściowych adb devices, zatrzymaj serwer adb, a następnie uruchom ją ponownie, używając polecenia emulator, a przed użyciem adb devices w następujący sposób:

$ adb kill-server
$ emulator -avd Nexus_6_API_25 -port 5557
$ adb start-server
$ adb devices

List of devices attached
emulator-5557 device

Aby dowiedzieć się więcej o opcjach wiersza poleceń emulatora, zobacz Wiersz poleceń opcje uruchamiania.

Wysyłanie poleceń do określonego urządzenia

Jeśli działa wiele urządzeń, musisz określić urządzenie docelowe. po uruchomieniu polecenia adb. Aby określić cel:

  1. Użyj polecenia devices, aby uzyskać numer seryjny środowiska docelowego.
  2. Po uzyskaniu numeru seryjnego użyj -s z poleceniami adb, które określają numer seryjny.
    1. Jeśli zamierzasz wydać wiele poleceń adb, możesz ustawić Zmienna środowiskowa $ANDROID_SERIAL, która zawiera numer seryjny .
    2. Jeśli używasz obu typów tagów -s i $ANDROID_SERIAL, -s zastąpienia $ANDROID_SERIAL

W poniższym przykładzie uzyskuje się listę podłączonych urządzeń i identyfikator numer jednego z urządzeń jest używany do instalacji aplikacji helloWorld.apk na tym urządzeniu:

$ adb devices
List of devices attached
emulator-5554 device
emulator-5555 device
0.0.0.0:6520  device

# To install on emulator-5555
$ adb -s emulator-5555 install helloWorld.apk
# To install on 0.0.0.0:6520
$ adb -s 0.0.0.0:6520 install helloWorld.apk

Uwaga: jeśli wydasz polecenie bez określania urządzenia docelowego gdy dostępnych jest wiele urządzeń, adb wyświetla błąd „adb: więcej niż jedno urządzenie/emulator”.

Jeśli masz dostępnych wiele urządzeń, ale tylko jedno z nich jest emulatorem, użyj opcji -e, by wysyłać polecenia do emulatora. W przypadku wielu urządzeń, ale tylko z jednym urządzeniem sprzętowym, użyj opcji -d do wysyłania poleceń do na urządzeniu.

Instalowanie aplikacji

Aby zainstalować plik APK w emulatorze lub na połączonych urządzeniach, możesz użyć aplikacji adb za pomocą polecenia install:

adb install path_to_apk

Musisz użyć opcji -t z install podczas instalowania testowego pakietu APK. Aby dowiedzieć się więcej, zobacz -t.

Aby zainstalować wiele plików APK, użyj polecenia install-multiple. Przydaje się to, gdy pobierzesz wszystkie pliki APK aplikacji z Konsoli Play na konkretnym urządzeniu i chcesz je zainstalować za pomocą emulatora czy urządzenia fizycznego.

Więcej informacji o tworzeniu pliku APK do zainstalowania w emulatorze lub na urządzeniu zapoznaj się z sekcją Tworzenie i uruchamianie aplikacji.

Uwaga: jeśli używasz Android Studio, nie musisz używać adb, aby zainstalować aplikację w emulatorze lub na urządzeniu. Zamiast tego Android Studio zajmuje się pakowaniem i instalacją aplikacji.

Skonfiguruj przekierowanie portów

Za pomocą polecenia forward skonfiguruj dowolne przekierowanie portów, które przekierowuje żądania z określonego portu hosta do innego portu w urządzeniu. Poniżej znajduje się przykład konfigurowania przekierowania hosta z portu 6100 na port 7100 urządzenia:

adb forward tcp:6100 tcp:7100

Ten przykład konfiguruje przekierowanie hosta portu 6100 na adres local:logd:

adb forward tcp:6100 local:logd

Może to być przydatne, jeśli chcesz określić, co jest wysyłane do danego portu urządzenia. Wszystkie odebrane dane zostaną zapisane do demona logu systemowego i wyświetlone w dziennikach urządzenia.

Kopiowanie plików z urządzenia i na urządzenie

Użyj poleceń pull i push, aby skopiować pliki do usługi i na urządzeniu. W odróżnieniu od polecenia install który kopiuje plik APK tylko do określonej lokalizacji, pull i push umożliwiają kopiowanie dowolnych katalogów i plików do dowolnej lokalizacji na urządzeniu.

Aby skopiować plik lub katalog i jego podkatalogi z urządzenia: wykonaj te czynności:

adb pull remote local

Aby skopiować plik lub katalog i jego podkatalogi na urządzenie: wykonaj te czynności:

adb push local remote

Zastąp local i remote ścieżkami do docelowe pliki/katalog na komputerze programisty (lokalnym) i w urządzenia (pilot). Na przykład:

adb push myfile.txt /sdcard/myfile.txt

Zatrzymywanie serwera adb

W niektórych przypadkach może być konieczne zakończenie procesu serwera adb i ponowne uruchomienie aby rozwiązać problem. Może się tak zdarzyć, jeśli na przykład adb nie odpowiada na polecenie.

Aby zatrzymać serwer adb, użyj polecenia adb kill-server. Następnie możesz ponownie uruchomić serwer, wykonując dowolne inne polecenie adb.

Wydaj polecenia adb

Wydaj polecenia adb w wierszu poleceń na komputerze, z którego korzystasz, lub ze skryptu przy użyciu :

adb [-d | -e | -s serial_number] command

Jeśli włączony jest tylko 1 emulator lub połączone jest tylko 1 urządzenie, polecenie adb jest wysyłane na to urządzenie. Gdy jest uruchomionych wiele emulatorów lub wiele urządzeń jest działających , musisz użyć -d, -e lub -s aby określić urządzenie docelowe, na które polecenie ma zostać skierowane.

Aby wyświetlić szczegółową listę wszystkich obsługiwanych poleceń adb, użyj tych elementów: polecenie:

adb --help

Wydaj polecenia powłoki

Polecenia shell możesz używać do wydawania poleceń na urządzeniu za pomocą adb lub uruchamiania interaktywnej powłoki. Aby wygenerować jedno polecenie, użyj tego polecenia shell:

adb [-d |-e | -s serial_number] shell shell_command

Aby uruchomić interaktywną powłokę na urządzeniu, użyj tego polecenia shell:

adb [-d | -e | -s serial_number] shell

Aby zamknąć interaktywną powłokę, naciśnij Control+D lub wpisz exit.

Android zapewnia większość standardowych narzędzi wiersza poleceń Unix. Aby zobaczyć listę dostępnych narzędzi, użyj następujące polecenie:

adb shell ls /system/bin

W przypadku większości poleceń pomoc jest dostępna za pomocą argumentu --help. Wiele poleceń powłoki jest dostarczanych przez toybox. Ogólną pomoc dotyczącą wszystkich poleceń ze skrzynią z zabawkami można uzyskać pod adresem toybox --help.

W narzędziach platformy Android w wersji 23 lub nowszej adb obsługuje argumenty w taki sam sposób jak niż polecenie ssh(1). Ta zmiana rozwiązała wiele problemów z wstrzyknięcie polecenia i pozwala bezpiecznie wykonywać polecenia zawierające powłokę metaznaki, na przykład adb install Let\'sGo.apk. Zmiana ta oznacza, że interpretacja każdego polecenia zawierającego metaznaki powłoki również uległo zmianie.

Na przykład adb shell setprop key 'value' jest teraz błędem, ponieważ pojedyncze cudzysłowy (') są przetwarzane przez lokalną powłokę, a urządzenie adb shell setprop key value Aby polecenie zadziałało, cytuj dwukrotnie, raz dla powłoki lokalnej, a drugiej dla powłoki zdalnej, jak w przypadku ssh(1) Na przykład: adb shell setprop key 'value' .

Zapoznaj się też z narzędziem wiersza poleceń Logcat. który służy do monitorowania dziennika systemowego.

Menedżer aktywności związanej z połączeniami

W powłoce adb możesz używać narzędzia Menedżer aktywności (am) do wydawania poleceń, aby wykonywać różne działania systemowe, takie jak uruchamianie działania, wymuszenie zatrzymania procesu, przesyłać intencje, modyfikować właściwości ekranu urządzenia i wykonywać inne działania.

W powłoce składnia am to:

am command

Możesz też wydać polecenie menedżera aktywności bezpośrednio z poziomu adb bez otwierania zdalnej powłoki. Na przykład:

adb shell am start -a android.intent.action.VIEW

Tabela 1. Dostępne polecenia menedżera aktywności

Polecenie Opis
start [options] intent Rozpocznij Activity określony przez intent

Zobacz Specyfikacja argumentów intencji.

Dostępne opcje:

  • -D: włącz debugowanie.
  • -W: poczekaj na zakończenie uruchamiania.
  • --start-profiler file: uruchom program profilujący i wyślij wyniki do file
  • -P file: podobnie jak --start-profiler, ale profilowanie zatrzymuje się, gdy aplikacja jest bezczynna.
  • -R count: powtórz rozpoczęcie aktywności count razy. Przed każdym powtórzeniem zakończy się główna aktywność.
  • -S: przed rozpoczęciem aktywności wymuś zatrzymanie aplikacji docelowej.
  • --opengl-trace: włącz śledzenie funkcji OpenGL.
  • --user user_id | current: określ użytkownika, którego chcesz użyć, aby uruchomić aplikację. jeśli nie i uruchom jako bieżący użytkownik.
startservice [options] intent Rozpocznij Service określony przez intent

Zobacz Specyfikacja argumentów intencji.

Dostępne opcje:

  • --user user_id | current: określ użytkownika, którego chcesz użyć, aby uruchomić aplikację. Jeśli nie, i uruchom jako bieżący użytkownik.
force-stop package Wymuś zatrzymanie wszystkich danych powiązanych z kontem package.
kill [options] package Wyłącz wszystkie procesy powiązane z zasobem package. To polecenie kończy działanie tylko procesy, które można bezpiecznie zabić i nie będą miały wpływu na użytkownika z myślą o użytkownikach.

Dostępne opcje:

  • --user user_id | all | current: określ, które procesy użytkownika mają zostać zakończone. Jeśli nie podasz żadnej wartości, spowoduje to zakończenie działania wszystkich użytkowników
kill-all Wyłącz wszystkie procesy w tle.
broadcast [options] intent Prześlij intencję transmisji.

Zobacz Specyfikacja argumentów intencji.

Dostępne opcje:

  • [--user user_id | all | current]: określ, do którego użytkownika ma być wysłany e-mail. Jeśli nie, a następnie wyślij go do wszystkich użytkowników.
instrument [options] component Rozpocznij monitorowanie za pomocą Instrumentation instancja. Zwykle wartość docelowa component ma postać test_package/runner_class.

Dostępne opcje:

  • -r: drukuj nieprzetworzone wyniki (w innym przypadku dekoduj je) report_key_streamresult). Używaj z [-e perf true] w celu wygenerowania nieprzetworzonych danych wyjściowych na potrzeby pomiarów skuteczności.
  • -e name value: ustaw argument name do: value. Typowy formularz dla uczestników testów to -e testrunner_flag value[,value...].
  • -p file: zapisz dane profilowania w file.
  • -w: zanim zwrócisz urządzenie, poczekaj na zakończenie instrumentacji. Wymagane w przypadku .
  • --no-window-animation: wyłącz animacje okien podczas biegu.
  • --user user_id | current: określ, w której instrumentacji użytkownika ma działać. Jeśli go nie podasz, uruchom w bieżącym użytkowniku.
profile start process file Uruchom profilowanie na urządzeniu process, zapisz wyniki w: file.
profile stop process Zatrzymaj profilowanie na urządzeniu process.
dumpheap [options] process file Zrzuć stertę process, zapisz w: file.

Dostępne opcje:

  • --user [user_id | current]: podczas podawania nazwy procesu określ użytkownika procesu do zrzutu. Jeśli nie podasz tu nazwy, używany będzie bieżący użytkownik.
  • -b [| png | jpg | webp]: zrzut mapy bitowej z pamięci graficznej. Opcjonalnie określ format zrzutu (domyślnie PNG).
  • -n: zrzut stosu natywnej zamiast zarządzanej sterty.
set-debug-app [options] package Ustaw aplikację package na debugowanie.

Dostępne opcje:

  • -w: po uruchomieniu aplikacji zaczekaj na debugera.
  • --persistent: zachowaj tę wartość.
clear-debug-app Wyczyść poprzedni zestaw pakietów do debugowania za pomocą funkcji set-debug-app.
monitor [options] Rozpocznij monitorowanie pod kątem awarii i błędów ANR.

Dostępne opcje:

  • --gdb: uruchom gdbserv na danym porcie w przypadku awarii lub błędu ANR.
screen-compat {on | off} package Sterowanie ekranem trybu zgodności package.
display-size [reset | widthxheight] Zastąp rozmiar interfejsu urządzenia. To polecenie ułatwia testowanie aplikacji na ekranach o różnych rozmiarach poprzez naśladowanie na urządzeniu z dużym ekranem i odwrotnie.

Przykład:
am display-size 1280x800

display-density dpi Zastąp gęstość wyświetlania. To polecenie jest przydatne do testowania aplikacji na ekranach o różnej gęstości poprzez naśladowanie elementów o dużej gęstości na ekranie o małej gęstości i odwrotnie.

Przykład:
am display-density 480

to-uri intent Wydrukuj daną specyfikację intencji jako identyfikator URI.

Zobacz Specyfikacja argumentów intencji.

to-intent-uri intent Wydrukuj daną specyfikację intencji jako identyfikator URI intent:.

Zobacz Specyfikacja argumentów intencji.

Specyfikacja argumentów intencji

W przypadku poleceń menedżera aktywności, które przyjmują argument intent, można: określ intencję za pomocą tych opcji:

Menedżer pakietów połączeń (pm)

W powłoce adb możesz używać narzędzia menedżera pakietów (pm), aby wydawać polecenia, aby: wykonywać działania i zapytania dotyczące pakietów aplikacji zainstalowanych na urządzeniu;

W powłoce składnia pm to:

pm command

Możesz też wydać polecenie menedżera pakietów bezpośrednio z poziomu adb bez otwierania zdalnej powłoki. Na przykład:

adb shell pm uninstall com.example.MyApp

Tabela 2. Dostępne polecenia menedżera pakietów

Polecenie Opis
list packages [options] filter Wydrukuj wszystkie pakiety (tylko opcjonalnie) tych, których nazwa pakietu zawiera tekst w języku filter.

Opcje:

  • -f: zobacz powiązany plik.
  • -d: ustaw filtr, aby wyświetlić tylko wyłączone pakiety.
  • -e: ustaw filtr, aby wyświetlić tylko włączone pakiety.
  • -s: użyj filtra, aby wyświetlić tylko pakiety systemowe.
  • -3: ustaw filtr, aby wyświetlić tylko pakiety innych firm.
  • -i: sprawdź w instalatorze pakietów.
  • -u: uwzględnij odinstalowane pakiety.
  • --user user_id: przestrzeń użytkownika, której ma dotyczyć zapytanie.
list permission-groups Wydrukuj wszystkie znane grupy uprawnień.
list permissions [options] group Wydrukuj wszystkie znane uprawnienia (opcjonalnie) tych w grupie reklam group.

Opcje:

  • -g: uporządkuj według grup.
  • -f: wydrukuj wszystkie informacje.
  • -s: krótkie podsumowanie.
  • -d: wyświetlaj tylko niebezpieczne uprawnienia.
  • -u: wyświetlanie tylko uprawnień widocznych dla użytkowników.
list instrumentation [options] Wyświetl wszystkie pakiety testowe.

Opcje:

  • -f: wyświetl plik APK pakietu testowego.
  • target_package: wyświetlanie pakietów testowych tylko dla tej aplikacji.
list features Drukuj wszystkie funkcje systemu.
list libraries Wydrukuj wszystkie biblioteki obsługiwane przez bieżące urządzenie.
list users Wydrukuj wszystkich użytkowników w systemie.
path package Wydrukuj ścieżkę do pliku APK z danym package.
install [options] path Zainstaluj w systemie pakiet określony przez path.

Opcje:

  • -r: ponownie zainstaluj istniejącą aplikację, zachowując jej dane.
  • -t: zezwalaj na instalowanie testowych plików APK. Gradle generuje testowy pakiet APK, gdy Aplikacja została tylko uruchomiona lub debugowana albo używasz narzędzia Android Studio Build > Kompilacja APK. Jeśli plik APK został utworzony przy użyciu pakietu SDK w wersji deweloperskiej, musisz umieścić w nim Opcja -t za pomocą polecenia install, jeśli instalujesz testowy pakiet APK.
  • -i installer_package_name: podaj nazwę pakietu instalatora.
  • --install-location location: ustaw lokalizację instalacji korzystając z jednej z tych wartości:
    • 0: użyj domyślnej lokalizacji instalacji.
    • 1: zainstaluj w pamięci wewnętrznej urządzenia.
    • 2: zainstaluj na nośniku zewnętrznym.
  • -f: zainstaluj pakiet w wewnętrznej pamięci systemowej.
  • -d: zezwalaj na zmianę kodu wersji na starszą.
  • -g: przyznaj wszystkie uprawnienia wymienione w manifeście aplikacji.
  • --fastdeploy: możesz szybko zaktualizować zainstalowany pakiet, aktualizując tylko części plik APK, który uległ zmianie.
  • --incremental: instaluje wystarczającą ilość pliku APK, aby uruchomić aplikację a pozostałe dane są przesyłane strumieniowo w tle. Aby korzystać z tej funkcji, musisz podpisać Utwórz plik APK Plik APK (APK Signature Scheme w wersji 4), i umieść go w tym samym katalogu, co plik APK. Ta funkcja jest obsługiwana tylko na niektórych urządzeniach. Ta opcja wymusza na adb skorzystanie z tej funkcji lub kończy działanie, jeśli nie jest. wraz z szczegółowymi informacjami o przyczynie niepowodzenia. Dołącz opcję --wait do: poczekaj, aż plik APK zostanie w pełni zainstalowany, zanim przyznasz mu dostęp.

    --no-incremental uniemożliwia użytkownikowi adb korzystanie z tej funkcji.

uninstall [options] package Usuwa pakiet z systemu.

Opcje:

  • -k: po usunięciu pakietu zachowaj katalogi danych i pamięci podręcznej.
  • --user user_id: określa użytkownika, którego pakiet został usunięty.
  • --versionCode version_code: odinstalowuje się tylko wtedy, gdy aplikacja ma podany kod wersji.
clear package Usuń wszystkie dane powiązane z pakietem.
enable package_or_component Włącz określony pakiet lub komponent (napisane jako „package/class”).
disable package_or_component Wyłącz określony pakiet lub komponent (zapisane jako „pakiet/klasa”).
disable-user [options] package_or_component

Opcje:

  • --user user_id: użytkownik, który ma zostać wyłączony.
grant package_name permission Przyznaj uprawnienia aplikacji. Na urządzeniach z Androidem 6.0 (poziom interfejsu API 23) mogą to być dowolne uprawnienia zadeklarowane w manifeście aplikacji. Na urządzeniach z Androidem 5.1 (poziom interfejsu API 22) lub starszym, musi być opcjonalnym uprawnieniem określonym przez .
revoke package_name permission unieważnić uprawnienia aplikacji; Na urządzeniach z Androidem 6.0 (poziom interfejsu API 23) lub wyższych, uprawnieniem może być dowolne uprawnienie zadeklarowane w manifeście aplikacji. Na urządzeniach z Androidem 5.1 (poziom interfejsu API 22) lub starszym, musi być opcjonalnym uprawnieniem określonym przez .
set-install-location location Zmień domyślną lokalizację instalacji. Wartości związane z lokalizacją:
  • 0: automatyczna: pozwól systemowi wybrać najlepszą lokalizację.
  • 1: wewnętrzna: zainstaluj w pamięci urządzenia wewnętrznego.
  • 2: zewnętrzny: zainstaluj na nośniku zewnętrznym.

Uwaga: jest to przeznaczone tylko do debugowania. Stosowanie tej funkcji może spowodować które mogą się zepsuć i pojawiają się inne niepożądane zachowania.

get-install-location Zwraca bieżącą lokalizację instalacji. Zwracane wartości:
  • 0 [auto]: pozwól systemowi wybrać najlepszą lokalizację
  • 1 [internal]: zainstaluj w pamięci wewnętrznej urządzenia
  • 2 [external]: zainstaluj na nośniku zewnętrznym
set-permission-enforced permission [true | false] Określ, czy dane uprawnienie ma być egzekwowane.
trim-caches desired_free_space Przytnij pliki pamięci podręcznej, aby osiągnąć dostępną ilość wolnego miejsca.
create-user user_name Utwórz nowego użytkownika o podanym user_name, wydrukowanie nowego identyfikatora użytkownika.
remove-user user_id Usuń użytkownika z podanym identyfikatorem user_id, usunięcie wszystkich danych powiązanych z tym użytkownikiem.
get-max-users Wydrukuj maksymalną liczbę użytkowników obsługiwanych przez urządzenie.
get-app-links [options] [package]

Wydrukuj stan weryfikacji domeny dla danego pola package lub dla wszystkich pakietów, jeśli nie określono żadnej wartości. Kody stanu są zdefiniowane w ten sposób:

  • none: w tej domenie nie zarejestrowano nic
  • verified: domena została zweryfikowana
  • approved: zatwierdzone wymuszone, zazwyczaj przez powłokę
  • denied: wymuszone odmowy, zwykle przez powłokę.
  • migrated: zachowana weryfikacja ze starszej odpowiedzi
  • restored: zachowana weryfikacja przed przywróceniem danych użytkownika
  • legacy_failure: odrzucenie przez starszą wersję weryfikatora, nieznana przyczyna
  • system_configured: automatycznie zatwierdzone przez konfigurację urządzenia.
  • >= 1024: niestandardowy kod błędu przypisany do weryfikatora urządzenia.

Dostępne opcje:

  • --user user_id: uwzględniaj wybór użytkowników. Uwzględnij wszystkie domeny, nie tylko tych z automatyczną weryfikacją.
reset-app-links [options] [package]

Zresetuj stan weryfikacji domeny dla danego pakietu lub dla wszystkich pakietów, jeśli nie określono żadnej wartości.

  • package: pakiet do zresetowania lub „wszystko”. aby zresetować wszystkie pakiety

Dostępne opcje:

  • --user user_id: uwzględniaj wybór użytkowników. Uwzględnij wszystkie domeny, nie tylko tych z automatyczną weryfikacją.
verify-app-links [--re-verify] [package]

Prześlij prośbę o weryfikację dotyczącą danego użytkownika package lub wszystkich pakietów, jeśli nie określono żadnej wartości. Wysyłane tylko wtedy, gdy pakiet wcześniej nie zarejestrował(a) odpowiedzi.

  • --re-verify: wyślij, nawet jeśli pakiet nagrał odpowiedź
set-app-links [--package package] state domains

Ręcznie ustaw stan domeny pakietu. Domena musi być zadeklarowana przez pakiet jako automatyczna weryfikacja. To polecenie nie zgłosi błędów w przypadku domen, których nie można zastosować.

  • --package package: pakiet do ustawienia lub „wszystko” aby ustawić wszystkie pakiety
  • state: kod służący do ustawiania domen. Prawidłowe wartości to:
    • STATE_NO_RESPONSE (0): resetuje się tak, jakby odpowiedź nigdy nie została nagrana.
    • STATE_SUCCESS (1): traktuj domenę jako zweryfikowaną przez domenę . Pamiętaj, że agent weryfikacji domeny może zastąpić to ustawienie.
    • STATE_APPROVED (2): traktuj domenę jako zawsze zatwierdzoną, aby zapobiec weryfikację domeny przed jego zmianą.
    • STATE_DENIED (3): traktowanie domeny jako zawsze odrzuconej, uniemożliwiając jej obsługę agenta weryfikacji.
  • domains: oddzielona spacjami lista domen do zmiany lub „wszystkie”; do i zmieniać je w każdej domenie.
set-app-links-user-selection --user user_id [--package package] enabled domains

Ręcznie ustaw stan pakietu wybranych przez użytkownika hosta. Domena musi zostać zadeklarowana przez pakiet, by zadziałało. To polecenie nie będzie zgłasza błędy dotyczące domen, których nie można zastosować.

  • --user user_id: użytkownik, dla którego ma zostać zmieniony wybór opcji
  • --package package: pakiet do ustawienia
  • enabled: możliwość zatwierdzenia domeny.
  • domains: oddzielona spacjami lista domen do zmiany lub „wszystkie”; do zmień wszystkie domeny
set-app-links-user-selection --user user_id [--package package] enabled domains

Ręcznie ustaw stan pakietu wybranych przez użytkownika hosta. Domena musi zostać zadeklarowana przez pakiet, by zadziałało. To polecenie nie będzie zgłasza błędy dotyczące domen, których nie można zastosować.

  • --user user_id: użytkownik, dla którego ma zostać zmieniony wybór opcji
  • --package package: pakiet do ustawienia
  • enabled: możliwość zatwierdzenia domeny.
  • domains: oddzielona spacjami lista domen do zmiany lub „wszystkie”; do zmień wszystkie domeny
set-app-links-allowed --user user_id [--package package] allowed

Przełącz ustawienie obsługi linków automatycznie weryfikowanych w pakiecie.

  • --user user_id: użytkownik, dla którego ma zostać zmieniony wybór opcji
  • --package package: pakiet do ustawienia lub „wszystko” aby ustawić wszystko pakiety; Jeśli nie określisz pakietu, pakiety zostaną zresetowane
  • allowed: true, aby zezwolić pakietowi na otwieranie linków zweryfikowanych automatycznie; false, aby wyłączyć
get-app-link-owners --user user_id [--package package] domains

Drukuj informacje o właścicielach określonej domeny dla danego użytkownika w kolejności od niskiego do wysokiego priorytetu.

  • --user user_id: użytkownik, którego dotyczy zapytanie
  • --package package: opcjonalnie także drukowanie we wszystkich domenach internetowych. zadeklarowane przez pakiet lub „wszystko” aby wydrukować wszystkie pakiety
  • domains: oddzielona spacjami lista domen, o które ma zostać wysłane zapytanie

Zadzwoń do menedżera zasad dotyczących urządzeń (dpm)

Aby pomóc Ci w tworzeniu i testowaniu aplikacji do zarządzania urządzeniem, narzędzia Menedżer zasad dotyczących urządzeń (dpm). Za pomocą tego narzędzia możesz kontrolować aktywne administratora lub zmienić dane o stanie zasad na urządzeniu.

W powłoce dpmskładnia wygląda tak:

dpm command

Polecenie menedżera zasad dotyczących urządzeń możesz też wydawać bezpośrednio z poziomu adb bez otwierania zdalnej powłoki:

adb shell dpm command

Tabela 3. Dostępne polecenia menedżera zasad dotyczących urządzeń

Polecenie Opis
set-active-admin [options] component Ustawia użytkownika component jako aktywnego administratora.

Dostępne opcje:

  • --user user_id: określ użytkownika docelowego. Możesz też przejść --user current, aby wybrać bieżącego użytkownika.
set-profile-owner [options] component Ustaw component jako aktywnego administratora i jego pakiet jako właściciela profilu istniejącego użytkownika.

Dostępne opcje:

  • --user user_id: określ użytkownika docelowego. Dostępne opcje przekaż też --user current, aby wybrać bieżącego użytkownika.
  • --name name: podaj czytelną dla człowieka nazwę organizacji.
set-device-owner [options] component Ustaw aplikację component jako aktywnego administratora i jego pakiet jako właściciela urządzenia.

Dostępne opcje:

  • --user user_id: określ użytkownika docelowego. Możesz też przejść --user current, aby wybrać bieżącego użytkownika.
  • --name name: podaj czytelną dla człowieka nazwę organizacji.
remove-active-admin [options] component Wyłącz aktywnego administratora. Aplikacja musi zadeklarować android:testOnly w pliku manifestu. To polecenie usuwa też właścicieli urządzenia i profilu.

Dostępne opcje:

  • --user user_id: określ użytkownika docelowego. Możesz też przejść --user current, aby wybrać bieżącego użytkownika.
clear-freeze-period-record Wyczyść rejestr wcześniejszych okresów blokady na potrzeby aktualizacji OTA systemu. To jest przydatne aby uniknąć ograniczeń związanych z harmonogramem urządzeń podczas tworzenia aplikacji, które zarządzają okresami blokady. Zobacz Zarządzanie aktualizacjami systemu

Obsługiwane na urządzeniach z Androidem 9.0 (poziom interfejsu API 28) lub nowszym.

force-network-logs Wymuś w systemie przygotowanie wszystkich istniejących logów sieciowych do pobrania przez DPC. Jeśli połączenia lub dzienników DNS, DPC otrzyma onNetworkLogsAvailable() oddzwanianie. Zobacz Rejestrowanie aktywności sieci.

Częstotliwość wykonywania tego polecenia jest ograniczona. Obsługiwane na urządzeniach z Androidem 9.0 (poziom interfejsu API 28) lub nowszym.

force-security-logs Wymusza udostępnianie przez system wszelkich istniejących dzienników zabezpieczeń DPC. Jeśli są logi DPC otrzyma onSecurityLogsAvailable() oddzwanianie. Zobacz Logowanie urządzeń firmowych działania.

Częstotliwość wykonywania tego polecenia jest ograniczona. Obsługiwane na urządzeniach z Androidem 9.0 (poziom interfejsu API 28) lub nowszym.

Zrób zrzut ekranu

Polecenie screencap to narzędzie powłoki służące do wykonywania zrzutu ekranu urządzenia wyświetlacz.

W powłoce składnia screencap to:

screencap filename

Aby użyć polecenia screencap z poziomu wiersza poleceń, wpisz:

adb shell screencap /sdcard/screen.png

Oto przykładowa sesja zrzutu ekranu, w której wykorzystano powłokę adb i polecenie pull, aby pobrać plik z urządzenia:

$ adb shell
shell@ $ screencap /sdcard/screen.png
shell@ $ exit
$ adb pull /sdcard/screen.png

Nagraj film

Polecenie screenrecord to narzędzie powłoki służące do rejestrowania wyświetlania urządzeń z Androidem 4.4 (poziom interfejsu API 19) lub nowszym. Narzędzie rejestruje aktywność ekranu w pliku MPEG-4 . Możesz użyć tego pliku do tworzenia filmów promocyjnych i szkoleniowych, a także do debugowania i testowania.

W powłoce użyj tej składni:

screenrecord [options] filename

Aby użyć polecenia screenrecord z poziomu wiersza poleceń, wpisz:

adb shell screenrecord /sdcard/demo.mp4

Zatrzymaj nagrywanie ekranu, naciskając Control+C. W przeciwnym razie nagranie zatrzymuje się automatycznie po 3 minutach lub w czasie określonym przez użytkownika --time-limit.

Aby rozpocząć nagrywanie ekranu urządzenia, uruchom polecenie screenrecord, aby nagrywać w filmie. Następnie uruchom polecenie pull, aby pobrać film z urządzenia na hosta komputera. Oto przykładowa sesja nagraniowa:

$ adb shell
shell@ $ screenrecord --verbose /sdcard/demo.mp4
(press Control + C to stop)
shell@ $ exit
$ adb pull /sdcard/demo.mp4

Narzędzie screenrecord umożliwia nagrywanie w dowolnej obsługiwanej rozdzielczości i z dowolną szybkością transmisji bitów. z zachowaniem proporcji obrazu wyświetlacza. Rekordy narzędzia w natywnym środowisku domyślna rozdzielczość i orientacja wyświetlacza, maksymalnie 3 minuty.

Ograniczenia narzędzia screenrecord:

  • Dźwięk nie jest nagrywany z plikiem wideo.
  • Nagrywanie filmów jest niedostępne na urządzeniach z Wear OS.
  • Niektóre urządzenia mogą nie mieć możliwości nagrywania w rozdzielczości wyświetlacza. Jeśli napotkasz problemy z nagrywaniem ekranu, spróbuj użyć niższej rozdzielczości ekranu.
  • Obracanie ekranu podczas nagrywania nie jest obsługiwane. Jeśli ekran obraca się podczas podczas nagrywania, fragment ekranu jest w nagraniu ucięty.

Tabela 4. screenrecord opcji

Opcje Opis
--help Wyświetl składnię i opcje poleceń
--size widthxheight Ustaw rozmiar filmu: 1280x720. Wartością domyślną jest kod natywny urządzenia rozdzielczość wyświetlacza (jeśli jest obsługiwana), 1280x720 (jeśli nie jest obsługiwana). Aby uzyskać najlepsze wyniki, użyj obsługiwanego rozmiaru za pomocą kodera zaawansowanego kodowania wideo (AVC).
--bit-rate rate Ustaw szybkość transmisji bitów filmu (w megabitach na sekundę). Wartość domyślna to 20 Mb/s. Możesz zwiększyć szybkość transmisji bitów, aby poprawić jakość wideo, ale spowoduje to utworzenie większego filmu. . W tym przykładzie szybkość transmisji bitów nagrywania ustawiana jest na 6 Mb/s:
screenrecord --bit-rate 6000000 /sdcard/demo.mp4
--time-limit time Ustaw maksymalny czas nagrywania w sekundach. Wartość domyślna i maksymalna to 180 (3 minuty).
--rotate Obróć urządzenie wyjściowe o 90 stopni. Ta funkcja jest eksperymentalna.
--verbose Wyświetlaj informacje dziennika na ekranie wiersza poleceń. Jeśli nie ustawisz tej opcji, narzędzie nie wyświetla żadnych informacji podczas działania.

Odczytywanie profili ART w aplikacjach

Począwszy od wersji Androida 7.0 (poziom interfejsu API 24) środowisko wykonawcze Android (ART) zbiera profile wykonywania aplikacji zainstalowane aplikacje, które służą do optymalizacji wydajności aplikacji. Sprawdź zebrane profile, aby: wie, które metody są często wykonywane i które klasy są używane podczas uruchamiania aplikacji;

Uwaga: można pobrać tylko profil wykonania. filename, jeśli masz dostęp do roota w systemie plików, na przykład w emulatorze.

Aby wygenerować informacje o profilu w formie tekstowej, użyj tego polecenia:

adb shell cmd package dump-profiles package

Aby pobrać utworzony plik, użyj polecenia:

adb pull /data/misc/profman/package.prof.txt

Zresetuj urządzenia testowe

Jeśli testujesz aplikację na kilku urządzeniach testowych, warto zresetować urządzenie między np. usuwania danych użytkownika i resetowania środowiska testowego. Możesz utworzyć fabrykę na urządzeniu testowym z Androidem 10 (poziom interfejsu API 29) lub nowszym za pomocą testharness adb, na przykład polecenie powłoki:

adb shell cmd testharness enable

Podczas przywracania urządzenia przy użyciu funkcji testharness urządzenie automatycznie tworzy kopię zapasową RSA klucz, który umożliwia debugowanie za pomocą bieżącej stacji roboczej w stałej lokalizacji. Oznacza to, że po po zresetowaniu urządzenie stacja robocza może kontynuować debugowanie i wykonywać polecenia adb, aby z urządzenia bez ręcznego rejestrowania nowego klucza.

Aby ułatwić i zwiększyć bezpieczeństwo testowania aplikacji, testharness, aby przywrócić urządzenie, zmienia też te ustawienia:

  • Na urządzeniu zostaną skonfigurowane pewne ustawienia systemowe, tak aby kreatory wstępnej konfiguracji urządzenia nie były wyświetlane. Oznacza to, że urządzenie przechodzi w stan, w którym możesz szybko zainstalować, debugować i testować aplikację.
  • Ustawienia:
    • Wyłącza ekran blokady.
    • Wyłącza alerty o zagrożeniu.
    • Wyłącza autosynchronizację kont.
    • Wyłącza automatyczne aktualizacje systemu.
  • Inne:
    • Wyłącza wstępnie zainstalowane aplikacje zabezpieczające.

Jeśli aplikacja musi wykryć ustawienia domyślne urządzenia testharness i dostosować się do nich użyj funkcji ActivityManager.isRunningInUserTestHarness().

SQLite

sqlite3 uruchamia program wiersza poleceń sqlite do badania baz danych SQLite. Zawiera polecenia takie jak .dump do drukowania zawartości tabeli oraz .schema, aby wydrukować instrukcję SQL CREATE dla istniejącej tabeli. Możesz też wykonać polecenia SQLite z poziomu wiersza poleceń, jak pokazano poniżej:

$ adb -s emulator-5554 shell
$ sqlite3 /data/data/com.example.app/databases/rssitems.db
SQLite version 3.3.12
Enter ".help" for instructions

Uwaga: możliwy jest dostęp tylko do bazy danych SQLite jeśli masz dostęp do katalogu głównego systemu plików, na przykład w emulatorze.

Więcej informacji znajdziesz w dokumentacji wiersza poleceń sqlite3.

Backendy adb USB

Serwer adb może wchodzić w interakcję ze stosem USB za pomocą 2 backendów. Może używać reklam natywnych systemu operacyjnego (Windows, Linux lub macOS) albo może używać backendu libusb. Niektóre funkcje, takie jak attach, detach czy wykrywanie prędkości przez USB, są dostępna tylko w przypadku korzystania z backendu libusb.

Możesz wybrać backend, korzystając ze zmiennej środowiskowej ADB_LIBUSB. Jeśli nie jest skonfigurowana, adb używa domyślnego backendu. Domyślne działanie różni się w zależności od systemu operacyjnego. Uruchamiam w wersji ADB w wersji 34, Backend liubusb jest domyślnie używany we wszystkich systemach operacyjnych oprócz Windows, w którym używane domyślnie. Jeśli ADB_LIBUSB to wskazuje, czy używany jest natywny backend czy libusb. Zobacz strona z ręczną konfiguracją AdB .

Backendy adb mDNS

ADB może używać protokołu DNS multicast do automatycznego łączenia serwera i urządzeń. Serwer ADB jest wyposażony w dwa backendy: Bonjour (Apple mdnsResponder) oraz Openscreen.

Backend Bonjour wymaga uruchomienia demona na hoście. Wbudowany demon Apple w systemie macOS zawsze działa, ale w systemach Windows i Linux użytkownik musi upewnić się, że demon mdnsd jest włączony. Jeśli polecenie adb mdns check zwróci błąd, prawdopodobnie ADB korzysta z backendu Bonjour, ale nie działa żaden demon Bonjour.

Backend Openscreen nie wymaga demona do działania na komputerze. Obsługa backendu Openscreen w systemie macOS zaczyna się od ADB w wersji 35. Systemy Windows i Linux są obsługiwane od wersji ADB 34.

Domyślnie ADB korzysta z backendu Bonjour. To zachowanie można zmienić przy użyciu zmiennej środowiskowej ADB_MDNS_OPENSCREEN (ustaw wartość 1 lub 0). Więcej informacji znajdziesz na stronie z ręczną konfiguracją ADB.