Android Debug Bridge (adb)

Android Debug Bridge (adb) to uniwersalne narzędzie wiersza poleceń, które umożliwia komunikację z urządzeniami. Polecenie adb umożliwia wykonywanie różnych działań na urządzeniu, takich jak instalowanie i debugowanie aplikacji. adb zapewnia dostęp do powłoki uniksowej, której można używać do uruchamiania różnych poleceń na urządzeniu. Na program klient-serwer składają się 3 elementy:

  • Klient, który wysyła polecenia. Klient jest uruchamiany na Twoim komputerze do programowania. Możesz wywołać klienta z terminala wiersza poleceń, uruchamiając polecenie adb.
  • Demon (adbd), który uruchamia polecenia na urządzeniu. Demon działa w tle na każdym urządzeniu.
  • Serwer – zarządza komunikacją między klientem a demonem. Serwer działa w tle na komputerze programistycznym.

adb jest częścią pakietu Android SDK Platform Tools. Pobierz ten pakiet za pomocą Menedżera SDK, który instaluje go pod adresem android_sdk/platform-tools/. Jeśli potrzebujesz samodzielnego pakietu Android SDK Platform Tools, pobierz go tutaj.

Informacje o podłączaniu urządzenia do użytku w sieci adb, w tym o używaniu Asystenta połączenia do rozwiązywania typowych problemów, znajdziesz w artykule Uruchamianie aplikacji na urządzeniu sprzętowym.

Jak działa narzędzie adb

Po uruchomieniu klienta adb klient najpierw sprawdza, czy jest już uruchomiony proces serwera adb. Jeśli go nie znajdziesz, rozpocznie się proces serwera. Gdy serwer się uruchamia, wiąże się z lokalnym portem TCP 5037 i nasłuchuje poleceń wysyłanych z klientów adb.

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

Następnie serwer konfiguruje połączenia ze wszystkimi działającymi 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. W miejscu, w którym serwer znajduje demona adb (adbd), konfiguruje połączenie z tym portem.

Każdy emulator używa 2 portów sekwencyjnych – numeru parzystego do połączeń w konsoli i portu o nieparzystych numerach na potrzeby połączeń adb. Na przykład:

Emulator 1, konsola: 5554
Emulator 1, adb: 5555
Emulator 2, konsola: 5556
Emulator 2, adb: 5557
itd.

Jak pokazano, emulator połączony z portem adb na porcie 5555 jest taki sam jak emulator, którego konsola nasłuchuje na porcie 5554.

Gdy serwer skonfiguruje połączenia ze wszystkimi urządzeniami, możesz uzyskać do nich dostęp za pomocą poleceń adb. Ponieważ serwer zarządza połączeniami z urządzeniami i obsługuje polecenia z wielu klientów adb, możesz sterować dowolnym urządzeniem z poziomu dowolnego klienta lub skryptu.

Włącz debugowanie adb na urządzeniu

Aby używać narzędzia adb z urządzeniem podłączonym przez USB, musisz włączyć Debugowanie USB w ustawieniach systemu urządzenia, w sekcji Opcje programisty. W Androidzie w wersji 4.2 (poziom interfejsu API 17) i nowszych ekran Opcje programisty jest domyślnie ukryty. Aby był widoczny, włącz Opcje programisty.

Możesz teraz podłączyć urządzenie przez USB. Aby sprawdzić, czy urządzenie jest połączone, uruchom adb devices z katalogu android_sdk/platform-tools/. Jeśli urządzenie jest połączone, zobaczysz jego nazwę jako „urządzenie”.

Uwaga: gdy podłączysz urządzenie z Androidem 4.2.2 (poziom interfejsu API 17) lub nowszym, system wyświetli okno z pytaniem, czy zaakceptować klucz RSA, który umożliwia debugowanie na tym komputerze. Ten mechanizm zabezpieczeń chroni urządzenia użytkowników, ponieważ umożliwia wykonywanie debugowania USB ani innych poleceń adb przed odblokowaniem urządzenia i potwierdzeniem okna dialogowego.

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

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

Uwaga: instrukcje poniżej nie dotyczą urządzeń Wear z Androidem 11 (poziom API 30). Więcej informacji znajdziesz w przewodniku na temat debugowania aplikacji na Wear OS.

Android 11 (poziom interfejsu API 30) i nowsze obsługują bezprzewodowe wdrażanie i debugowanie aplikacji na stacji roboczej za pomocą Android Debug Bridge (adb). Na przykład aplikację z możliwością debugowania możesz wdrożyć na wielu urządzeniach zdalnych bez konieczności fizycznego podłączania urządzenia przez USB. Eliminuje to konieczność rozwiązywania typowych problemów z połączeniem USB, takich jak instalacja sterowników.

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

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

  • Upewnij się, że na urządzeniu jest zainstalowany Android 11 (poziom interfejsu API 30) lub nowszy w przypadku telefonu albo Android 13 (poziom interfejsu API 33) lub nowszy w przypadku telewizorów i Wear OS. Więcej informacji znajdziesz w artykule Sprawdzanie i aktualizowanie wersji Androida.

  • Jeśli używasz IDE, sprawdź, czy masz zainstalowaną najnowszą wersję Android Studio. Możesz go pobrać stąd.

  • Na stacji roboczej zaktualizuj SDK Platform Platform Tools do najnowszej wersji.

Aby skorzystać z debugowania bezprzewodowego, sparuj urządzenie ze stacją roboczą, używając kodu QR lub kodu parowania. Stacja robocza i urządzenie muszą być połączone z tą samą siecią bezprzewodową. Aby połączyć się z urządzeniem, wykonaj te czynności:

  1. Włącz opcje programisty na swoim urządzeniu.

  2. Otwórz Android Studio i wybierz Sparuj urządzenia przez Wi-Fi z menu uruchamiania konfiguracji.

    Menu uruchamiania konfiguracji
    Rysunek 1. Menu uruchamiania konfiguracji.

    Pojawi się okno Parowanie urządzeń przez Wi-Fi, jak widać na ilustracji 2.

    Zrzut ekranu pokazujący parowanie urządzeń przez Wi-Fi
    Rysunek 2. Wyskakujące okienko do sparowania urządzeń przy użyciu kodu QR lub kodu parowania.
  3. Na urządzeniu kliknij Debugowanie bezprzewodowe i sparuj urządzenie:

    Zrzut ekranu telefonu Pixel z widocznym ustawieniem Bezprzewodowe systemy debugowania.
    Rysunek 3. Zrzut ekranu pokazujący ustawienie Debugowanie bezprzewodowe na telefonie Google Pixel.
    1. Aby sparować urządzenie z kodem QR, wybierz Sparuj urządzenie z kodem QR i zeskanuj kod QR otrzymany w wyskakującym okienku Sparuj urządzenia przez Wi-Fi widocznym na ilustracji 2.

    2. Aby sparować urządzenie z kodem parowania, wybierz Sparuj urządzenie za pomocą kodu parowania w wyskakującym okienku Parowanie urządzeń przez Wi-Fi. Na urządzeniu wybierz Sparuj za pomocą kodu parowania i zanotuj otrzymany 6-cyfrowy kod. Gdy urządzenie pojawi się w oknie Sparuj urządzenia przez Wi-Fi, możesz wybrać Sparuj i wpisać 6-cyfrowy kod wyświetlony na urządzeniu.

      Zrzut ekranu z przykładowym kodem PIN
      Rysunek 4. Przykład 6-cyfrowego kodu.
  4. Po sparowaniu urządzenia możesz spróbować wdrożyć aplikację na urządzeniu.

    Aby sparować inne urządzenie lub zapomnieć bieżące urządzenie na stacji roboczej, otwórz na urządzeniu Debugowanie bezprzewodowe. Kliknij nazwę stacji roboczej w sekcji Sparowane urządzenia i wybierz Zapomnij.

  5. Jeśli chcesz szybko włączyć lub wyłączyć debugowanie bezprzewodowe, możesz użyć kafelków dla programistów Szybkich ustawień do Debugowania bezprzewodowego. Znajdziesz je w sekcji Opcje programisty > kafelki dla programistów Szybkich ustawień.

    Zrzut ekranu przedstawiający kafelki dewelopera Szybkich ustawień z telefonu Google Pixel.
    Rysunek 5. Ustawienie kafelki szybkich ustawień dla programisty pozwala szybko włączać i wyłączać debugowanie bezprzewodowe.

Połączenie Wi-Fi przy użyciu wiersza poleceń

Aby połączyć się z urządzeniem za pomocą wiersza poleceń bez Android Studio, 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 stacji roboczej otwórz okno terminala i przejdź do: android_sdk/platform-tools.

  4. Aby znaleźć adres IP, numer portu i kod parowania, wybierz Sparuj urządzenie za pomocą kodu parowania. Zapisz adres IP, numer portu i kod parowania wyświetlane na urządzeniu.

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

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

    Zrzut ekranu pokazujący parowanie w wierszu poleceń.
    Rysunek 6. Komunikat oznacza, że urządzenie zostało sparowane.

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.

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 na początku tej sekcji.

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

Poniżej znajduje się lista znanych problemów z debugowaniem bezprzewodowym (z Adb lub Android Studio) oraz ich rozwiązywaniem:

  • Wi-Fi nie łączy się: bezpieczne sieci Wi-Fi, takie jak firmowe sieci Wi-Fi, mogą blokować połączenia p2p i uniemożliwiać połączenie przez Wi-Fi. Spróbuj połączyć się za pomocą kabla lub innej (niefirmowej) sieci Wi-Fi. Na wypadek, gdyby można było skorzystać z sieci innej niż korporacyjna, jest też połączenie bezprzewodowe przez adb connect ip:port przez tcp/ip (po początkowym połączeniu USB).

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

  • Urządzenie nie łączy się po udanym sparowaniu: adb używa mDNS do wykrywania sparowanych urządzeń i automatycznego łączenia się z nimi. Jeśli Twoja sieć lub konfiguracja urządzenia nie obsługuje funkcji mDNS lub jest ona wyłączona, musisz ręcznie połączyć się z urządzeniem za pomocą adb connect ip:port.

Łączyć się bezprzewodowo z urządzeniem po pierwszym połączeniu USB (opcja dostępna tylko w Androidzie 10 i starszych).

Uwaga: ten przepływ pracy dotyczy również Androida w wersji 11 (i nowszych), z tym że wymaga on też *początkowego* połączenia przez fizyczne połączenie USB.

Uwaga: te instrukcje nie dotyczą urządzeń Wear z Androidem 10 (poziom interfejsu API 29) lub niższym. Więcej informacji znajdziesz w przewodniku dotyczącym debugowania aplikacji na Wear OS.

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

  1. Połącz urządzenie z Androidem i komputer hosta adb ze wspólną siecią Wi-Fi.
  2. Uwaga: pamiętaj, że nie wszystkie punkty dostępu są odpowiednie. Do obsługi adb może być konieczne użycie punktu dostępu, z którego zapora sieciowa jest prawidłowo skonfigurowana.

  3. Podłącz urządzenie do komputera hosta za pomocą kabla USB.
  4. Ustaw urządzenie docelowe tak, 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 możesz sprawdzić w sekcji Ustawienia > Informacje o tablecie (lub Informacje o telefonie) > Stan > Adres IP.
  7. Połącz się z urządzeniem, korzystając z jego adresu IP:
    adb connect device_ip_address:5555
    
  8. Sprawdź, czy komputer będący hostem jest połączony z urządzeniem docelowym:
    $ adb devices
    List of devices attached
    device_ip_address:5555 device
    

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

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

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

    Potem zacznij od początku.

Zapytanie dotyczące urządzeń

Przed uruchomieniem poleceń adb warto sprawdzić, które instancje urządzeń są połączone z serwerem adb. Wygeneruj listę podłączonych urządzeń za pomocą polecenia devices:

  adb devices -l
  

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

  • Numer seryjny: adb tworzy ciąg znaków jednoznacznie identyfikujący urządzenie na podstawie numeru portu. Oto przykładowy numer seryjny: emulator-5554
  • Stan: stan połączenia urządzenia może być jeden z tych:
    • offline: urządzenie nie jest połączone z adb lub nie odpowiada.
    • device: urządzenie jest połączone z serwerem adb. Ten stan nie oznacza, że system Android został w pełni rozruchowy i działa normalnie, ponieważ urządzenie łączy się z adb, gdy system nadal się uruchamia. Po uruchomieniu jest to normalny stan działania urządzenia.
    • no device: nie ma połączonych urządzeń.
  • Opis: jeśli dodasz opcję -l, polecenie devices pokaże, jakie jest urządzenie. Te informacje są przydatne, gdy masz podłączonych wiele urządzeń, aby móc je odróżnić.

Poniżej znajdziesz przykład polecenia devices i jego danych wyjściowych. Są uruchomione 3 urządzenia. Pierwsze 2 wiersze to emulatory, a trzeci wiersz to urządzenie sprzętowe podłączone 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ń zapisywanych narożnikami, co powoduje, że uruchomione emulatory nie wyświetlają się w danych wyjściowych adb devices, mimo że emulatory są widoczne na komputerze. Dzieje się tak, gdy są spełnione wszystkie te warunki:

  • Serwer adb nie jest uruchomiony.
  • Użyj polecenia emulator z opcją -port lub -ports z portem o nieparzystej liczbie numerów z zakresu od 5554 do 5584.
  • Wybrany port o nieparzystych numerach nie jest zajęty, więc można je nawiązać na określonym porcie. Jeśli jest on zajęty, emulator przełącza się na inny port, który spełnia wymagania punktu 2.
  • Serwer adb uruchamia się po uruchomieniu emulatora.

Jednym ze sposobów uniknięcia takiej sytuacji jest zezwolenie emulatorowi na wybór własnych portów i uruchamianie maksymalnie 16 emulatorów jednocześnie. Innym sposobem jest uruchomienie serwera adb przed użyciem polecenia emulator, jak wyjaśniono w poniższych przykładach.

Przykład 1: w poniższej sekwencji poleceń polecenie adb devices uruchamia serwer adb, ale nie wyświetla się lista urządzeń.

Zatrzymaj serwer adb i wpisz następujące polecenia w wyświetlonej kolejności. Jako nazwę AVD podaj prawidłową nazwę AVD z Twojego systemu. Aby uzyskać listę nazw AVD, wpisz emulator -list-avds. Polecenie emulator jest w katalogu 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 poniższej sekwencji poleceń adb devices wyświetla listę urządzeń, ponieważ serwer adb został uruchomiony jako pierwszy.

Aby wyświetlić emulator w danych wyjściowych adb devices, zatrzymaj serwer adb, a następnie uruchom go ponownie po użyciu polecenia emulator, a przed użyciem polecenia adb devices w ten 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

Więcej informacji o opcjach wiersza poleceń emulatora znajdziesz w artykule o opcjach uruchamiania wiersza poleceń.

Wysyłanie poleceń na konkretne urządzenie

Jeśli działa wiele urządzeń, podczas uruchamiania polecenia adb musisz podać urządzenie docelowe. Aby określić środowisko docelowe, wykonaj te czynności:

  1. Aby uzyskać numer seryjny środowiska docelowego, użyj polecenia devices.
  2. Gdy uzyskasz numer seryjny, użyj opcji -s za pomocą poleceń adb, aby podać go.
    1. Jeśli zamierzasz uruchomić wiele poleceń adb, możesz ustawić zmienną środowiskową $ANDROID_SERIAL tak, aby zawierała numer seryjny.
    2. Jeśli używasz zarówno właściwości -s, jak i $ANDROID_SERIAL, -s zastępuje $ANDROID_SERIAL.

W poniższym przykładzie odczytywana jest lista podłączonych urządzeń, a następnie numer seryjny jednego z urządzeń służy do zainstalowania na nim helloWorld.apk:

$ 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 uruchomisz polecenie bez określenia urządzenia docelowego, gdy dostępnych jest wiele urządzeń, adb wyświetli błąd „adb: więcej niż jedno urządzenie/emulator”.

Jeśli masz dostępnych kilka urządzeń, ale tylko jedno jest emulatorem, użyj opcji -e, aby wysłać polecenia do emulatora. Jeśli do urządzenia podłączonych jest wiele urządzeń, użyj opcji -d, aby wysłać polecenia do urządzenia.

Instalowanie aplikacji

Za pomocą polecenia adb możesz zainstalować pakiet APK w emulatorze lub połączonym urządzeniu za pomocą polecenia install:

adb install path_to_apk

Podczas instalowania testowego pakietu APK musisz użyć opcji -t w poleceniu install. Więcej informacji: -t.

Aby zainstalować wiele plików APK, użyj aplikacji install-multiple. Przydaje się to, gdy z Konsoli Play pobierasz wszystkie pliki APK dla konkretnego urządzenia i chcesz je zainstalować w emulatorze lub urządzeniu fizycznym.

Więcej informacji o tworzeniu pliku APK, który można zainstalować w emulatorze lub instancji urządzenia, znajdziesz w artykule Tworzenie i uruchamianie aplikacji.

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

Skonfiguruj przekierowanie portów

Za pomocą polecenia forward możesz skonfigurować przekierowanie dowolnych portów, które przekazuje żądania z określonego portu hosta do innego portu w urządzeniu. Ten przykład pozwala skonfigurować przekierowanie portu hosta 6100 na port urządzenia 7100:

adb forward tcp:6100 tcp:7100

Ten przykład pokazuje, jak skonfigurować przekierowanie portu hosta 6100 na local:logd:

adb forward tcp:6100 local:logd

Może to być przydatne, gdy próbujesz określić, co jest wysyłane do danego portu urządzenia. Wszystkie odebrane dane będą zapisywane w demonie logowania systemowego i wyświetlane w logach urządzenia.

Kopiowanie plików na urządzenie i z niego

Aby kopiować pliki na urządzenie i z niego, użyj poleceń pull i push. W odróżnieniu od polecenia install, które kopiuje plik APK tylko do określonej lokalizacji, polecenia 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 plików lub katalogu docelowego na komputerze programisty (lokalnym) i na urządzeniu (zdalnie). Na przykład:

adb push myfile.txt /sdcard/myfile.txt

Zatrzymaj serwer adb

W niektórych przypadkach musisz zakończyć proces serwera adb, a następnie uruchomić go ponownie, aby rozwiązać problem. Może tak być na przykład wtedy, gdy adb nie odpowiada na polecenie.

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

Wydawanie poleceń adb

Polecenia adb możesz wysłać z wiersza poleceń na komputerze programisty lub ze skryptu, korzystając z tych metod:

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

Jeśli działa tylko 1 emulator lub jest podłączone tylko 1 urządzenie, polecenie adb jest domyślnie wysyłane na to urządzenie. Jeśli działa wiele emulatorów lub dołączonych jest kilka urządzeń, użyj opcji -d, -e lub -s, aby określić urządzenie docelowe, na które ma być kierowane polecenie.

Aby wyświetlić szczegółową listę wszystkich obsługiwanych poleceń adb, użyj tego polecenia:

adb --help

Wydawanie poleceń powłoki

Za pomocą polecenia shell możesz wydawać polecenia dla urządzeń za pomocą adb lub uruchomić interaktywną powłokę. Aby wykonać jedno polecenie, użyj polecenia shell w ten sposób:

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

Aby uruchomić interaktywną powłokę na urządzeniu, użyj polecenia shell w ten sposób:

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 wyświetlić listę dostępnych narzędzi, użyj tego polecenia:

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ólna pomoc dotycząca wszystkich poleceń Pole toybox jest dostępna w toybox --help.

W narzędziach platformy Android 23 i nowszych adb obsługuje argumenty w taki sam sposób jak polecenie ssh(1). Ta zmiana rozwiązała wiele problemów z wstrzykiwaniem poleceń i umożliwia bezpieczne wykonywanie poleceń zawierających metaznaki powłoki, np. adb install Let\'sGo.apk. Ta zmiana oznacza, że zmieniła się również interpretacja poleceń zawierających metaznaki powłoki.

Na przykład błąd adb shell setprop key 'value' jest teraz błędem, ponieważ pojedynczy cudzysłów (') jest pochłaniany przez powłokę lokalną, a urządzenie widzi adb shell setprop key value. Aby polecenie działało, zacytuj 2 razy: raz dla lokalnej powłoki i raz dla powłoki zdalnej, tak jak w przypadku ssh(1). Przykład: adb shell setprop key 'value' .

Zobacz też narzędzie wiersza poleceń Logcat, które przydaje się do monitorowania logu systemowego.

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

W powłoce adb możesz wydawać polecenia w narzędziu Menedżer aktywności (am), aby wykonywać różne działania systemowe, takie jak uruchamianie działania, wymuszanie zatrzymania procesu, przesyłanie intencji czy modyfikowanie właściwości ekranu urządzenia.

W powłoce składnia am wygląda tak:

am command

Polecenie menedżera aktywności możesz też uruchomić bezpośrednio w adb bez konieczności wpisywania powłoki zdalnej. Na przykład:

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

Tabela 1. Dostępne polecenia w Menedżerze aktywności

Polecenie Opis
start [options] intent Rozpocznij instancję Activity określoną przez intent.

Zobacz specyfikację argumentów intencji.

Dostępne opcje:

  • -D: włączanie debugowania.
  • -W: poczekaj na zakończenie uruchamiania.
  • --start-profiler file: uruchom program profilujący i wyślij wyniki do usługi file.
  • -P file: tak jak --start-profiler, ale profilowanie zatrzymuje się, gdy aplikacja przechodzi w stan bezczynności.
  • -R count: powtórz uruchomienie działania count razy. Przed każdym powtórzeniem najważniejsza aktywność zostanie zakończona.
  • -S: przed rozpoczęciem aktywności wymuś zatrzymanie aplikacji docelowej.
  • --opengl-trace: włącz śledzenie funkcji OpenGL.
  • --user user_id | current: określ, którego użytkownika chcesz uruchamiać. Jeśli nie podasz żadnej, uruchom jako bieżący użytkownik.
startservice [options] intent Rozpocznij Service wskazanej przez intent.

Zobacz specyfikację argumentów intencji.

Dostępne opcje:

  • --user user_id | current: określ użytkownika, który ma uruchomić tę funkcję. Jeśli go nie podasz, uruchom jako bieżący użytkownik.
force-stop package Wymuś zatrzymanie wszystkich działań powiązanych z package.
kill [options] package Zakończ wszystkie procesy powiązane z usługą package. To polecenie wyłącza tylko procesy, które można bezpiecznie zamknąć i które nie mają wpływu na wygodę użytkowników.

Dostępne opcje:

  • --user user_id | all | current: określ procesy użytkownika, które chcesz zakończyć. Jeśli nie podasz żadnej wartości, zamknij wszystkie procesy użytkowników.
kill-all Zakończ wszystkie procesy w tle.
broadcast [options] intent Wyślij intencję transmisji.

Zobacz specyfikację argumentów intencji.

Dostępne opcje:

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

Dostępne opcje:

  • -r: drukuj nieprzetworzone wyniki (w innym przypadku dekoduj report_key_streamresult). Używaj razem z wartością [-e perf true], aby generować nieprzetworzone dane wyjściowe do pomiarów wydajności.
  • -e name value: ustaw argument name na value. Częstym formularzem dla testerów jest -e testrunner_flag value[,value...].
  • -p file: zapisz dane profilowania w file.
  • -w: zanim wrócisz, poczekaj na zakończenie obsługi narzędzi. Wymagany w przypadku elementów uruchamiających testy.
  • --no-window-animation: wyłącza animacje okien podczas biegu.
  • --user user_id | current: określ, w jakich instrumentach jest uruchamiana instrumentacja użytkownika. Jeśli nie podasz żadnej wartości, uruchom ją w bieżącym użytkowniku.
profile start process file Uruchom profilowanie w process, zapisz wyniki w file.
profile stop process Zatrzymaj profilowanie na urządzeniu process.
dumpheap [options] process file Zrzuć stertę elementu process, zapisz go w tabeli file.

Dostępne opcje:

  • --user [user_id | current]: podając nazwę procesu, określ użytkownika procesu do zrzutu. Jeśli go nie podasz, używany będzie bieżący użytkownik.
  • -n: zrzuć stertę natywną zamiast zarządzanej sterty.
set-debug-app [options] package Ustaw aplikację package do debugowania.

Dostępne opcje:

  • -w: poczekaj na debugera po uruchomieniu aplikacji.
  • --persistent: zachowaj tę wartość.
clear-debug-app Wyczyść poprzedni pakiet pakietu do debugowania za pomocą funkcji set-debug-app.
monitor [options] Rozpocznij monitorowanie pod kątem awarii lub 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 Steruj trybem zgodności ekranu obiektu package.
display-size [reset | widthxheight] Zastąp rozmiar wyświetlacza urządzenia. To polecenie przydaje się do testowania aplikacji na ekranach o różnych rozmiarach dzięki naśladowaniu małej rozdzielczości ekranu urządzenia z dużym ekranem (i odwrotnie).

Przykład:
am display-size 1280x800

display-density dpi Zastąp gęstość interfejsu na urządzeniu. To polecenie przydaje się do testowania aplikacji na różnych gęstości ekranu przez naśladowanie środowiska ekranu o dużej gęstości za pomocą ekranu o małej gęstości (i odwrotnie).

Przykład:
am display-density 480

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

Zobacz specyfikację argumentów intencji.

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

Zobacz specyfikację argumentów intencji.

Specyfikacja argumentów intencji

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

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

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

W powłoce składnia pm wygląda tak:

pm command

Polecenie menedżera pakietów możesz też uruchomić bezpośrednio w adb bez konieczności wpisywania powłoki zdalnej. 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, opcjonalnie tylko te, których nazwa pakietu zawiera tekst w polu filter.

Opcje:

  • -f: zobacz powiązany plik.
  • -d: pokazuje tylko wyłączone pakiety.
  • -e: pokazuje tylko włączone pakiety.
  • -s: pokazuje tylko pakiety systemowe.
  • -3: pokazuje tylko pakiety innych firm.
  • -i: wyświetla instalator dla pakietów.
  • -u: uwzględnia odinstalowane pakiety.
  • --user user_id: obszar użytkownika, którego dotyczy zapytanie.
list permission-groups Wydrukuj wszystkie znane grupy uprawnień.
list permissions [options] group Wydrukuj wszystkie znane uprawnienia, opcjonalnie tylko te z zakresu group.

Opcje:

  • -g: uporządkuj według grup.
  • -f: drukowanie wszystkich informacji.
  • -s: krótkie podsumowanie.
  • -d: wyświetlaj tylko niebezpieczne uprawnienia.
  • -u: pokazuje tylko te uprawnienia, które będą widoczne dla użytkowników.
list instrumentation [options] Wyświetl wszystkie pakiety testowe.

Opcje:

  • -f: podaj plik APK pakietu testowego.
  • target_package: pokazuje listę pakietów testowych tylko dla tej aplikacji.
list features Wydrukuj wszystkie funkcje systemu.
list libraries Wydrukuj wszystkie biblioteki obsługiwane przez bieżące urządzenie.
list users Drukuj wszystkich użytkowników w systemie.
path package Wydrukuj ścieżkę do pliku APK danego pliku 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 plik APK tylko wtedy, gdy aplikacja została uruchomiona lub debugowana albo gdy użyjesz polecenia Utwórz > Utwórz plik APK w Android Studio. Jeśli plik APK został utworzony za pomocą pakietu SDK w wersji deweloperskiej, musisz dodać do polecenia install opcję -t podczas instalowania testowego pakietu APK.
  • -i installer_package_name: podaj nazwę pakietu instalatora.
  • --install-location location: ustaw lokalizację instalacji, używając 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 systemu.
  • -d: zezwalaj na przechodzenie na niższy kod wersji.
  • -g: przyznaj wszystkie uprawnienia wymienione w pliku manifestu aplikacji.
  • --fastdeploy: aby szybko zaktualizować zainstalowany pakiet, aktualizuj tylko te części pliku APK, które uległy zmianie.
  • --incremental: instaluje wystarczającą ilość pliku APK, aby uruchomić aplikację, przesyłając pozostałe dane w tle. Aby korzystać z tej funkcji, musisz podpisać plik APK, utworzyć plik schematu podpisu pliku APK w wersji 4 i umieścić go w tym samym katalogu co plik APK. Ta funkcja jest obsługiwana tylko na niektórych urządzeniach. Ta opcja wymusza na adb użycie funkcji lub jeśli nie jest obsługiwana, wraz ze szczegółowymi informacjami o przyczynach niepowodzenia. Dodaj opcję --wait, aby przed przyznaniem dostępu do pliku APK czekać, aż plik APK zostanie w pełni zainstalowany.

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

uninstall [options] package Usuwa pakiet z systemu.

Opcje:

  • -k: zachowaj katalogi danych i pamięci podręcznej po usunięciu pakietu.
  • --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 dany pakiet lub komponent (zapisany jako „pakiet/klasa”).
disable package_or_component Wyłącz dany pakiet lub komponent (zapisany jako „pakiet/klasa”).
disable-user [options] package_or_component

Opcje:

  • --user user_id: użytkownik, którego konto ma zostać wyłączone.
grant package_name permission Przyznaj aplikacji uprawnienia. Na urządzeniach z Androidem 6.0 (poziom interfejsu API 23) lub nowszym uprawnienie może być dowolnym uprawnieniem zadeklarowanym w manifeście aplikacji. Na urządzeniach z Androidem 5.1 (poziom interfejsu API 22) lub starszym musi to być opcjonalne uprawnienie zdefiniowane przez aplikację.
revoke package_name permission Cofnij uprawnienia aplikacji. Na urządzeniach z Androidem 6.0 (poziom interfejsu API 23) lub nowszym mogą to być dowolne uprawnienia zadeklarowane w manifeście aplikacji. Na urządzeniach z Androidem 5.1 (poziom interfejsu API 22) lub starszym musi to być opcjonalne uprawnienie zdefiniowane przez aplikację.
set-install-location location Zmień domyślną lokalizację instalacji. Wartości lokalizacji:
  • 0: Automatycznie: pozwól systemowi wybrać najlepszą lokalizację.
  • 1: wewnętrzne: zainstaluj w pamięci wewnętrznej urządzenia.
  • 2: zewnętrzny: zainstaluj na nośniku zewnętrznym.

Uwaga: ta kolumna jest przeznaczona tylko do debugowania. Może to spowodować awarię aplikacji i inne niepożądane działania.

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 zwolnić miejsce.
create-user user_name Utwórz nowego użytkownika o podanym identyfikatorze user_name i drukuj jego identyfikator.
remove-user user_id Usuń użytkownika z określonym user_id i usuń wszystkie powiązane z nim dane
get-max-users Drukuj maksymalną liczbę użytkowników obsługiwanych przez urządzenie.
get-app-links [options] [package]

Drukuj stan weryfikacji domeny dla danego elementu package lub dla wszystkich pakietów, jeśli nie określono żadnego. Kody stanu są zdefiniowane w następujący sposób:

  • none: nic nie zostało zarejestrowane w tej domenie.
  • verified: własność domeny została potwierdzona
  • approved: zatwierdzone w sposób wymuszony, zwykle przez powłokę
  • denied: wymuszona, zazwyczaj przez powłokę
  • migrated: zachowano weryfikację ze starszej odpowiedzi
  • restored: zachowana weryfikacja po przywróceniu danych użytkownika
  • legacy_failure: odrzucenie przez starszy weryfikator (nieznana przyczyna)
  • system_configured: automatycznie zatwierdzone przez konfigurację urządzenia
  • >= 1024: niestandardowy kod błędu właściwy dla weryfikatora urządzenia

Dostępne opcje:

  • --user user_id: uwzględnia wybory użytkownika. Uwzględnij wszystkie domeny, a nie tylko domeny z automatyczną weryfikacją.
reset-app-links [options] [package]

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

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

Dostępne opcje:

  • --user user_id: uwzględnia wybory użytkownika. Uwzględnij wszystkie domeny, a nie tylko domeny z automatyczną weryfikacją.
verify-app-links [--re-verify] [package]

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

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

Ustaw ręcznie stan domeny pakietu. Aby można było to zrobić, pakiet musi zadeklarować domenę jako automatyczną weryfikację. To polecenie nie zgłasza błędów w przypadku domen, których nie udało się zastosować.

  • --package package: pakiet, który chcesz ustawić, lub „wszystkie”, aby ustawić wszystkie pakiety.
  • state: kod służący do ustawiania domen. Prawidłowe wartości to:
    • STATE_NO_RESPONSE (0): resetowane tak, jakby odpowiedź nie była rejestrowana.
    • STATE_SUCCESS (1): traktuj domenę jako zweryfikowaną przez agenta weryfikacji domeny. Pamiętaj, że agent weryfikacji domeny może to zastąpić.
    • STATE_APPROVED (2): traktuj domenę jako zawsze zatwierdzoną, uniemożliwiając agentowi weryfikacji domeny jej zmianę.
    • STATE_DENIED (3): traktuj domenę jako zawsze odrzuconą, uniemożliwiając agentowi weryfikacji domeny jej zmianę.
  • domains: oddzielona spacjami lista domen do zmiany lub „wszystkie”, by zmienić każdą domenę.
set-app-links-user-selection --user user_id [--package package] enabled domains

Ustaw ręcznie stan wyboru użytkownika hosta dla pakietu. Aby można było to zrobić, domena musi być zadeklarowana w pakiecie. To polecenie nie zgłasza błędów w przypadku domen, których nie udało się zastosować.

  • --user user_id: użytkownik, który zmienia wybór
  • --package package: pakiet do ustawienia
  • enabled: czy domena ma zostać zatwierdzona
  • domains: oddzielona spacjami lista domen do zmiany lub „wszystkie”, jeśli chcesz zmienić każdą domenę
set-app-links-user-selection --user user_id [--package package] enabled domains

Ustaw ręcznie stan wyboru użytkownika hosta dla pakietu. Aby można było to zrobić, domena musi być zadeklarowana w pakiecie. To polecenie nie zgłasza błędów w przypadku domen, których nie udało się zastosować.

  • --user user_id: użytkownik, który zmienia wybór
  • --package package: pakiet do ustawienia
  • enabled: czy domena ma zostać zatwierdzona
  • domains: oddzielona spacjami lista domen do zmiany lub „wszystkie”, jeśli chcesz zmienić każdą domenę
set-app-links-allowed --user user_id [--package package] allowed

Przełącz automatycznie weryfikowane ustawienie obsługi linków dla pakietu.

  • --user user_id: użytkownik, który zmienia wybór
  • --package package: pakiet do ustawienia lub „all”, który pozwala ustawić wszystkie pakiety. Jeśli nie określisz żadnego pakietu, zostaną one zresetowane.
  • allowed: true (prawda), aby zezwolić pakietowi na otwieranie automatycznie zweryfikowanych linków, false (fałsz), aby wyłączyć
get-app-link-owners --user user_id [--package package] domains

Wydrukuj listę właścicieli określonej domeny dla danego użytkownika w kolejności od najmniejszego do najwyższego priorytetu.

  • --user user_id: użytkownik, którego ma dotyczyć zapytanie
  • --package package: opcjonalnie drukuj także we wszystkich domenach internetowych zadeklarowanych w pakiecie lub „Wszystkie”, by wydrukować wszystkie pakiety
  • domains: oddzielona spacjami lista domen, których ma dotyczyć zapytanie

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

Aby ułatwić sobie tworzenie i testowanie aplikacji do zarządzania urządzeniami, wydawaj polecenia do narzędzia menedżera zasad dotyczących urządzeń (dpm). Za pomocą tego narzędzia możesz kontrolować aktywną aplikację administratora lub zmienić dane o stanie zasad na urządzeniu.

W powłoce dpmskładnia to:

dpm command

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

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ż przekazać --user current, aby wybrać bieżącego użytkownika.
set-profile-owner [options] component Ustaw aplikację component jako aktywnego administratora i jej pakiet jako właściciela profilu istniejącego użytkownika.

Dostępne opcje:

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

Dostępne opcje:

  • --user user_id: określ użytkownika docelowego. Możesz też przekazać --user current, aby wybrać bieżącego użytkownika.
  • --name name: podaj zrozumiałą 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ądzeń i profili.

Dostępne opcje:

  • --user user_id: określ użytkownika docelowego. Możesz też przekazać --user current, aby wybrać bieżącego użytkownika.
clear-freeze-period-record Wyczyść na urządzeniu rejestr wcześniej ustawionych okresów blokady aktualizacji OTA. Pomaga to uniknąć ograniczeń w harmonogramie wyświetlania 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ś pobranie przez system wszystkich istniejących dzienników sieciowych do pobrania przez DPC. Jeśli są dostępne połączenia lub logi DNS, DPC odbiera wywołanie zwrotne onNetworkLogsAvailable(). Zobacz Rejestrowanie aktywności sieciowej.

To polecenie ma ograniczoną liczbę żądań. Obsługiwane na urządzeniach z Androidem 9.0 (poziom interfejsu API 28) lub nowszym.

force-security-logs Wymuszaj system, aby wszystkie istniejące dzienniki zabezpieczeń były dostępne dla DPC. Jeśli logi są dostępne, DPC odbiera wywołanie zwrotne onSecurityLogsAvailable(). Zobacz Rejestrowanie aktywności na urządzeniach firmowych.

To polecenie ma ograniczoną liczbę żądań. 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 robienia zrzutu ekranu urządzenia.

W powłoce składnia screencap wygląda tak:

screencap filename

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

adb shell screencap /sdcard/screen.png

Oto przykład sesji zrzutu ekranu za pomocą powłoki adb do zrobienia zrzutu ekranu oraz polecenia 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ść na ekranie w pliku MPEG-4. Możesz użyć tego pliku do tworzenia filmów promocyjnych lub szkoleniowych bądź debugowania i testowania.

W powłoce użyj takiej 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 nagrywanie zatrzyma się automatycznie po 3 minutach lub po upływie limitu czasu ustawionego przez --time-limit.

Jeśli chcesz nagrywać ekran urządzenia, uruchom polecenie screenrecord. Następnie uruchom polecenie pull, aby pobrać film z urządzenia na komputer hosta. Oto przykład sesji nagraniowej:

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

Narzędzie screenrecord może nagrywać w dowolnej obsługiwanej rozdzielczości i z wybraną szybkością transmisji bitów, zachowując proporcje wyświetlacza urządzenia. Narzędzie domyślnie rejestruje w rozdzielczości i orientacji natywnego ekranu (maksymalnie 3 minuty).

Ograniczenia narzędzia screenrecord:

  • Plik wideo nie rejestruje dźwięku.
  • Nagrywanie filmów nie jest dostępne na urządzeniach z Wear OS.
  • Niektóre urządzenia mogą nie być w stanie nagrywać w natywnej rozdzielczości ekranu. Jeśli wystąpią problemy z nagrywaniem ekranu, spróbuj ustawić niższą rozdzielczość.
  • Obracanie ekranu podczas nagrywania nie jest obsługiwane. Jeśli podczas nagrywania ekran zostanie obrócony, jego część zostanie ucięta.

Tabela 4. Opcje: screenrecord

Opcje Opis
--help Wyświetl składnię i opcje poleceń
--size widthxheight Ustaw rozmiar filmu: 1280x720. Wartością domyślną jest natywna rozdzielczość wyświetlacza urządzenia (jeśli jest obsługiwana) lub 1280 x 720, jeśli nie jest. Aby uzyskać najlepszy wynik, użyj rozmiaru obsługiwanego przez koder AVC (Advanced Video Coding) Twojego urządzenia.
--bit-rate rate Ustaw szybkość transmisji bitów filmu w megabitach na sekundę. Wartość domyślna to 4 Mb/s. Możesz zwiększyć szybkość transmisji bitów, aby poprawić jakość wideo, ale spowoduje to uzyskanie większych plików filmowych. Ten przykład ustawia szybkość transmisji bitów nagrywania 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 o 90 stopni. Ta funkcja jest eksperymentalna.
--verbose Wyświetl informacje z dziennika na ekranie wiersza poleceń. Jeśli nie ustawisz tej opcji, narzędzie nie wyświetli żadnych informacji podczas działania.

Odczyt profili ART dla aplikacji

Od Androida 7.0 (poziom interfejsu API 24) środowisko Android Runtime (ART) gromadzi profile wykonywania zainstalowanych aplikacji, które służą do optymalizacji wydajności aplikacji. Przeanalizuj zebrane profile, aby dowiedzieć się, które metody są często wykonywane i które klasy są używane podczas uruchamiania aplikacji.

Uwaga: nazwę pliku profilu wykonania możesz pobrać tylko wtedy, gdy masz dostęp roota do systemu plików, na przykład przy użyciu emulatora.

Aby utworzyć formę tekstową informacji z profilu, użyj następującego polecenia:

adb shell cmd package dump-profiles package

Aby pobrać wygenerowany plik, użyj polecenia:

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

Resetowanie urządzeń testowych

Jeśli testujesz aplikację na kilku urządzeniach testowych, może się przydać resetowanie urządzenia między testami, na przykład w celu usunięcia danych użytkownika i zresetowania środowiska testowego. Możesz przywrócić ustawienia fabryczne na urządzeniu testowym z Androidem 10 (poziom interfejsu API 29) lub nowszym, korzystając z polecenia powłoki testharness adb, jak pokazano poniżej:

adb shell cmd testharness enable

Podczas przywracania urządzenia za pomocą funkcji testharness urządzenie automatycznie tworzy kopię zapasową klucza RSA, co umożliwia debugowanie za pomocą bieżącej stacji roboczej w stałej lokalizacji. Oznacza to, że po zresetowaniu urządzenia stacja robocza może nadal debugować i wydawać polecenia adb na urządzeniu bez ręcznego rejestrowania nowego klucza.

Aby testowanie aplikacji było łatwiejsze i bezpieczniejsze, przywrócenie urządzenia za pomocą polecenia testharness spowoduje też zmianę tych ustawień:

  • Na urządzeniu zostaną skonfigurowane określone ustawienia systemowe, aby kreatory początkowej konfiguracji urządzenia nie były wyświetlane. Oznacza to, że urządzenie wchodzi w stan, z którego możesz szybko zainstalować, debugować i przetestować 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 Twoja aplikacja musi wykryć i dostosować domyślne ustawienia polecenia testharness, użyj ActivityManager.isRunningInUserTestHarness().

SQlite

sqlite3 uruchamia program wiersza poleceń sqlite do badania baz danych SQLite. Zawiera on polecenia, takie jak .dump, które umożliwiają wydrukowanie zawartości tabeli, i .schema, która pozwala wydrukować instrukcję SQL CREATE dla istniejącej tabeli. Polecenia SQLite możesz też wykonywać z poziomu wiersza poleceń:

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

Uwaga: dostęp do bazy danych SQLite możesz uzyskać tylko wtedy, gdy masz dostęp roota do systemu plików, na przykład za pomocą emulatora.

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 korzystać z natywnego backendu systemu operacyjnego (Windows, Linux lub macOS) albo z backendu libusb. Niektóre funkcje, takie jak attach, detach i wykrywanie szybkości USB, są dostępne tylko podczas korzystania z backendu libusb.

Możesz wybrać backend, korzystając ze zmiennej środowiskowej ADB_LIBUSB. Jeśli nie będzie skonfigurowana, adb będzie używać swojego domyślnego backendu. Domyślne działanie różni się w zależności od systemu operacyjnego. Od poziomu interfejsu API 34 domyślnie używany jest backend natywny. Jeśli jest skonfigurowana ADB_LIBUSB, określa, czy używany jest natywny backend czy libusb. Więcej informacji o zmiennych środowiskowych adb znajdziesz na stronie z podręcznikiem adb.

Backendy adb mDNS

ADB może użyć protokołu DNS multicast, aby automatycznie połączyć serwer i urządzenia. Serwer ADB jest wyposażony w 2 backendy: Bonjour (mdnsResponder firmy Apple) i Openscreen.

Backend Bonjour wymaga, aby na hoście był uruchomiony demon. W systemie macOS wbudowany demon Apple jest zawsze uruchomiony, ale w systemach Windows i Linux użytkownik musi upewnić się, że demon mdnsd działa. Jeśli polecenie adb mdns check zwraca błąd, prawdopodobnie ADB korzysta z backendu Bonjour, ale nie działa żaden demon Bonjour.

Backend Openscreen nie wymaga, aby na komputerze był uruchomiony demon. Obsługa backendu w systemie Openscreen w systemie macOS rozpoczyna się od ADB w wersji 35. Od ADB w wersji 34 obsługiwane są systemy Windows i Linux.

Domyślnie ADB korzysta z backendu Bonjour. Można to zmienić za pomocą zmiennej środowiskowej ADB_MDNS_OPENSCREEN (ustawiona na 1 lub 0). Więcej informacji znajdziesz na stronie z ręczną konfiguracją ADB.