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:
-
Włącz opcje programisty na swoim urządzeniu.
-
Otwórz Android Studio i wybierz Sparuj urządzenia przez Wi-Fi z menu uruchamiania konfiguracji.
Pojawi się okno Parowanie urządzeń przez Wi-Fi, jak widać na ilustracji 2.
-
Na urządzeniu kliknij Debugowanie bezprzewodowe i sparuj urządzenie:
-
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.
-
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.
-
-
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.
-
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ń.
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:
-
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 stacji roboczej otwórz okno terminala i przejdź do:
android_sdk/platform-tools
. -
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.
-
Na terminalu stacji roboczej uruchom polecenie
adb pair ipaddr:port
. Użyj podanego powyżej adresu IP i numeru portu. -
Gdy pojawi się prośba, wpisz kod parowania, jak pokazano poniżej.
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:
-
Połącz urządzenie z Androidem i komputer hosta
adb
ze wspólną siecią Wi-Fi. - Podłącz urządzenie do komputera hosta za pomocą kabla USB.
-
Ustaw urządzenie docelowe tak, 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 możesz sprawdzić w sekcji Ustawienia > Informacje o tablecie (lub Informacje o telefonie) > Stan > Adres IP.
-
Połącz się z urządzeniem, korzystając z jego adresu IP:
adb connect device_ip_address:5555
-
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
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.
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 zadb
lub nie odpowiada.device
: urządzenie jest połączone z serweremadb
. Ten stan nie oznacza, że system Android został w pełni rozruchowy i działa normalnie, ponieważ urządzenie łączy się zadb
, 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
, poleceniedevices
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:
- Aby uzyskać numer seryjny środowiska docelowego, użyj polecenia
devices
. - Gdy uzyskasz numer seryjny, użyj opcji
-s
za pomocą poleceńadb
, aby podać go.- Jeśli zamierzasz uruchomić wiele poleceń
adb
, możesz ustawić zmienną środowiskową$ANDROID_SERIAL
tak, aby zawierała numer seryjny. - Jeśli używasz zarówno właściwości
-s
, jak i$ANDROID_SERIAL
,-s
zastępuje$ANDROID_SERIAL
.
- Jeśli zamierzasz uruchomić wiele poleceń
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
Polecenie | Opis |
---|---|
start [options] intent
|
Rozpocznij instancję Activity określoną przez intent . Zobacz specyfikację argumentów intencji. Dostępne opcje:
|
startservice [options] intent
|
Rozpocznij Service wskazanej przez intent . Zobacz specyfikację argumentów intencji. Dostępne opcje:
|
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:
|
kill-all
|
Zakończ wszystkie procesy w tle. |
broadcast [options] intent
|
Wyślij intencję transmisji. Zobacz specyfikację argumentów intencji. Dostępne opcje:
|
instrument [options] component
|
Rozpocznij monitorowanie za pomocą instancji Instrumentation .
Zwykle wartość docelowa component ma postać test_package/runner_class . Dostępne opcje:
|
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:
|
set-debug-app [options] package
|
Ustaw aplikację package do debugowania. Dostępne opcje:
|
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:
|
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: |
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: |
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
Polecenie | Opis |
---|---|
list packages [options] filter
|
Wydrukuj wszystkie pakiety, opcjonalnie tylko te, których nazwa pakietu zawiera tekst w polu filter . Opcje:
|
list permission-groups
|
Wydrukuj wszystkie znane grupy uprawnień. |
list permissions [options] group
|
Wydrukuj wszystkie znane uprawnienia, opcjonalnie tylko te z zakresu group . Opcje:
|
list instrumentation [options]
|
Wyświetl wszystkie pakiety testowe. Opcje:
|
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:
|
uninstall [options] package
|
Usuwa pakiet z systemu. Opcje:
|
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:
|
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:
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:
|
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:
Dostępne opcje:
|
reset-app-links [options] [package]
|
Zresetuj stan weryfikacji domeny dla danego pakietu lub wszystkich pakietów, jeśli nie określono żadnego.
Dostępne opcje:
|
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.
|
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ć.
|
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ć.
|
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ć.
|
set-app-links-allowed --user user_id [--package package] allowed
|
Przełącz automatycznie weryfikowane ustawienie obsługi linków dla pakietu.
|
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.
|
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 dpm
skł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
Polecenie | Opis |
---|---|
set-active-admin [options] component
|
Ustawia użytkownika component jako aktywnego administratora.
Dostępne opcje:
|
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:
|
set-device-owner [options] component
|
Ustaw aplikację component jako aktywnego administratora, a jej 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ądzeń i profili.
Dostępne opcje:
|
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.
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 20 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.