Android Debug Bridge (adb
) to uniwersalne narzędzie wiersza poleceń, które umożliwia komunikację z
urządzenia. Polecenie adb
ułatwia wykonywanie różnych czynności na urządzeniach, takich jak instalowanie
debugowania aplikacji. adb
zapewnia dostęp do powłoki Unix, której można używać do uruchamiania różnych
poleceń na urządzeniu. Jest to program klient-serwer, który składa się z 3 elementów:
- Klient, który wysyła polecenia. Klient działa na komputerze, na którym tworzysz aplikacje. Dostępne opcje
aby wywołać klienta z terminalu wiersza poleceń, uruchamiając polecenie
adb
. - Demon (adbd), który uruchamia polecenia na urządzeniu. Demon działa jako tło na każdym z urządzeń.
- Serwer zarządzający komunikacją między klientem a demonem. Serwer działa w tle na komputerze, na którym tworzysz aplikacje.
adb
wchodzi w skład pakietu narzędzi platformy Android SDK. Pobierz to
z Menedżerem SDK, który instaluje pakiet
go na stronie android_sdk/platform-tools/
. Korzystanie z samodzielnego pakietu SDK do Androida
pakietu narzędzi Platform Tools, pobierz go tutaj.
Informacje o łączeniu urządzenia do używania przez adb
, w tym o korzystaniu z połączenia
do rozwiązywania typowych problemów przez Asystenta, patrz sekcja
Uruchamianie aplikacji na urządzeniu.
Jak działa narzędzie adb
Po uruchomieniu klienta adb
klient najpierw sprawdza, czy
Proces serwera adb
jest już uruchomiony. Jeśli go nie ma, rozpocznie się proces serwera.
Podczas uruchamiania serwer tworzy powiązanie z lokalnym portem TCP 5037 i nasłuchuje poleceń wysyłanych z
adb
klientów.
Uwaga: wszystkie klienty adb
używają do komunikacji portu 5037
z serwerem adb
.
Serwer konfiguruje połączenia ze wszystkimi uruchomionymi urządzeniami.
Lokalizuje emulatory, skanując porty o nieparzystych numerach w zakresie
Od 5555 do 5585, czyli zakres używany przez pierwszych 16 emulatorów. Gdzie serwer znajduje adb
demona (adbd), konfiguruje połączenie z tym portem.
Każdy emulator używa pary sekwencyjnych portów – portu o parzystym numerze
połączeń konsoli i port z nieparzystymi numerami na potrzeby połączeń adb
. Na przykład:
Emulator 1, konsola: 5554
Emulator 1, adb
: 5555
Emulator 2, konsola: 5556
Emulator 2, adb
: 5557
i tak dalej.
Jak widać, emulator podłączony do adb
przez port 5555 jest taki sam jak emulator.
której konsola nasłuchuje na porcie 5554.
Gdy serwer skonfiguruje połączenia ze wszystkimi urządzeniami, możesz używać poleceń adb
, aby:
dostęp do tych urządzeń. Ponieważ serwer zarządza połączeniami z urządzeniami i obsługuje te funkcje
z wielu klientów adb
, możesz sterować dowolnym urządzeniem z dowolnego klienta lub
ze scenariusza.
Włącz debugowanie adb na urządzeniu
Aby używać narzędzia adb na urządzeniu podłączonym przez USB, musisz włączyć Debugowanie USB w ustawieniach systemowych urządzenia w sekcji Opcje programisty. Na Androidzie 4.2 (poziom interfejsu API 17) i nowszych wersjach jest dostępny ekran Opcje programisty. jest domyślnie ukryty. Aby był widoczny, włącz Opcje programisty.
Możesz teraz połączyć urządzenie przez USB. Możesz sprawdzić, czy Twoje urządzenie
połączono, wykonując adb devices
z
android_sdk/platform-tools/
. Jeśli masz połączenie,
wyświetli się nazwa urządzenia.
Uwaga: gdy podłączysz urządzenie z Androidem 4.2.2 (API na poziomie 17) lub wyższym, system wyświetla okno z pytaniem, czy zaakceptować klucz RSA, który umożliwia na tym komputerze. Ten mechanizm chroni urządzenia użytkowników, ponieważ zapewnia że debugowanie USB i inne polecenia adb nie mogą być wykonywane, chyba że odblokujesz i potwierdź to okno.
Więcej informacji o łączeniu z urządzeniem przez USB znajdziesz w artykule Uruchamianie aplikacji na urządzeniu
Połącz się z urządzeniem przez Wi-Fi
Uwaga: instrukcje poniżej nie dotyczą urządzeń Wear z Android 11 (poziom API 30). Zobacz przewodnik debugowania aplikacji na Wear OS – znajdziesz więcej informacji.
Obsługa bezprzewodowego wdrażania i debugowania aplikacji na Androida 11 (poziom interfejsu API 30) i nowszych stacji roboczej za pomocą narzędzia Android Debug Bridge (adb). Możesz na przykład wdrożyć kod do debugowania na wiele urządzeń zdalnych bez konieczności fizycznego USB. Dzięki temu nie trzeba rozwiązywać typowych problemów z połączeniem USB, takich jak sterowniki instalacji.
Zanim zaczniesz korzystać z debugowania bezprzewodowego, wykonaj te czynności:
-
Upewnij się, że Twoja stacja robocza i urządzenie są połączone z tą samą siecią bezprzewodową.
-
Upewnij się, że na telefonie lub Androidzie działa Android 11 (poziom interfejsu API 30) lub nowszy. w wersji 13 (poziom API 33) lub nowszej w przypadku telewizora i Wear OS; Więcej informacji: Czek i Zaktualizuj Wersja Androida.
-
Jeśli używasz IDE, upewnij się, że masz zainstalowaną najnowszą wersję Android Studio. Możesz to pobrać tutaj.
-
Na swojej stacji roboczej zaktualizuj aplikację Narzędzia platformy SDK
Aby korzystać z debugowania bezprzewodowego, musisz sparować urządzenie ze stacją roboczą za pomocą kodu QR lub kod parowania. Stacja robocza i urządzenie muszą być połączone z tą samą siecią bezprzewodową. Do połączyć się z urządzeniem, wykonaj te czynności:
-
Włączanie opcji programisty na swoim urządzeniu.
-
Otwórz Android Studio i wybierz z biegu opcję Paruj urządzenia przez Wi-Fi. w menu konfiguracji.
Rysunek 1. Menu uruchamiania konfiguracji.Pojawi się okno Paruj urządzenia przez Wi-Fi, tak jak na ilustracji 2.
Rysunek 2. Wyskakujące okienko, w którym możesz sparować urządzenia za pomocą kodu QR lub parowania w kodzie. -
Na urządzeniu kliknij Debugowanie bezprzewodowe i sparuj urządzenie:
Rysunek 3. Zrzut ekranu pokazujący ustawienie Debugowanie bezprzewodowe włączone telefon Google Pixel.-
Aby sparować urządzenie przy użyciu kodu QR, wybierz Sparuj urządzenie z kodem QR i zeskanuj Kod QR uzyskany z wyskakującego okienka Paruj urządzenia przez Wi-Fi przedstawionego na ilustracji 2.
-
Aby sparować urządzenie przy użyciu kodu parowania, wybierz Sparuj urządzenie za pomocą kodu parowania wyskakujące okienko Sparuj urządzenia przez Wi-Fi. Na urządzeniu wybierz Sparuj za pomocą kodu parowania i zanotuj podany 6-cyfrowy kod. Gdy urządzenie pojawi się na Sparuj urządzenia przez Wi-Fi, wybierz Sparuj i wpisz 6-cyfrowy kod wyświetlany na urządzeniu.
Rysunek 4. Przykład wpisania 6-cyfrowego kodu.
-
-
Po sparowaniu urządzenia możesz spróbować wdrożyć na nim aplikację.
Aby sparować inne urządzenie lub zapomnieć obecne urządzenie na stacji roboczej, przejdź do Debugowanie bezprzewodowe na urządzeniu. Kliknij nazwę stacji roboczej w sekcji Sparowano urządzeń i wybierz Zapomnij.
-
Jeśli chcesz szybko włączyć lub wyłączyć debugowanie bezprzewodowe, możesz użyć Kafelki szybkich ustawień dla programistów Debugowanie bezprzewodowe – w Opcjach programisty > Programista Szybkich ustawień .
Rysunek 5. Ustawienie kafelki Szybkich ustawień dla programistów; umożliwia szybkie włączanie i wyłączanie debugowania bezprzewodowego.
Połączenie Wi-Fi za pomocą wiersza poleceń
Aby połączyć się z urządzeniem za pomocą wiersza poleceń bez Android Studio, wykonaj wykonaj te czynności:
-
Włącz na urządzeniu opcje programisty w sposób opisany wcześniej.
-
Włącz na urządzeniu Debugowanie bezprzewodowe w sposób opisany wcześniej.
-
Na swojej stacji roboczej otwórz okno terminala i przejdź do
android_sdk/platform-tools
-
Aby znaleźć swój adres IP, numer portu i kod parowania, wybierz Sparuj urządzenie z kodu parowania. Zwróć uwagę na adres IP, numer portu i kod parowania wyświetlone na urządzenia.
-
Na terminalu stacji roboczej uruchom
adb pair ipaddr:port
. Użyj adresu IP i numeru portu powyżej. -
Gdy pojawi się prośba, wpisz kod parowania, jak pokazano poniżej.
Rysunek 6. Wyświetla się komunikat, że urządzenie zostało prawidłowo sparowano.
Rozwiązywanie problemów z połączeniem bezprzewodowym
Jeśli masz problemy z bezprzewodowym połączeniem się z urządzeniem, wypróbuj te rozwiązania: sposoby rozwiązywania problemów.
Sprawdź, czy Twoja stacja robocza i urządzenie spełniają wymagania wstępne
Sprawdź, czy stacja robocza i urządzenie spełniają wymagania wstępne wymienione w od początku tej sekcji.
Sprawdź, czy nie wystąpiły inne znane problemy
Poniżej znajdziesz listę aktualnych znanych problemów z debugowaniem bezprzewodowym (z programem adb lub Android) Studio), i sposób rozwiązania tych problemów:
-
Wi-Fi się nie łączy: bezpieczne sieci Wi-Fi, takie jak firmowe sieci Wi-Fi, może blokować połączenia p2p i uniemożliwiać łączenie się przez Wi-Fi. Spróbuj połączyć się za pomocą kabla lub innej (niefirmowej) sieci Wi-Fi. Połączenie bezprzewodowe przez
adb connect ip:port
przez tcp/ip (po pierwszym połączeniu USB) to inna opcja, w przypadku użycia sieci innej niż korporacyjna. -
adb
przez Wi-Fi czasami wyłącza się automatycznie: może się tak zdarzyć, jeśli urządzenie przełącza się na sieć Wi-Fi lub rozłącza się. Aby rozwiązać ten problem, połącz się ponownie z siecią. -
Urządzenie nie łączy się po sparowaniu:
adb
używa mDNS do wykrywać sparowane urządzenia i automatycznie się z nimi łączyć. Jeśli sieć lub urządzenie nie obsługuje mDNS lub została wyłączona, musisz ręcznie połącz się z urządzeniem za pomocąadb connect ip:port
.
Połącz się bezprzewodowo z urządzeniem po pierwszym połączeniu USB (tylko opcja dostępna w Androidzie 10 i starszych)
Uwaga: ten proces dotyczy również Androida 11 (oraz jednak jest to jednak ograniczenie, ponieważ wymaga to również *początkowego* połączenia przez fizyczny USB.
Uwaga: te instrukcje nie dotyczą urządzeń Wear z Androidem 10 (poziom interfejsu API 29) lub niższym. Zobacz przewodnik na temat: debugowania aplikacji na Wear OS – znajdziesz więcej informacji.
adb
zwykle komunikuje się z urządzeniem przez USB, ale możesz też użyć tej funkcji:
adb
przez Wi-Fi. Aby połączyć urządzenie z Androidem 10 (poziom interfejsu API 29) lub niższym:
Wykonaj te początkowe czynności przez USB:
-
Połącz urządzenie z Androidem i komputer
adb
we wspólnej sieci Wi-Fi. - Podłącz urządzenie do komputera hosta za pomocą kabla USB.
-
Ustaw urządzenie docelowe, aby nasłuchiwało połączenia TCP/IP na porcie 5555:
adb tcpip 5555
- Odłącz kabel USB od urządzenia docelowego.
- Znajdź adres IP urządzenia z Androidem. Na przykład na urządzeniu Nexus adres IP, kliknij Ustawienia > Informacje o tablecie (lub Informacje o telefonie) > Stan > Adres IP.
-
Połącz się z urządzeniem za pomocą adresu IP:
adb connect device_ip_address:5555
-
Sprawdź, czy komputer hosta jest podłączony do urządzenia docelowego:
$ adb devices List of devices attached device_ip_address:5555 device
Uwaga: pamiętaj, że nie wszystkie punkty dostępu
są odpowiednie. Może być konieczne użycie punktu dostępu
której zapora sieciowa jest prawidłowo skonfigurowana i obsługuje interfejs adb
.
Twoje urządzenie jest teraz połączone z aplikacją adb
.
Jeśli połączenie adb
z urządzeniem zostanie utracone:
- Upewnij się, że host jest nadal połączony z tą samą siecią Wi-Fi co Twoje urządzenie z Androidem.
-
Połącz się ponownie, jeszcze raz wykonując krok
adb connect
. -
Jeśli to nie pomoże, zresetuj hosta
adb
:adb kill-server
Potem trzeba zacząć od początku.
Zapytanie dotyczące urządzeń
Przed wykonaniem poleceń adb
warto wiedzieć, które instancje urządzeń są połączone
do serwera adb
. Wygeneruj listę podłączonych urządzeń za pomocą
Polecenie devices
:
adb devices -l
W odpowiedzi adb
wydrukuje te informacje o stanie dla każdego urządzenia:
- Numer seryjny:
adb
tworzy ciąg znaków jednoznacznie identyfikujący urządzenie. według numeru portu. Oto przykładowy numer seryjny:emulator-5554
- Stan: urządzenie może mieć jeden z tych stanów połączenia:
offline
: urządzenie nie jest połączone z sieciąadb
lub nie odpowiadania.device
: urządzenie jest połączone z serweremadb
. Pamiętaj, że nie oznacza to, że system Android został w pełni uruchomiony i działa, ponieważ urządzenie łączy się z usługąadb
gdy system jest wciąż uruchamiany. Po uruchomieniu jest to normalny proces stanu urządzenia.no device
: brak połączonych urządzeń.
- Opis: jeśli użyjesz opcji
-l
, nagłówekdevices
informuje, jakie jest urządzenie. Te informacje są przydatne, gdy masz wiele urządzeń są połączone, dzięki czemu można je odróżnić.
W przykładzie poniżej widać polecenie devices
i jego dane wyjściowe. Są trzy
uruchomionych urządzeniach. Pierwsze 2 wiersze na liście to emulatory, a trzeci – sprzęt.
urządzenia podłączonego do komputera.
$ adb devices List of devices attached emulator-5556 device product:sdk_google_phone_x86_64 model:Android_SDK_built_for_x86_64 device:generic_x86_64 emulator-5554 device product:sdk_google_phone_x86 model:Android_SDK_built_for_x86 device:generic_x86 0a388e93 device usb:1-1 product:razor model:Nexus_7 device:flo
Nie ma emulatora na liście
Polecenie adb devices
zawiera sekwencję poleceń z zróżnicowaną wielkością liter, która powoduje uruchomienie
emulatory, aby nie pojawiały się w danych wyjściowych adb devices
, chociaż
są one widoczne na pulpicie. Dzieje się tak, gdy wszystkie te warunki
warunki są spełnione:
- Serwer
adb
nie jest uruchomiony. - Możesz użyć polecenia
emulator
z parametrem-port
lub-ports
z wartością portu o nieparzystym numerze z zakresu od 5554 do 5584. - Wybrany port z nieparzystymi numerami nie jest zajęty, więc połączenie można nawiązać z z określonym numerem portu – lub, jeśli jest zajęty, emulator przełączy się na inny port spełniający wymagania opisane w punkcie 2.
- Serwer
adb
uruchamiasz po uruchomieniu emulatora.
Jednym ze sposobów uniknięcia tej sytuacji jest zezwolenie emulatorowi na wybór własnych portów i dalsze uruchamianie
16 emulatorów jednocześnie. Innym sposobem jest uruchamianie serwera adb
zawsze przed
użyj polecenia emulator
zgodnie z poniższymi przykładami.
Przykład 1: w tej sekwencji poleceń rozpoczyna się polecenie adb devices
serwer adb
, ale lista urządzeń nie jest wyświetlana.
Zatrzymaj serwer adb
i wpisz poniższe polecenia w podanej kolejności. Dla: AVD
wpisz prawidłową nazwę AVD z systemu. Aby uzyskać listę nazw AVD, wpisz
emulator -list-avds
Polecenie emulator
znajduje się w
android_sdk/tools
.
$ adb kill-server $ emulator -avd Nexus_6_API_25 -port 5555 $ adb devices List of devices attached * daemon not running. starting it now on port 5037 * * daemon started successfully *
Przykład 2: w tej sekwencji poleceń adb devices
wyświetla wartość
lista urządzeń, ponieważ serwer adb
został uruchomiony jako pierwszy.
Aby zobaczyć emulator w danych wyjściowych adb devices
, zatrzymaj serwer adb
,
a następnie uruchom ją ponownie, używając polecenia emulator
, a przed użyciem
adb devices
w następujący sposób:
$ adb kill-server $ emulator -avd Nexus_6_API_25 -port 5557 $ adb start-server $ adb devices List of devices attached emulator-5557 device
Aby dowiedzieć się więcej o opcjach wiersza poleceń emulatora, zobacz Wiersz poleceń opcje uruchamiania.
Wysyłanie poleceń do określonego urządzenia
Jeśli działa wiele urządzeń, musisz określić urządzenie docelowe.
po uruchomieniu polecenia adb
.
Aby określić cel:
- Użyj polecenia
devices
, aby uzyskać numer seryjny środowiska docelowego. - Po uzyskaniu numeru seryjnego użyj
-s
z poleceniamiadb
, które określają numer seryjny.- Jeśli zamierzasz wydać wiele poleceń
adb
, możesz ustawić Zmienna środowiskowa$ANDROID_SERIAL
, która zawiera numer seryjny . - Jeśli używasz obu typów tagów
-s
i$ANDROID_SERIAL
,-s
zastąpienia$ANDROID_SERIAL
- Jeśli zamierzasz wydać wiele poleceń
W poniższym przykładzie uzyskuje się listę podłączonych urządzeń i identyfikator
numer jednego z urządzeń jest używany do instalacji aplikacji helloWorld.apk
na tym urządzeniu:
$ adb devices List of devices attached emulator-5554 device emulator-5555 device 0.0.0.0:6520 device # To install on emulator-5555 $ adb -s emulator-5555 install helloWorld.apk # To install on 0.0.0.0:6520 $ adb -s 0.0.0.0:6520 install helloWorld.apk
Uwaga: jeśli wydasz polecenie bez określania urządzenia docelowego
gdy dostępnych jest wiele urządzeń, adb
wyświetla błąd
„adb: więcej niż jedno urządzenie/emulator”.
Jeśli masz dostępnych wiele urządzeń, ale tylko jedno z nich jest emulatorem,
użyj opcji -e
, by wysyłać polecenia do emulatora. W przypadku wielu
urządzeń, ale tylko z jednym urządzeniem sprzętowym, użyj opcji -d
, aby wysyłać polecenia do
na urządzeniu.
Instalowanie aplikacji
Aby zainstalować plik APK w emulatorze lub na połączonych urządzeniach, możesz użyć aplikacji adb
za pomocą polecenia install
:
adb install path_to_apk
Musisz użyć opcji -t
z install
podczas instalowania testowego pakietu APK. Aby dowiedzieć się więcej,
zobacz -t
.
Aby zainstalować wiele plików APK, użyj polecenia install-multiple
. Przydaje się to, gdy pobierzesz wszystkie
pliki APK aplikacji z Konsoli Play na konkretnym urządzeniu i chcesz je zainstalować
za pomocą emulatora czy urządzenia fizycznego.
Więcej informacji o tworzeniu pliku APK do zainstalowania w emulatorze lub na urządzeniu zapoznaj się z sekcją Tworzenie i uruchamianie aplikacji.
Uwaga: jeśli używasz Android Studio, nie musisz używać
adb
, aby zainstalować aplikację w emulatorze lub na urządzeniu. Zamiast tego Android Studio
zajmuje się pakowaniem i instalacją aplikacji.
Skonfiguruj przekierowanie portów
Za pomocą polecenia forward
skonfiguruj dowolne przekierowanie portów, które
przekierowuje żądania z określonego portu hosta do innego portu w urządzeniu.
Poniżej znajduje się przykład konfigurowania przekierowania hosta z portu 6100 na port 7100 urządzenia:
adb forward tcp:6100 tcp:7100
Ten przykład konfiguruje przekierowanie hosta portu 6100 na adres local:logd:
adb forward tcp:6100 local:logd
Może to być przydatne, jeśli chcesz określić, co jest wysyłane do danego portu urządzenia. Wszystkie odebrane dane zostaną zapisane do demona logu systemowego i wyświetlone w dziennikach urządzenia.
Kopiowanie plików z urządzenia i na urządzenie
Użyj poleceń pull
i push
, aby skopiować pliki do usługi
i na urządzeniu. W odróżnieniu od polecenia install
który kopiuje plik APK tylko do określonej lokalizacji, pull
i push
umożliwiają kopiowanie dowolnych katalogów i plików do dowolnej lokalizacji na urządzeniu.
Aby skopiować plik lub katalog i jego podkatalogi z urządzenia: wykonaj te czynności:
adb pull remote local
Aby skopiować plik lub katalog i jego podkatalogi na urządzenie: wykonaj te czynności:
adb push local remote
Zastąp local
i remote
ścieżkami do
docelowe pliki/katalog na komputerze programisty (lokalnym) i w
urządzenia (pilot). Na przykład:
adb push myfile.txt /sdcard/myfile.txt
Zatrzymywanie serwera adb
W niektórych przypadkach może być konieczne zakończenie procesu serwera adb
i ponowne uruchomienie
aby rozwiązać problem. Może się tak zdarzyć, jeśli na przykład adb
nie odpowiada na polecenie.
Aby zatrzymać serwer adb
, użyj polecenia adb kill-server
.
Następnie możesz ponownie uruchomić serwer, wykonując dowolne inne polecenie adb
.
Wydaj polecenia adb
Wydaj polecenia adb
w wierszu poleceń na komputerze, z którego korzystasz, lub ze skryptu przy użyciu
:
adb [-d | -e | -s serial_number] command
Jeśli uruchomiony jest tylko 1 emulator lub połączone tylko 1 urządzenie, polecenie adb
jest
wysyłane na to urządzenie. Gdy jest uruchomionych wiele emulatorów lub wiele urządzeń jest działających
, musisz użyć -d
, -e
lub -s
aby określić urządzenie docelowe, na które polecenie ma zostać skierowane.
Aby wyświetlić szczegółową listę wszystkich obsługiwanych poleceń adb
, użyj tych elementów:
polecenie:
adb --help
Wydaj polecenia powłoki
Polecenia shell
możesz używać do wydawania poleceń na urządzeniu za pomocą adb
lub uruchamiania
interaktywnej powłoki. Aby wygenerować jedno polecenie, użyj tego polecenia shell
:
adb [-d |-e | -s serial_number] shell shell_command
Aby uruchomić interaktywną powłokę na urządzeniu, użyj tego polecenia shell
:
adb [-d | -e | -s serial_number] shell
Aby zamknąć interaktywną powłokę, naciśnij Control+D
lub wpisz exit
.
Android zapewnia większość standardowych narzędzi wiersza poleceń Unix. Aby zobaczyć listę dostępnych narzędzi, użyj następujące polecenie:
adb shell ls /system/bin
W przypadku większości poleceń pomoc jest dostępna za pomocą argumentu --help
.
Wiele poleceń powłoki jest dostarczanych przez
toybox.
Ogólną pomoc dotyczącą wszystkich poleceń ze skrzynią z zabawkami można uzyskać pod adresem toybox --help
.
W narzędziach platformy Android w wersji 23 lub nowszej adb
obsługuje argumenty w taki sam sposób jak
niż polecenie ssh(1)
. Ta zmiana rozwiązała wiele problemów z
wstrzyknięcie polecenia
i pozwala bezpiecznie wykonywać polecenia zawierające powłokę
metaznaki,
na przykład adb install Let\'sGo.apk
. Zmiana ta oznacza, że interpretacja
każdego polecenia zawierającego metaznaki powłoki również uległo zmianie.
Na przykład adb shell setprop key 'value'
jest teraz błędem, ponieważ
pojedyncze cudzysłowy ('
) są przetwarzane przez lokalną powłokę, a urządzenie
adb shell setprop key value
Aby polecenie zadziałało, cytuj dwukrotnie,
raz dla powłoki lokalnej, a drugiej dla powłoki zdalnej, jak w przypadku
ssh(1)
Na przykład: adb shell setprop key 'value'
.
Zapoznaj się też z narzędziem wiersza poleceń Logcat. który służy do monitorowania dziennika systemowego.
Menedżer aktywności związanej z połączeniami
W powłoce adb
możesz używać narzędzia Menedżer aktywności (am
) do wydawania poleceń, aby
wykonywać różne działania systemowe, takie jak uruchamianie działania, wymuszenie zatrzymania procesu,
przesyłać intencje, modyfikować właściwości ekranu urządzenia i wykonywać inne działania.
W powłoce składnia am
to:
am command
Możesz też wydać polecenie menedżera aktywności bezpośrednio z poziomu adb
bez otwierania zdalnej powłoki. Na przykład:
adb shell am start -a android.intent.action.VIEW
Tabela 1. Dostępne polecenia menedżera aktywności
Polecenie | Opis |
---|---|
start [options] intent
|
Rozpocznij Activity określony przez
intent Zobacz Specyfikacja argumentów intencji. Dostępne opcje:
|
startservice [options] intent
|
Rozpocznij Service określony przez
intent Zobacz Specyfikacja argumentów intencji. Dostępne opcje:
|
force-stop package
|
Wymuś zatrzymanie wszystkich danych powiązanych z kontem package .
|
kill [options] package
|
Wyłącz wszystkie procesy powiązane z zasobem package . To polecenie kończy działanie tylko
procesy, które można bezpiecznie zabić i nie będą miały wpływu na użytkownika
i uzyskiwanie dodatkowych informacji.
Dostępne opcje:
|
kill-all
|
Wyłącz wszystkie procesy w tle. |
broadcast [options] intent
|
Prześlij intencję transmisji. Zobacz Specyfikacja argumentów intencji. Dostępne opcje:
|
instrument [options] component
|
Rozpocznij monitorowanie za pomocą
Instrumentation instancja.
Zwykle wartość docelowa component
ma postać test_package/runner_class . Dostępne opcje:
|
profile start process file
|
Uruchom profilowanie na urządzeniu process , zapisz wyniki w: file .
|
profile stop process
|
Zatrzymaj profilowanie na urządzeniu process .
|
dumpheap [options] process file
|
Zrzuć stertę process , zapisz w: file . Dostępne opcje:
|
set-debug-app [options] package
|
Ustaw aplikację package na debugowanie. Dostępne opcje:
|
clear-debug-app
|
Wyczyść poprzedni zestaw pakietów do debugowania za pomocą funkcji set-debug-app .
|
monitor [options]
|
Rozpocznij monitorowanie pod kątem awarii i błędów ANR. Dostępne opcje:
|
screen-compat {on | off} package
|
Sterowanie ekranem
trybu zgodności package .
|
display-size [reset | widthxheight]
|
Zastąp rozmiar interfejsu urządzenia.
To polecenie ułatwia testowanie aplikacji na ekranach o różnych rozmiarach poprzez naśladowanie
na urządzeniu z dużym ekranem i odwrotnie.
Przykład: |
display-density dpi
|
Zastąp gęstość wyświetlania.
To polecenie jest przydatne do testowania aplikacji na ekranach o różnej gęstości poprzez naśladowanie elementów o dużej gęstości
na ekranie o małej gęstości i odwrotnie.
Przykład: |
to-uri intent
|
Wydrukuj daną specyfikację intencji jako identyfikator URI. Zobacz Specyfikacja argumentów intencji. |
to-intent-uri intent
|
Wydrukuj daną specyfikację intencji jako identyfikator URI intent: . Zobacz Specyfikacja argumentów intencji. |
Specyfikacja argumentów intencji
W przypadku poleceń menedżera aktywności, które przyjmują argument intent
, można:
określ intencję za pomocą tych opcji:
Menedżer pakietów połączeń (pm
)
W powłoce adb
możesz używać narzędzia menedżera pakietów (pm
), aby wydawać polecenia, aby:
wykonywać działania i zapytania dotyczące pakietów aplikacji zainstalowanych na urządzeniu;
W powłoce składnia pm
to:
pm command
Możesz też wydać polecenie menedżera pakietów bezpośrednio z poziomu adb
bez otwierania zdalnej powłoki. Na przykład:
adb shell pm uninstall com.example.MyApp
Tabela 2. Dostępne polecenia menedżera pakietów
Polecenie | Opis |
---|---|
list packages [options] filter
|
Wydrukuj wszystkie pakiety (tylko opcjonalnie)
tych, których nazwa pakietu zawiera tekst w języku filter . Opcje:
|
list permission-groups
|
Wydrukuj wszystkie znane grupy uprawnień. |
list permissions [options] group
|
Wydrukuj wszystkie znane uprawnienia (opcjonalnie)
tych w grupie reklam group . Opcje:
|
list instrumentation [options]
|
Wyświetl wszystkie pakiety testowe. Opcje:
|
list features
|
Drukuj wszystkie funkcje systemu. |
list libraries
|
Wydrukuj wszystkie biblioteki obsługiwane przez bieżące urządzenie. |
list users
|
Wydrukuj wszystkich użytkowników w systemie. |
path package
|
Wydrukuj ścieżkę do pliku APK z danym package .
|
install [options] path
|
Zainstaluj w systemie pakiet określony przez path . Opcje:
|
uninstall [options] package
|
Usuwa pakiet z systemu. Opcje:
|
clear package
|
Usuń wszystkie dane powiązane z pakietem. |
enable package_or_component
|
Włącz określony pakiet lub komponent (napisane jako „package/class”). |
disable package_or_component
|
Wyłącz określony pakiet lub komponent (zapisane jako „pakiet/klasa”). |
disable-user [options] package_or_component
|
Opcje:
|
grant package_name permission
|
Przyznaj uprawnienia aplikacji. Na urządzeniach z Androidem 6.0 (poziom interfejsu API 23) mogą to być dowolne uprawnienia zadeklarowane w manifeście aplikacji. Na urządzeniach z Androidem 5.1 (poziom interfejsu API 22) lub starszym, musi być opcjonalnym uprawnieniem określonym przez . |
revoke package_name permission
|
unieważnić uprawnienia aplikacji; Na urządzeniach z Androidem 6.0 (poziom interfejsu API 23) lub wyższych, uprawnieniem może być dowolne uprawnienie zadeklarowane w manifeście aplikacji. Na urządzeniach z Androidem 5.1 (poziom interfejsu API 22) lub starszym, musi być opcjonalnym uprawnieniem określonym przez . |
set-install-location location
|
Zmień domyślną lokalizację instalacji. Wartości związane z lokalizacją:
Uwaga: jest to przeznaczone tylko do debugowania. Stosowanie tej funkcji może spowodować które mogą się zepsuć i pojawiają się inne niepożądane zachowania. |
get-install-location
|
Zwraca bieżącą lokalizację instalacji. Zwracane wartości:
|
set-permission-enforced permission [true | false]
|
Określ, czy dane uprawnienie ma być egzekwowane. |
trim-caches desired_free_space
|
Przytnij pliki pamięci podręcznej, aby osiągnąć dostępną ilość wolnego miejsca. |
create-user user_name
|
Utwórz nowego użytkownika o podanym user_name ,
wydrukowanie nowego identyfikatora użytkownika.
|
remove-user user_id
|
Usuń użytkownika z podanym identyfikatorem user_id ,
usunięcie wszystkich danych powiązanych z tym użytkownikiem.
|
get-max-users
|
Wydrukuj maksymalną liczbę użytkowników obsługiwanych przez urządzenie. |
get-app-links [options] [package]
|
Wydrukuj stan weryfikacji domeny dla danego pola package lub dla wszystkich pakietów, jeśli nie określono żadnej wartości. Kody stanu są zdefiniowane w ten sposób:
Dostępne opcje:
|
reset-app-links [options] [package]
|
Zresetuj stan weryfikacji domeny dla danego pakietu lub dla wszystkich pakietów, jeśli nie określono żadnej wartości.
Dostępne opcje:
|
verify-app-links [--re-verify] [package]
|
Prześlij prośbę o weryfikację dotyczącą danego użytkownika package lub wszystkich pakietów, jeśli nie określono żadnej wartości. Wysyłane tylko wtedy, gdy pakiet wcześniej nie zarejestrował(a) odpowiedzi.
|
set-app-links [--package package] state domains
|
Ręcznie ustaw stan domeny pakietu. Domena musi być zadeklarowana przez pakiet jako automatyczna weryfikacja. To polecenie nie zgłosi błędów w przypadku domen, których nie można zastosować.
|
set-app-links-user-selection --user user_id [--package package]
enabled domains
|
Ręcznie ustaw stan pakietu wybranych przez użytkownika hosta. Domena musi zostać zadeklarowana przez pakiet, by zadziałało. To polecenie nie będzie zgłasza błędy dotyczące domen, których nie można zastosować.
|
set-app-links-user-selection --user user_id [--package package]
enabled domains
|
Ręcznie ustaw stan pakietu wybranych przez użytkownika hosta. Domena musi zostać zadeklarowana przez pakiet, by zadziałało. To polecenie nie będzie zgłasza błędy dotyczące domen, których nie można zastosować.
|
set-app-links-allowed --user user_id [--package package] allowed
|
Przełącz ustawienie obsługi linków automatycznie weryfikowanych w pakiecie.
|
get-app-link-owners --user user_id [--package package] domains
|
Drukuj informacje o właścicielach określonej domeny dla danego użytkownika w kolejności od niskiego do wysokiego priorytetu.
|
Zadzwoń do menedżera zasad dotyczących urządzeń (dpm
)
Aby pomóc Ci w tworzeniu i testowaniu aplikacji do zarządzania urządzeniem,
narzędzia Menedżer zasad dotyczących urządzeń (dpm
). Za pomocą tego narzędzia możesz kontrolować aktywne
administratora lub zmienić dane o stanie zasad na urządzeniu.
W powłoce dpm
składnia wygląda tak:
dpm command
Polecenie menedżera zasad dotyczących urządzeń możesz też wydawać bezpośrednio z poziomu adb
bez otwierania zdalnej powłoki:
adb shell dpm command
Tabela 3. Dostępne polecenia menedżera zasad dotyczących urządzeń
Polecenie | Opis |
---|---|
set-active-admin [options] component
|
Ustawia użytkownika component jako aktywnego administratora.
Dostępne opcje:
|
set-profile-owner [options] component
|
Ustaw component jako aktywnego administratora i jego pakiet jako właściciela profilu istniejącego użytkownika.
Dostępne opcje:
|
set-device-owner [options] component
|
Ustaw aplikację component jako aktywnego administratora i jego pakiet jako właściciela urządzenia.
Dostępne opcje:
|
remove-active-admin [options] component
|
Wyłącz aktywnego administratora. Aplikacja musi zadeklarować
android:testOnly
w pliku manifestu. To polecenie usuwa też właścicieli urządzenia i profilu.
Dostępne opcje:
|
clear-freeze-period-record
|
Wyczyść rejestr wcześniejszych okresów blokady na potrzeby aktualizacji OTA systemu. To jest przydatne
aby uniknąć ograniczeń związanych z harmonogramem urządzeń podczas tworzenia aplikacji, które zarządzają okresami blokady. Zobacz
Zarządzanie aktualizacjami systemu
Obsługiwane na urządzeniach z Androidem 9.0 (poziom interfejsu API 28) lub nowszym. |
force-network-logs
|
Wymuś w systemie przygotowanie wszystkich istniejących logów sieciowych do pobrania przez DPC. Jeśli
połączenia lub dzienników DNS, DPC otrzyma
onNetworkLogsAvailable()
oddzwanianie. Zobacz Rejestrowanie aktywności sieci.
Częstotliwość wykonywania tego polecenia jest ograniczona. Obsługiwane na urządzeniach z Androidem 9.0 (poziom interfejsu API 28) lub nowszym. |
force-security-logs
|
Wymusza udostępnianie przez system wszelkich istniejących dzienników zabezpieczeń DPC. Jeśli są logi
DPC otrzyma
onSecurityLogsAvailable()
oddzwanianie. Zobacz Logowanie urządzeń firmowych
działania.
Częstotliwość wykonywania tego polecenia jest ograniczona. Obsługiwane na urządzeniach z Androidem 9.0 (poziom interfejsu API 28) lub nowszym. |
Zrób zrzut ekranu
Polecenie screencap
to narzędzie powłoki służące do wykonywania zrzutu ekranu urządzenia
wyświetlacz.
W powłoce składnia screencap
to:
screencap filename
Aby użyć polecenia screencap
z poziomu wiersza poleceń, wpisz:
adb shell screencap /sdcard/screen.png
Oto przykładowa sesja zrzutu ekranu, w której wykorzystano powłokę adb
i polecenie pull
, aby pobrać plik z urządzenia:
$ adb shell shell@ $ screencap /sdcard/screen.png shell@ $ exit $ adb pull /sdcard/screen.png
Nagraj film
Polecenie screenrecord
to narzędzie powłoki służące do rejestrowania wyświetlania urządzeń
z Androidem 4.4 (poziom interfejsu API 19) lub nowszym. Narzędzie rejestruje aktywność ekranu w pliku MPEG-4
. Możesz użyć tego pliku do tworzenia filmów promocyjnych i szkoleniowych, a także do debugowania i testowania.
W powłoce użyj tej składni:
screenrecord [options] filename
Aby użyć polecenia screenrecord
z poziomu wiersza poleceń, wpisz:
adb shell screenrecord /sdcard/demo.mp4
Zatrzymaj nagrywanie ekranu, naciskając Control+C. W przeciwnym razie nagranie
zatrzymuje się automatycznie po 3 minutach lub w czasie określonym przez użytkownika --time-limit
.
Aby rozpocząć nagrywanie ekranu urządzenia, uruchom polecenie screenrecord
, aby nagrywać
w filmie. Następnie uruchom polecenie pull
, aby pobrać film z urządzenia na hosta
komputera. Oto przykładowa sesja nagraniowa:
$ adb shell shell@ $ screenrecord --verbose /sdcard/demo.mp4 (press Control + C to stop) shell@ $ exit $ adb pull /sdcard/demo.mp4
Narzędzie screenrecord
umożliwia nagrywanie w dowolnej obsługiwanej rozdzielczości i z dowolną szybkością transmisji bitów.
z zachowaniem proporcji obrazu wyświetlacza. Rekordy narzędzia w natywnym środowisku
domyślna rozdzielczość i orientacja wyświetlacza, maksymalnie 3 minuty.
Ograniczenia narzędzia screenrecord
:
- Dźwięk nie jest nagrywany z plikiem wideo.
- Nagrywanie filmów jest niedostępne na urządzeniach z Wear OS.
- Niektóre urządzenia mogą nie mieć możliwości nagrywania w rozdzielczości wyświetlacza. Jeśli napotkasz problemy z nagrywaniem ekranu, spróbuj użyć niższej rozdzielczości ekranu.
- Obracanie ekranu podczas nagrywania nie jest obsługiwane. Jeśli ekran obraca się podczas podczas nagrywania, fragment ekranu jest w nagraniu ucięty.
Tabela 4. screenrecord
opcji
Opcje | Opis |
---|---|
--help
|
Wyświetl składnię i opcje poleceń |
--size widthxheight
|
Ustaw rozmiar filmu: 1280x720 . Wartością domyślną jest kod natywny urządzenia
rozdzielczość wyświetlacza (jeśli jest obsługiwana), 1280x720 (jeśli nie jest obsługiwana). Aby uzyskać najlepsze wyniki, użyj obsługiwanego rozmiaru
za pomocą kodera zaawansowanego kodowania wideo (AVC). |
--bit-rate rate |
Ustaw szybkość transmisji bitów filmu (w megabitach na sekundę). Wartość domyślna to 20 Mb/s.
Możesz zwiększyć szybkość transmisji bitów, aby poprawić jakość wideo, ale spowoduje to utworzenie większego filmu.
. W tym przykładzie szybkość transmisji bitów nagrywania ustawiana jest na 6 Mb/s:
screenrecord --bit-rate 6000000 /sdcard/demo.mp4 |
--time-limit time |
Ustaw maksymalny czas nagrywania w sekundach. Wartość domyślna i maksymalna to 180 (3 minuty). |
--rotate |
Obróć urządzenie wyjściowe o 90 stopni. Ta funkcja jest eksperymentalna. |
--verbose |
Wyświetlaj informacje dziennika na ekranie wiersza poleceń. Jeśli nie ustawisz tej opcji, narzędzie nie wyświetla żadnych informacji podczas działania. |
Odczytywanie profili ART w aplikacjach
Począwszy od wersji Androida 7.0 (poziom interfejsu API 24) środowisko wykonawcze Android (ART) zbiera profile wykonywania aplikacji zainstalowane aplikacje, które służą do optymalizacji wydajności aplikacji. Sprawdź zebrane profile, aby: wie, które metody są często wykonywane i które klasy są używane podczas uruchamiania aplikacji;
Uwaga: można pobrać tylko profil wykonania. filename, jeśli masz dostęp do roota w systemie plików, na przykład w emulatorze.
Aby wygenerować informacje o profilu w formie tekstowej, użyj tego polecenia:
adb shell cmd package dump-profiles package
Aby pobrać utworzony plik, użyj polecenia:
adb pull /data/misc/profman/package.prof.txt
Zresetuj urządzenia testowe
Jeśli testujesz aplikację na kilku urządzeniach testowych, warto zresetować urządzenie między
np. usuwania danych użytkownika i resetowania środowiska testowego. Możesz utworzyć fabrykę
na urządzeniu testowym z Androidem 10 (poziom interfejsu API 29) lub nowszym za pomocą
testharness
adb
, na przykład polecenie powłoki:
adb shell cmd testharness enable
Podczas przywracania urządzenia przy użyciu funkcji testharness
urządzenie automatycznie tworzy kopię zapasową RSA
klucz, który umożliwia debugowanie za pomocą bieżącej stacji roboczej w stałej lokalizacji. Oznacza to, że po
po zresetowaniu urządzenie stacja robocza może kontynuować debugowanie i wykonywać polecenia adb
, aby
z urządzenia bez ręcznego rejestrowania nowego klucza.
Aby ułatwić i zwiększyć bezpieczeństwo testowania aplikacji,
testharness
, aby przywrócić urządzenie, zmienia też te ustawienia:
- Na urządzeniu zostaną skonfigurowane pewne ustawienia systemowe, tak aby kreatory wstępnej konfiguracji urządzenia nie były wyświetlane. Oznacza to, że urządzenie przechodzi w stan, w którym możesz szybko zainstalować, debugować i testować aplikację.
- Ustawienia:
- Wyłącza ekran blokady.
- Wyłącza alerty o zagrożeniu.
- Wyłącza autosynchronizację kont.
- Wyłącza automatyczne aktualizacje systemu.
- Inne:
- Wyłącza wstępnie zainstalowane aplikacje zabezpieczające.
Jeśli aplikacja musi wykryć ustawienia domyślne urządzenia testharness
i dostosować się do nich
użyj funkcji
ActivityManager.isRunningInUserTestHarness()
.
SQLite
sqlite3
uruchamia program wiersza poleceń sqlite
do badania baz danych SQLite.
Zawiera polecenia takie jak .dump
do drukowania zawartości tabeli oraz
.schema
, aby wydrukować instrukcję SQL CREATE
dla istniejącej tabeli.
Możesz też wykonać polecenia SQLite z poziomu wiersza poleceń, jak pokazano poniżej:
$ adb -s emulator-5554 shell $ sqlite3 /data/data/com.example.app/databases/rssitems.db SQLite version 3.3.12 Enter ".help" for instructions
Uwaga: możliwy jest dostęp tylko do bazy danych SQLite jeśli masz dostęp do katalogu głównego systemu plików, na przykład w emulatorze.
Więcej informacji znajdziesz w dokumentacji wiersza poleceń sqlite3
.
Backendy adb USB
Serwer adb może wchodzić w interakcję ze stosem USB za pomocą 2 backendów. Może używać reklam natywnych
systemu operacyjnego (Windows, Linux lub macOS) albo może używać backendu libusb
.
Niektóre funkcje, takie jak attach
, detach
czy wykrywanie prędkości przez USB, są
dostępna tylko w przypadku korzystania z backendu libusb
.
Możesz wybrać backend, korzystając ze zmiennej środowiskowej ADB_LIBUSB
.
Jeśli nie jest skonfigurowana, adb używa domyślnego backendu. Domyślne działanie różni się w zależności od systemu operacyjnego. Uruchamiam
w wersji ADB w wersji 34,
Backend liubusb
jest domyślnie używany we wszystkich systemach operacyjnych oprócz Windows, w którym
używane domyślnie. Jeśli ADB_LIBUSB
to
wskazuje, czy używany jest natywny backend czy libusb
. Zobacz
strona z ręczną konfiguracją AdB
.
Backendy adb mDNS
ADB może używać protokołu DNS multicast do automatycznego łączenia serwera i urządzeń. Serwer ADB jest wyposażony w dwa backendy: Bonjour (Apple mdnsResponder) oraz Openscreen.
Backend Bonjour wymaga uruchomienia demona na hoście.
Wbudowany demon Apple w systemie macOS zawsze działa, ale w systemach Windows i Linux użytkownik musi upewnić się, że demon mdnsd
jest włączony.
Jeśli polecenie adb mdns check
zwróci błąd, prawdopodobnie ADB korzysta z backendu Bonjour, ale nie działa żaden demon Bonjour.
Backend Openscreen nie wymaga demona do działania na komputerze. Obsługa backendu Openscreen w systemie macOS zaczyna się od ADB w wersji 35. Systemy Windows i Linux są obsługiwane od wersji ADB 34.
Domyślnie ADB korzysta z backendu Bonjour. To zachowanie można zmienić przy użyciu zmiennej środowiskowej ADB_MDNS_OPENSCREEN
(ustaw wartość 1
lub 0
).
Więcej informacji znajdziesz na stronie z ręczną konfiguracją ADB.