Android Debug Bridge (adb)

Android Debug Bridge (adb) to wszechstronne narzędzie wiersza poleceń, które umożliwia komunikację z urządzeniem. 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 Unix, której możesz używać do wykonywania różnych poleceń na urządzeniu. Jest to program klient-serwer, który składa się z 3 komponentów:

  • Klient, który wysyła polecenia. Klient działa na Twoim komputerze programistycznym. Możesz wywołać klienta z poziomu terminala wiersza poleceń, wykonując polecenie adb.
  • Demon (adbd), który wykonuje polecenia na urządzeniu. Demon działa w tle jako proces na każdym urządzeniu.
  • Serwer, który zarządza komunikacją między klientem a demonem. Serwer działa jako proces w tle na komputerze programisty.

adb jest zawarty w pakiecie narzędzi platformy Android SDK. Pobierz ten pakiet za pomocą Menedżera pakietu SDK, który zainstaluje go w katalogu android_sdk/platform-tools/. Jeśli chcesz pobrać samodzielny pakiet Platform Tools w ramach Android SDK, pobierz go tutaj.

Informacje o podłączaniu urządzenia do korzystania z adb, w tym o używaniu Asystenta połączeń do rozwiązywania typowych problemów, znajdziesz w artykule Uruchamianie aplikacji na urządzeniu z oprogramowaniem.

Jak działa adb

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

Uwaga: wszyscy klienci adb używają portu 5037 do komunikacji z serwerem adb.

Następnie serwer łączy się ze wszystkimi uruchomionymi urządzeniami. Lokalizuje je, skanując porty o nieparzystych numerach w zakresie od 5555 do 5585, który jest używany przez pierwsze 16 emulatorów. Jeśli serwer znajdzie demona adb (adbd), skonfiguruje połączenie z tym portem.

Każdy emulator używa pary kolejnych portów – port o parzystej liczbie do połączeń z konsolą i port o nieparzystej liczbie do połączeń z adb. Przykład:

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

Jak widać, emulator połączony z 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 przetwarza komendy z różnych klientów adb, możesz sterować dowolnym urządzeniem z dowolnego klienta lub ze skryptu.

Włączanie debugowania adb na urządzeniu

Aby używać adb z urządzeniem połączonym przez USB, musisz włączyć debugowanie USB w ustawieniach systemowych urządzenia w sekcji Opcje dla deweloperów. W Androidzie 4.2 (interfejs API 17) i nowszych ekran Opcje programisty jest domyślnie ukryty. Aby go wyświetlić, włącz Opcje programisty.

Możesz teraz podłączyć urządzenie kablem 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: po podłączeniu urządzenia z Androidem 4.2.2 (poziom interfejsu API 17) lub nowszym system wyświetli okno dialogowe z pytaniem, czy chcesz zaakceptować klucz RSA, który umożliwia debugowanie na tym komputerze. Ten mechanizm zabezpieczeń chroni urządzenia użytkowników, ponieważ zapewnia, że debugowanie przez USB i inne polecenia adb nie mogą być wykonywane, dopóki nie odblokujesz urządzenia i nie potwierdzisz w oknie dialogowym.

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

Łączenie z urządzeniem przez Wi-Fi

Uwaga: te instrukcje nie dotyczą urządzeń Wear z Androidem 11 (poziom interfejsu API 30). Więcej informacji znajdziesz w przewodniku po debugowaniu aplikacji na Wear OS.

Android 11 (poziom interfejsu API 30) i nowsze wersje obsługują wdrażanie i debugowanie aplikacji bezprzewodowo z stanowiska roboczego za pomocą Android Debug Bridge (adb). Możesz na przykład wdrożyć aplikację z możliwością debugowania na wielu urządzeniach zdalnych bez konieczności fizycznego podłączania urządzenia przez USB. Dzięki temu nie musisz rozwiązywać typowych problemów z połączeniem USB, takich jak instalacja sterownika.

Zanim zaczniesz korzystać z debugowania bezprzewodowego:

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

  • Upewnij się, że masz urządzenie z Androidem 11 (poziom API 30) lub nowszym (w przypadku telefonu) albo z Androidem 13 (poziom API 33) lub nowszym (w przypadku telewizora i Wear OS). Więcej informacji znajdziesz w artykule Sprawdzanie i aktualizowanie wersji Androida.

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

  • Na stacji roboczej zaktualizuj narzędzia platformy SDK do najnowszej wersji.

Aby korzystać z debugowania bezprzewodowego, musisz sparować urządzenie z stanowiskiem roboczym za pomocą 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:

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

  2. Otwórz Android Studio i w menu konfiguracji uruchomienia wybierz Pair Devices Using Wi-Fi (Parowanie urządzeń za pomocą Wi-Fi).

    Menu konfiguracji
    Rysunek 1. Menu konfiguracji uruchomień.

    Pojawi się okno Sparuj urządzenia przez Wi-Fi, jak pokazano na rysunku 2.

    Zrzut ekranu pokazujący wyskakujące okienko z informacją o sparowaniu urządzeń przez Wi-Fi
    Rysunek 2. Okno z prośbą o sparowanie urządzeń za pomocą kodu QR lub kodu parowania.
  3. Na urządzeniu kliknij Debugowanie przez Wi-Fi i sparuj urządzenie:

    Zrzut ekranu telefonu Pixel z ustawieniem dotyczącym debugowania w sieci bezprzewodowej.
    Rysunek 3. Zrzut ekranu z ustawienia Debugowanie bezprzewodowe na telefonie Google Pixel.
    1. Aby sparować urządzenie przy użyciu kodu QR, wybierz Sparuj urządzenie przy użyciu kodu QR i zeskanuj kod QR uzyskany z wyskakującego okienka Sparuj urządzenia przez Wi-Fi, jak pokazano na rysunku 2.

    2. Aby sparować urządzenie przy użyciu kodu parowania, w wyskakującym okienku Sparuj urządzenia przez Wi-Fi wybierz Sparuj urządzenie przy użyciu kodu parowania. Na urządzeniu wybierz Sparuj za pomocą kodu parowania i zapisz podany 6-cyfrowy kod. Gdy Twoje urządzenie pojawi się w oknie Sparuj urządzenia przez Wi-Fi, kliknij Sparuj i wpisz 6-cyfrowy kod widoczny na urządzeniu.

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

    Aby sparować inne urządzenie lub usunąć obecne urządzenie z komputera, na urządzeniu przejdź do Połącz bezprzewodowo z debugowaniem. Kliknij nazwę stacji roboczej w sekcji Skojarzone urządzenia i wybierz Zapomnij.

  5. Jeśli chcesz szybko włączać i wyłączać debugowanie bezprzewodowe, możesz skorzystać z kafelków szybkich ustawień dla programisty dotyczących debugowania bezprzewodowego, które znajdziesz w sekcji Opcje programisty > Kafelki szybkich ustawień dla programisty.

    Zrzut ekranu pokazujący kafelki szybkich ustawień dla programisty na telefonie Google Pixel
    Rysunek 5. Ustawienie Kafle szybkich ustawień dla programisty pozwala szybko włączać i wyłączać debugowanie bezprzewodowe.

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

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

  1. Włącz opcje programisty na urządzeniu, jak opisano wcześniej.

  2. Włącz bezprzewodowe debugowanie na urządzeniu, zgodnie z opisem powyżej.

  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świetlony na urządzeniu.

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

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

    Zrzut ekranu pokazujący parowanie w wierszu poleceń.
    Rysunek 6. Pojawi się komunikat informujący o sparowaniu urządzenia.

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

Jeśli masz problemy z połączeniem bezprzewodowym z urządzeniem, wykonaj te czynności, aby je rozwiązać.

Sprawdź, czy stanowisko robocze 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.

Sprawdzanie innych znanych problemów

Poniżej znajdziesz listę znanych problemów z debugowaniem bezprzewodowym (za pomocą adb lub Android Studio) oraz sposoby ich rozwiązywania:

  • Nie można połączyć się przez Wi-Fi: bezpieczne sieci Wi-Fi, takie jak sieci Wi-Fi firmowe, mogą blokować połączenia p2p i nie pozwalać na połączenie przez Wi-Fi. Spróbuj połączyć się za pomocą kabla lub innej sieci Wi-Fi (niefirmowej). Inną opcją jest połączenie bezprzewodowe za pomocą adb connect ip:port przez tcp/ip (po początkowym połączeniu przez USB), jeśli korzystanie z sieci niefirmowej jest możliwe.

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

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

Połączenie bezprzewodowe z urządzeniem po początkowym połączeniu przez USB (opcja dostępna tylko w Androidzie 10 i starszych)

Uwaga: ten proces jest również dostępny w Androidzie 11 (i wyższych), ale wymaga *wstępnego* połączenia przez fizyczny kabel 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 na temat 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 starszym, wykonaj te wstępne czynności przez USB:

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

  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 znajdziesz w sekcji Ustawienia > Informacje o tablecie (lub Informacje o telefonie) > Stan > Adres IP.
  7. Połącz się z urządzeniem za pomocą jego adresu IP:
    adb connect device_ip_address:5555
    
  8. Sprawdź, czy komputer hosta jest połączony z urządzeniem docelowym:
    $ adb devices
    List of devices attached
    device_ip_address:5555 device
    

Urządzenie jest teraz połączone z adb.

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

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

    Następnie zacznij od początku.

Zapytanie o urządzenia

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

  adb devices -l
  

W odpowiedzi adb wyświetla informacje o stanie każdego urządzenia:

  • Numer seryjny: adb tworzy ciąg znaków, aby jednoznacznie zidentyfikować urządzenie za pomocą jego numeru portu. Oto przykład numeru seryjnego: emulator-5554
  • Stan:urządzenie może mieć jeden z tych stanów połączenia:
    • offline: urządzenie nie jest połączone z adb lub nie odpowiada.
    • device: urządzenie jest połączone z serwerem adb. Pamiętaj, że ten stan nie oznacza, że system Android jest w pełni uruchomiony i działa, ponieważ urządzenie łączy się z adb, gdy system jest jeszcze uruchamiany. Po uruchomieniu jest to normalny stan operacyjny urządzenia.
    • no device: brak podłączonego urządzenia.
  • Opis: jeśli uwzględnisz opcję -l, polecenie devices powie Ci, jakie to urządzenie. Te informacje są przydatne, gdy masz podłączonych kilka urządzeń, ponieważ możesz je od siebie odróżnić.

Poniższy przykład przedstawia polecenie devices i jego dane wyjściowe. Urządzenia są włączone. Pierwsze 2 wiersze na liście to emulatory, a trzeci 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

Emulator nie jest wymieniony

Polecenie adb devices ma sekwencję poleceń, która powoduje, że uruchomione emulatory nie pojawiają się w wyjściu adb devices, mimo że są widoczne na pulpicie. Dzieje się tak, gdy wszystkie te warunki są spełnione:

  • Serwer adb nie działa.
  • Użyj polecenia emulator z opcją -port lub -ports z nieparzystą wartością portu z zakresu 5554–5584.
  • Wybrany przez Ciebie port o nieparzystej liczbie nie jest zajęty, więc połączenie portu może być utworzone na określonym numerze portu. Jeśli port jest zajęty, emulator przełączy się na inny port, który spełnia wymagania opisane w punkcie 2.
  • Po uruchomieniu emulatora uruchom serwer adb.

Aby uniknąć takiej sytuacji, możesz pozwolić emulatorowi na wybór własnych portów i uruchomienie nie więcej niż 16 emulatorów naraz. Innym sposobem jest zawsze uruchamianie serwera adb przed użyciem polecenia emulator, jak pokazano w następujących przykładach.

Przykład 1: w tej sekwencji poleceń polecenie adb devices uruchamia serwer adb, ale lista urządzeń nie pojawia się.

Zatrzymaj serwer adb i wpisz podane niżej polecenia w podanej kolejności. W przypadku nazwy AVD podaj prawidłową nazwę AVD z Twojego systemu. Aby wyświetlić listę nazw AVD, wpisz emulator -list-avds. Polecenie emulator znajduje się 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ż najpierw uruchomiono serwer adb.

Aby zobaczyć emulator w danych wyjściowych adb devices, zatrzymaj serwer adb, a następnie uruchom go ponownie po wydaniu polecenia emulator, ale przed wydaniem polecenia adb devices:

$ 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 Opcje uruchamiania w wierszu poleceń.

Wysyłanie poleceń do konkretnego urządzenia

Jeśli działa kilka urządzeń, musisz określić urządzenie docelowe, gdy wydajesz polecenie adb. Aby określić wartość docelową, wykonaj te czynności:

  1. Aby uzyskać numer seryjny celu, użyj polecenia devices.
  2. Gdy już znasz numer seryjny, użyj opcji -s z poleceniami adb, aby go podać.
    1. Jeśli zamierzasz wydawać dużo 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, pierwszeństwo ma ta pierwsza.-s$ANDROID_SERIAL

W tym przykładzie uzyskuje się listę podłączonych urządzeń, a następnie numer seryjny jednego z nich, aby zainstalować 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 wydasz polecenie bez określenia urządzenia docelowego, a dostępne jest więcej niż 1 urządzenie, adb wyświetli błąd „adb: more than one device/emulator”.

Jeśli masz kilka urządzeń, ale tylko jedno z nich jest emulatorem, użyj opcji -e, aby wysyłać polecenia do emulatora. Jeśli masz kilka urządzeń, ale tylko jedno urządzenie sprzętowe jest podłączone, użyj opcji -d, aby wysyłać polecenia do urządzenia sprzętowego.

Instalowanie aplikacji

Aby zainstalować plik APK na emulatorze lub połączonym urządzeniu, użyj polecenia adb: install.

adb install path_to_apk

Podczas instalowania testowego pliku APK musisz użyć opcji -t z poleceniem install. Więcej informacji znajdziesz w artykule -t.

Aby zainstalować wiele plików APK, użyj polecenia install-multiple. Jest to przydatne, jeśli pobierzesz z Konsoli Play wszystkie pliki APK na konkretne urządzenie i chcesz je zainstalować na emulatorze lub fizycznym urządzeniu.

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

Uwaga: jeśli używasz Android Studio, nie musisz bezpośrednio uruchamiać adb, aby zainstalować aplikację na emulatorze lub urządzeniu. Zamiast tego Android Studio samodzielnie zapakuje i zainstaluje aplikację.

Skonfiguruj przekierowanie portów

Aby skonfigurować dowolne przekierowanie portów, które przekierowuje żądania na określonym porcie hosta na inny port na urządzeniu, użyj polecenia forward. W tym przykładzie konfigurujemy przekierowanie portu hosta 6100 na port urządzenia 7100:

adb forward tcp:6100 tcp:7100

W tym przykładzie konfigurujemy przekierowanie portu hosta 6100 na lokalny:logd:

adb forward tcp:6100 local:logd

Może to być przydatne, jeśli chcesz określić, co jest wysyłane do danego portu na urządzeniu. Wszystkie otrzymane dane zostaną zapisane w demonie dziennikowania systemu i wyświetlone w dziennikach urządzenia.

Kopiowanie plików na urządzenie i z niego

Aby kopiować pliki na urządzenie lub z niego, użyj poleceń pullpush. W przeciwieństwie do polecenia install, które kopiuje tylko plik APK do określonej lokalizacji, polecenia pullpush umożliwiają kopiowanie dowolnych katalogów i plików do dowolnej lokalizacji na urządzeniu.

Aby skopiować plik lub katalog wraz z podkatalogami z urządzenia:

adb pull remote local

Aby skopiować plik lub katalog wraz z podkatalogami na urządzenie, wykonaj te czynności:

adb push local remote

Zastąp localremote ścieżkami do plików docelowych lub katalogu docelowego na komputerze programisty (lokalnie) i na urządzeniu (zdalnie). Przykład:

adb push myfile.txt /sdcard/myfile.txt

Zatrzymaj serwer adb

W niektórych przypadkach konieczne może być zakończenie procesu serwera adb, a następnie jego ponowne uruchomienie. Może się tak zdarzyć, jeśli adb nie reaguje 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.

Wydawanie poleceń adb

Wyślij polecenia adb w wierszu poleceń na komputerze programistycznym lub w skrypcie za pomocą:

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

Jeśli działa tylko 1 emuulator lub jest połączone tylko 1 urządzenie, domyślnie polecenie adb jest wysyłane do tego urządzenia. Jeśli działa kilka emulatorów lub podłączonych jest kilka urządzeń, musisz użyć opcji -d, -e lub -s, aby określić urządzenie docelowe, do którego 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 urządzeniu za pomocą adb lub uruchomić interaktywny powłokę. Aby wydać pojedyncze polecenie, użyj polecenia shell w ten sposób:

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

Aby uruchomić interaktywny powłokę na urządzeniu, użyj polecenia shell w takiej postaci:

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

Aby wyjść z interaktywnej powłoki, naciśnij Control+D lub wpisz exit.

Android udostępnia większość zwykłych narzędzi wiersza poleceń Unix. Aby wyświetlić listę dostępnych narzędzi, uruchom to polecenie:

adb shell ls /system/bin

Większość poleceń ma pomoc dostępną za pomocą argumentu --help. Wiele poleceń powłoki jest udostępnianych przez toybox. Ogólne informacje dotyczące wszystkich poleceń toybox znajdziesz na stronie toybox --help.

W narzędziach platformy Android 23 i nowszych argumenty są obsługiwane w ten sam sposób, w jaki robi to polecenie ssh(1).adb Ta zmiana rozwiązała wiele problemów z wstrzyknięciem poleceń i umożliwia bezpieczne wykonywanie poleceń zawierających metaznaki powłoki, takich jak adb install Let\'sGo.apk. Ta zmiana oznacza, że zmieniła się też interpretacja wszystkich poleceń zawierających metaznaki powłoki.

Na przykład adb shell setprop key 'two words' jest teraz błędem, ponieważ cudzysłówy są połykane przez lokalną powłokę, a urządzenie widzi adb shell setprop key two words. Aby polecenie zadziałało, użyj cudzysłowów dwukrotnie: raz dla powłoki lokalnej i raz dla powłoki zdalnej, tak jak w przypadku polecenia ssh(1). Na przykład adb shell setprop key "'two words'" działa, ponieważ powłoka lokalna przyjmuje zewnętrzny poziom cudzysłowów, a urządzenie nadal widzi wewnętrzny poziom cudzysłowów: setprop key 'two words'. Użycie znaku ucieczki jest również opcją, ale zwykle łatwiej jest użyć dwukrotnego cudzysłowu.

Zobacz też narzędzia wiersza poleceń Logcat, które jest przydatne do monitorowania dziennika systemowego.

Menedżer aktywności połączeń

W powłoce adb możesz wydawać polecenia za pomocą narzędzia menedżera aktywności (am), aby wykonywać różne działania systemowe, takie jak uruchamianie aktywności, przymusowe zatrzymywanie procesu, rozgłaszanie intencji czy modyfikowanie właściwości ekranu urządzenia.

W powłoce składnia am:

am command

Możesz też wydać polecenie menedżera aktywności bezpośrednio z poziomu adb, bez uruchamiania powłoki zdalnej. 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 specyfikację argumentów intencji.

Dostępne opcje:

  • -D: włącz debugowanie.
  • -W: poczekaj, aż uruchomienie się zakończy.
  • --start-profiler file: uruchom profilowanie i wyślij wyniki do file.
  • -P file: podobnie jak w przypadku --start-profiler, ale profilowanie zostaje wstrzymane, gdy aplikacja przejdzie w stan bezczynności.
  • -R count: powtórz count razy uruchamianie aktywności. Przed każdym powtórzeniem zakończona zostanie główna aktywność.
  • -S: przed rozpoczęciem aktywności wymuś zatrzymanie aplikacji docelowej.
  • --opengl-trace: włączanie śledzenia funkcji OpenGL.
  • --user user_id | current: określ, z poziomu którego konta użytkownika ma być wykonywane polecenie. Jeśli nie określisz konta, polecenie zostanie wykonane z poziomu bieżącego użytkownika.
startservice [options] intent Uruchom Service określony przez intent.

Zobacz specyfikację argumentów intencji.

Dostępne opcje:

  • --user user_id | current: określ, za którego użytkownika ma być wykonywane zadanie. Jeśli nie określisz tego parametru, polecenie zostanie wykonane w imieniu bieżącego użytkownika.
force-stop package Wymuś zatrzymanie wszystkich procesów powiązanych z aplikacją package.
kill [options] package Zakończ wszystkie procesy powiązane z package. To polecenie zabija tylko te procesy, które można bezpiecznie zabić i które nie wpłyną na działanie aplikacji.

Dostępne opcje:

  • --user user_id | all | current: określ, procesy którego użytkownika mają zostać zakończone. Jeśli nie określono, zabij procesy wszystkich użytkowników.
kill-all Zakończ wszystkie procesy w tle.
broadcast [options] intent Przesyłanie intencji.

Zobacz specyfikację argumentów intencji.

Dostępne opcje:

  • [--user user_id | all | current]: określ, do którego użytkownika ma być wysłana wiadomość. Jeśli nie określisz inaczej, wyślij do wszystkich użytkowników.
instrument [options] component Rozpocznij monitorowanie za pomocą instancji Instrumentation. Docelowy element component jest zwykle elementem formularza test_package/runner_class.

Dostępne opcje:

  • -r: wydrukowanie nieprzetworzonych wyników (w przeciwnym razie dekodowanie odbywa się za pomocą funkcji report_key_streamresult). Użyj tej opcji z opcją [-e perf true], aby wygenerować nieprzetworzone dane wyjściowe na potrzeby pomiarów wydajności.
  • -e name value: ustaw argument name na value. W przypadku testów uruchamianych przez programy testowe zwykły format to -e testrunner_flag value[,value...].
  • -p file: zapisz dane profilowania w pliku file.
  • -w: przed powrotem zaczekaj na zakończenie pomiarów. Wymagane w przypadku narzędzi do testowania.
  • --no-window-animation: wyłącz animacje okna podczas uruchamiania.
  • --user user_id | current: określ, w których usługach użytkownika ma działać narzędzie do pomiarów. Jeśli nie jest określony, uruchamia się w imieniu bieżącego użytkownika.
profile start process file Uruchom profilowanie na process i zapisz wyniki w pliku file.
profile stop process Zatrzymanie profilowania na process.
dumpheap [options] process file Wyrzuć stos process i zapisz do file.

Dostępne opcje:

  • --user [user_id | current]: podając nazwę procesu, określ użytkownika, którego proces ma zostać zdumpowany. Jeśli nie określisz użytkownika, zostanie użyty bieżący użytkownik.
  • -b [| png | jpg | webp]: zrzut bitmap z pamięci graficznej (poziom API 35 lub wyższy). Opcjonalnie określ format pliku (domyślnie PNG).
  • -n: zrzut natywnych stosów zamiast zarządzanych stosów.
set-debug-app [options] package Ustaw aplikację package do debugowania.

Dostępne opcje:

  • -w: czekaj na uruchomienie aplikacji przez debuger.
  • --persistent: zachowanie tej wartości.
clear-debug-app Wyczyść pakiet wcześniej ustawiony do debugowania za pomocą set-debug-app.
monitor [options] Rozpocznij monitorowanie awarii i błędów ANR.

Dostępne opcje:

  • --gdb: uruchom gdbserv w danym porcie w momencie wystąpienia awarii lub błędu ANR.
screen-compat {on | off} package Sterowanie trybem zgodności z ekranem w package.
display-size [reset | widthxheight] Zastąpić rozmiar interfejsu urządzenia. To polecenie jest przydatne do testowania aplikacji na różnych rozmiarach ekranu. Na przykład możesz symulować małą rozdzielczość ekranu na urządzeniu z dużym ekranem i na odwrót.

Przykład:
am display-size 1280x800

display-density dpi Przesłonięcie układu interfejsu. To polecenie jest przydatne do testowania aplikacji na różnych ekranach o różnej gęstości pikseli. Naśladuje ono środowisko ekranu o wysokiej gęstości pikseli, używając ekranu o niskiej gęstości pikseli, i odwrotnie.

Przykład:
am display-density 480

to-uri intent Wydrukuj specyfikację danego zamiaru jako identyfikator URI.

Zobacz specyfikację argumentów intencji.

to-intent-uri intent Wydrukuj daną 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:

Zadzwoń do menedżera pakietów (pm)

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

W powłoce składnia pm jest następująca:

pm command

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

adb shell pm uninstall com.example.MyApp

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

Polecenie Opis
list packages [options] filter Drukowanie wszystkich pakietów lub opcjonalnie tylko tych, których nazwa zawiera tekst w filter.

Opcje:

  • -f: wyświetl powiązany plik.
  • -d: filtr, który pozwala wyświetlić tylko wyłączone pakiety.
  • -e: filtr, który pozwala wyświetlać tylko włączone pakiety.
  • -s: filtruj, aby wyświetlać tylko pakiety systemowe.
  • -3: filtr, który pozwala wyświetlać tylko pakiety innych firm.
  • -i: zapoznaj się z instalatorem pakietów.
  • -u: uwzględnij odinstalowane pakiety.
  • --user user_id: przestrzeń użytkownika, której dotyczy zapytanie.
list permission-groups Wydrukuj wszystkie znane grupy uprawnień.
list permissions [options] group Wydrukuj wszystkie znane uprawnienia lub opcjonalnie tylko te z group.

Opcje:

  • -g: porządkowanie według grupy.
  • -f: wydrukuj wszystkie informacje.
  • -s: krótkie streszczenie.
  • -d: wyświetlaj tylko uprawnienia niebezpieczne.
  • -u: wyświetlaj tylko uprawnienia, które widzą użytkownicy.
list instrumentation [options] Wyświetl listę wszystkich testowych pakietów.

Opcje:

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

Opcje:

  • -r: ponowna instalacja istniejącej aplikacji z zachowaniem danych.
  • -t: zezwalanie na instalowanie testowych plików APK. Gradle generuje testowy plik APK, gdy aplikacja została tylko uruchomiona lub debugowana albo użyto w Android Studio polecenia Utwórz > Utwórz plik APK. Jeśli plik APK został skompilowany za pomocą pakietu SDK w wersji dla deweloperów, musisz dołączyć opcję -t do polecenia install, jeśli instalujesz testowy plik APK.
  • -i installer_package_name: określ nazwę pakietu instalacyjnego.
  • --install-location location: ustaw lokalizację instalacji, używając jednej z tych wartości:
    • 0: użyj domyślnej lokalizacji instalacji.
    • 1: zainstaluj na wewnętrznej pamięci urządzenia.
    • 2: zainstaluj na zewnętrznym nośniku.
  • -f: zainstaluj pakiet w pamięci wewnętrznej systemu.
  • -d: zezwalaj na obniżenie wersji kodu.
  • -g: przyznaj wszystkie uprawnienia wymienione w pliku manifestu aplikacji.
  • --fastdeploy: szybkie aktualizowanie zainstalowanego pakietu przez aktualizację tylko tych części pliku APK, które uległy zmianie.
  • --incremental: instaluje wystarczającą ilość pliku APK, aby można było uruchomić aplikację, a pozostałe dane są przesyłane strumieniowo w tle. Aby korzystać z tej funkcji, musisz podpisać plik APK, utworzyć plik z schematem podpisu 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 użycie funkcji przez adb lub powoduje jej niepowodzenie, jeśli nie jest obsługiwana. W tym drugim przypadku wyświetla się szczegółowy komunikat o przyczynie niepowodzenia. Dodaj opcję --wait, aby zaczekać, aż plik APK zostanie w pełni zainstalowany, zanim przyznasz do niego dostęp.

    --no-incremental uniemożliwia 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, dla którego usunięto pakiet.
  • --versionCode version_code: odinstaluj tylko aplikację o danym kodzie wersji.
clear package usunąć wszystkie dane powiązane z pakietem.
enable package_or_component Włącz dany pakiet lub komponent (oznaczony jako „package/class”).
disable package_or_component Wyłączanie określonego pakietu lub komponentu (oznaczonego jako „package/class”).
disable-user [options] package_or_component

Opcje:

  • --user user_id: użytkownik, którego chcesz wyłączyć.
grant package_name permission Przyznawanie uprawnień aplikacji. Na urządzeniach z Androidem 6.0 (poziom interfejsu API 23) lub nowszym uprawnienia mogą być dowolne, o ile są zadeklarowane w pliku manifestu 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 Odwołanie uprawnienia aplikacji. Na urządzeniach z Androidem 6.0 (poziom interfejsu API 23) lub nowszym uprawnienie może być dowolnym uprawnieniem zadeklarowanym w pliku manifestu 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: system sam wybierze najlepszą lokalizację.
  • 1: Wewnętrzne: zainstaluj na wewnętrznej pamięci urządzenia.
  • 2: zewnętrzny: zainstaluj na zewnętrznym nośniku.

Uwaga: ta opcja jest przeznaczona tylko do debugowania. Może to spowodować nieprawidłowe działanie aplikacji i 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 na wewnętrznej pamięci urządzenia.
  • 2 [external]: instalacja na nośniku zewnętrznym
set-permission-enforced permission [true | false] Określ, czy dane uprawnienie powinno być wymuszane.
trim-caches desired_free_space Obcinanie plików z pamięci podręcznej, aby uzyskać określony wolny obszar.
create-user user_name Utwórz nowego użytkownika z danym user_name, wydrukuj nowy identyfikator użytkownika.
remove-user user_id usunąć użytkownika o danym identyfikatorze user_id, usuwając wszystkie dane powiązane z tym użytkownikiem;
get-max-users Drukowanie maksymalnej liczby użytkowników obsługiwanych przez urządzenie.
get-app-links [options] [package]

Wyświetl stan weryfikacji domeny dla określonego pakietu package lub dla wszystkich pakietów, jeśli nie wybrano żadnego. Kody stanów są zdefiniowane w ten sposób:

  • none: w tej domenie nie zostało zarejestrowane nic
  • verified: domena została zweryfikowana
  • approved: zatwierdzone siłą, zwykle przez powłokę
  • denied: odmowa dostępu, zwykle przez powłokę
  • migrated: zachowana weryfikacja z poprzedniej odpowiedzi
  • restored: zachowana weryfikacja z przywracania danych użytkownika
  • legacy_failure: odrzucone przez starszą weryfikację z nieznanego powodu
  • system_configured: automatycznie zatwierdzone przez konfigurację urządzenia
  • >= 1024: niestandardowy kod błędu, który jest specyficzny dla weryfikatora urządzenia

Dostępne opcje:

  • --user user_id: uwzględnij wybory użytkownika. Uwzględnij wszystkie domeny, a nie tylko te, które zostały zweryfikowane automatycznie.
reset-app-links [options] [package]

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

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

Dostępne opcje:

  • --user user_id: uwzględnij wybory użytkownika. Uwzględnij wszystkie domeny, a nie tylko te, które zostały zweryfikowane automatycznie.
verify-app-links [--re-verify] [package]

Przesyłanie prośby o weryfikację określonego package lub wszystkich pakietów, jeśli nie wybrano żadnego. Jest wysyłany tylko wtedy, gdy pakiet nie zarejestrował wcześniej odpowiedzi.

  • --re-verify: wysyłaj nawet wtedy, gdy pakiet zawiera odpowiedź
set-app-links [--package package] state domains

Ręczne ustawianie stanu domeny dla pakietu. Aby to zadziałało, domena musi być zadeklarowana przez pakiet jako autoWeryfikacja. To polecenie nie zgłosi błędu w przypadku domen, których nie udało się zastosować.

  • --package package: pakiet do ustawienia lub „all” (wszystkie), aby ustawić wszystkie pakiety
  • state: kod do ustawienia domen. Prawidłowe wartości to:
    • STATE_NO_RESPONSE (0): zresetuj tak, jakby nigdy nie została zarejestrowana żadna odpowiedź.
    • STATE_SUCCESS (1): traktować domenę jako zweryfikowaną przez agenta weryfikującego domenę. Pamiętaj, że agent weryfikacji domeny może zmienić to ustawienie.
    • STATE_APPROVED (2): traktować domenę jako zawsze zatwierdzoną, uniemożliwiając agentowi weryfikacji domeny jej zmianę.
    • STATE_DENIED (3): traktować domenę jako zawsze odrzuconą, uniemożliwiając agentowi weryfikującemu domenę zmianę jej statusu.
  • domains: oddzielona spacjami lista domen, które mają zostać zmienione, lub „all” (wszystkie), aby zmienić wszystkie domeny.
set-app-links-user-selection --user user_id [--package package] enabled domains

Ręczne ustawianie stanu wyboru użytkownika-gospodarza w przypadku pakietu. Aby to działało, pakiet musi zadeklarować domenę. To polecenie nie zgłosi błędu w przypadku domen, których nie udało się zastosować.

  • --user user_id: użytkownik, dla którego mają zostać zmienione opcje
  • --package package: pakiet do ustawienia
  • enabled: czy zatwierdzić domenę
  • domains: oddzielona spacjami lista domen, które mają zostać zmienione, lub „all” (wszystkie) w celu zmiany wszystkich domen
set-app-links-user-selection --user user_id [--package package] enabled domains

Ręczne ustawianie stanu wyboru użytkownika-gospodarza w przypadku pakietu. Aby to działało, pakiet musi zadeklarować domenę. To polecenie nie zgłosi błędu w przypadku domen, których nie udało się zastosować.

  • --user user_id: użytkownik, dla którego mają zostać zmienione opcje
  • --package package: pakiet do ustawienia
  • enabled: czy zatwierdzić domenę
  • domains: oddzielona spacjami lista domen, które mają zostać zmienione, lub „all” (wszystkie) w celu zmiany wszystkich domen
set-app-links-allowed --user user_id [--package package] allowed

Przełącz ustawienie obsługi linków z automatyczną weryfikacją w pakiecie.

  • --user user_id: użytkownik, dla którego mają zostać zmienione opcje
  • --package package: pakiet do ustawienia lub „all” (wszystkie), aby ustawić wszystkie pakiety; jeśli nie zostanie określony żaden pakiet, ustawienia zostaną zresetowane
  • allowed: wartość true, aby umożliwić pakietowi otwieranie linków zweryfikowanych automatycznie, wartość false, aby wyłączyć tę funkcję
get-app-link-owners --user user_id [--package package] domains

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

  • --user user_id: użytkownik, którego dotyczy zapytanie
  • --package package: opcjonalnie drukowanie również w przypadku wszystkich domen internetowych deklarowanych przez pakiet lub „all” (wszystkie) w celu wydrukowania wszystkich pakietów.
  • domains: lista domen oddzielonych spacjami, których 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 narzędziu Device Policy Manager (dpm). Za pomocą tego narzędzia możesz kontrolować aktywną aplikację administratora lub zmienić dane stanu zasad na urządzeniu.

W powłoce składnia dpm:

dpm command

Możesz też wydać polecenie menedżera zasad urządzenia bezpośrednio z poziomu adb, bez uruchamiania 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 component jako aktywnego administratora.

Dostępne opcje:

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

Dostępne opcje:

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

Dostępne opcje:

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

Dostępne opcje:

  • --user user_id: określ użytkownika docelowego. Możesz też podać wartość--user current, aby wybrać bieżącego użytkownika.
clear-freeze-period-record Wyczyść z urządzenia rekordy wcześniej ustawionych okresów blokady dla bezprzewodowych aktualizacji systemu. Jest to przydatne, aby uniknąć ograniczeń harmonogramu urządzenia podczas tworzenia aplikacji, które zarządzają okresami zamrożenia. Zapoznaj się z artykułem Zarządzanie aktualizacjami systemu.

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

force-network-logs Wymuś przygotowanie przez system wszystkich dotychczasowych dzienników sieci do pobrania przez DPC. Jeśli są dostępne dzienniki połączeń lub DNS, DPC otrzymuje wywołanie zwrotneonNetworkLogsAvailable(). Zapoznaj się z artykułem Rejestrowanie aktywności sieciowej.

To polecenie jest objęte ograniczeniem częstotliwości. Obsługiwane na urządzeniach z Androidem 9.0 (poziom interfejsu API 28) lub nowszym.

force-security-logs wymusić, aby system udostępnił wszystkie istniejące dzienniki zabezpieczeń do DPC; Jeśli są dostępne dzienniki, DPC otrzyma wywołanie zwrotne onSecurityLogsAvailable(). Zobacz Rejestrowanie aktywności na urządzeniach firmowych.

To polecenie jest objęte ograniczeniem częstotliwości. Obsługiwane na urządzeniach z Androidem 9.0 (poziom interfejsu API 28) lub nowszym.

Zrób zrzut ekranu

Komenda screencap to narzędzie w powłoce do robienia zrzutów ekranu z urządzenia.

W powłoce składnia screencap jest następująca:

screencap filename

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

adb shell screencap /sdcard/screen.png

Oto przykład sesji robienia zrzutów ekranu, w której do zrobienia zrzutu ekranu użyto powłoki adb, a do pobrania pliku z urządzenia – polecenia pull:

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

Nagraj film

Polecenie screenrecord to narzędzie powłoki do nagrywania ekranu urządzeń z Androidem w wersji 4.4 (poziom interfejsu API 19) lub nowszej. Narzędzie rejestruje aktywność na ekranie w pliku MPEG-4. Możesz go użyć do tworzenia filmów promocyjnych lub szkoleniowych albo do debugowania i testowania.

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

screenrecord [options] filename

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

adb shell screenrecord /sdcard/demo.mp4

Zatrzymaj nagrywanie ekranu, naciskając Control+C. W przeciwnym razie nagranie zakończy się automatycznie po 3 minutach lub po upływie limitu czasu ustawionego przez --time-limit.

Aby rozpocząć nagrywanie ekranu urządzenia, uruchom polecenie screenrecord, aby nagrać film. Następnie uruchom polecenie pull, aby pobrać film z urządzenia na komputer hosta. Oto przykład sesji nagrywania:

$ 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 szybkości transmisji bitów, zachowując współczynnik proporcji ekranu urządzenia. Narzędzie domyślnie nagrywa w domyślnej rozdzielczości i orientacji ekranu. Maksymalna długość nagrania to 3 minuty.

Ograniczenia narzędzia screenrecord:

  • Dźwięk nie jest nagrywany wraz z plikiem wideo.
  • Nagrywanie filmów jest niedostępne na urządzeniach z Wear OS.
  • Niektóre urządzenia mogą nie być w stanie nagrywać w natywnej rozdzielczości wyświetlacza. Jeśli masz problemy z nagrywaniem ekranu, spróbuj użyć niższej rozdzielczości ekranu.
  • Obrót ekranu podczas nagrywania nie jest obsługiwany. Jeśli ekran obraca się podczas nagrywania, część ekranu może być przycięta na nagraniu.

Tabela 4. screenrecord opcji

Opcje Opis
--help Wyświetlanie składni i opcji poleceń
--size widthxheight Ustaw rozmiar filmu: 1280x720. Wartość domyślna to natywnych rozdzielczość ekranu urządzenia (jeśli jest obsługiwana) lub 1280 x 720. Aby uzyskać najlepsze wyniki, użyj rozmiaru obsługiwanego przez koder kodowania zaawansowanego wideo (AVC) na urządzeniu.
--bit-rate rate Ustaw szybkość transmisji bitów wideo w megabitach na sekundę. Wartość domyślna to 20 Mbit/s. Aby poprawić jakość filmu, możesz zwiększyć szybkość transmisji bitów, ale spowoduje to zwiększenie rozmiaru pliku filmu. W tym przykładzie ustawiamy szybkość transmisji danych na 6 Mbit/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óć wyjście o 90 stopni. Ta funkcja jest eksperymentalna.
--verbose Wyświetlanie informacji z dziennika na ekranie wiersza poleceń. Jeśli nie wybierzesz tej opcji, podczas działania narzędzie nie wyświetla żadnych informacji.

Odczytywanie profili ART w aplikacjach

Od Androida 7.0 (poziom interfejsu API 24) środowisko uruchomieniowe Androida (ART) zbiera profile wykonywania zainstalowanych aplikacji, które są używane do optymalizacji ich wydajności. Przejrzyj 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żna pobrać tylko wtedy, gdy masz dostęp root do systemu plików, na przykład na emulatorze.

Aby wygenerować informacje z profilu w postaci tekstu, użyj tego polecenia:

adb shell cmd package dump-profiles package

Aby pobrać wygenerowany plik, użyj:

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

Resetowanie urządzeń testowych

Jeśli testujesz aplikację na wielu urządzeniach testowych, warto zresetować urządzenie między testami, aby na przykład usunąć dane użytkownika i zresetować środowisko testowe. Urządzenie testowe z Androidem 10 (poziom interfejsu API 29) lub nowszym możesz zresetować do ustawień fabrycznych za pomocą polecenia powłoki testharness adb, jak pokazano poniżej:

adb shell cmd testharness enable

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

Aby ułatwić i ubezpieczyć dalsze testowanie aplikacji, przy użyciu opcji testharness do przywracania urządzenia zmieniamy też te ustawienia urządzenia:

  • Urządzenie konfiguruje niektóre ustawienia systemowe, aby nie pojawiały się początkowe kreatory konfiguracji urządzenia. 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ć domyślne ustawienia polecenia testharness i dostosować się do nich, użyj polecenia ActivityManager.isRunningInUserTestHarness().

sqlite

sqlite3 uruchamia program wiersza poleceń sqlite do sprawdzania baz danych SQLite. Zawiera ona polecenia takie jak .dump, które służy do drukowania zawartości tabeli, oraz .schema, które służy do drukowania instrukcji SQL CREATE w przypadku 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 jest możliwy tylko wtedy, gdy masz dostęp roota do systemu plików, np. na emulatorze.

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

adb USB backend

Serwer adb może współpracować z kompletem USB za pomocą dwóch backendów. Może on używać natywnego backendu systemu operacyjnego (Windows, Linux lub macOS) lub backendu libusb. Niektóre funkcje, takie jak attach, detach i wykrywanie szybkości USB, są dostępne tylko w przypadku korzystania z back-endu libusb.

Możesz wybrać backend za pomocą zmiennej środowiskowej ADB_LIBUSB. Jeśli nie zostanie ustawiony, adb użyje domyślnego backendu. Domyślne zachowanie zależy od systemu operacyjnego. Od wersji ADB 34 domyślnie używany jest backend liubusb we wszystkich systemach operacyjnych, z wyjątkiem systemu Windows, w którym domyślnie używany jest natywny backend. Jeśli parametr ADB_LIBUSB jest ustawiony, określa, czy ma być używany natywny backend czy libusb. Więcej informacji o zmiennych środowiskowych adb znajdziesz w instrukcji obsługi adb.

adb mDNS backend

ADB może używać protokołu multicast DNS do automatycznego łączenia serwera i urządzeń. Serwer ADB jest dostarczany z 2 backendami: Bonjour (mdnsResponder firmy Apple) i Openscreen.

Backend Bonjour wymaga uruchomienia demona na maszynie hosta. W systemie macOS wbudowany demon Apple jest zawsze uruchomiony, ale w systemach Windows i Linux użytkownik musi upewnić się, że demon mdnsd jest uruchomiony. Jeśli polecenie adb mdns check zwróci błąd, prawdopodobnie ADB używa backendu Bonjour, ale nie działa demon Bonjour.

Backend Openscreen nie wymaga demona na maszynie. Obsługa backendu Openscreen na komputerach Mac jest dostępna od wersji ADB 35. Systemy Windows i Linux są obsługiwane od wersji ADB 34.

Domyślnie ADB używa backendu Bonjour. To zachowanie można zmienić za pomocą zmiennej środowiskowej ADB_MDNS_OPENSCREEN (ustaw ją na 1 lub 0). Więcej informacji znajdziesz w podręczniku ADB.

tryb burst adb (od wersji ADB 36.0.0),

Tryb serii to funkcja eksperymentalna, która umożliwia ADB ciągłe wysyłanie pakietów do urządzenia, nawet jeśli nie odpowiedziało ono na poprzedni pakiet. To znacznie zwiększa przepustowość ADB podczas przesyłania dużych plików, a także zmniejsza opóźnienia podczas debugowania.

Tryb seryjny jest domyślnie wyłączony. Aby włączyć tę funkcję, wykonaj jedną z tych czynności:

  • Ustaw zmienną środowiskową ADB_DELAYED_ACK na 1.
  • W Android Studio otwórz ustawienia debugera na stronie Plik (lub Android Studio na komputerze Mac) > Ustawienia > Kompilacja, wykonanie, wdrożenie > Debuger i ustaw Tryb burst serwera ADB na Włączony.