Wskazówki i porady ADB: Polecenia, o których powinien wiedzieć każdy zaawansowany użytkownik

click fraud protection

Jest wiele funkcji Android Debug Bridge, o których możesz nie wiedzieć. Kliknij tutaj, aby uzyskać przydatne porady i wskazówki dotyczące korzystania z ADB!

Szybkie linki

  • Dostęp do powłoki
  • Podłączanie do wielu urządzeń
  • Przesyłanie plików
  • Logowanie
  • Wyświetlanie zainstalowanych aplikacji za pośrednictwem ADB
  • Instalowanie i odinstalowywanie aplikacji poprzez ADB
  • Wyodrębnianie plików APK za pomocą ADB
  • Tworzenie kopii zapasowych i przywracanie danych aplikacji
  • Lista komponentów aplikacji
  • Uruchomienie działalności, usług i odbiorników radiowych
  • Wyłączanie i włączanie prawie każdej aplikacji
  • Przechwytywanie zrzutów ekranu
  • Przesyłanie danych binarnych pomiędzy komputerem a urządzeniem z systemem Android

Jeśli jesteś entuzjastą Androida czającym się na scenie modowania lub twórcą aplikacji od dłuższego czasu prędzej czy później natkniesz się na fajne narzędzie zwane Android Debug Bridge lub ADB krótki. Jest szeroko stosowany w Android Studio jako narzędzie towarzyszące wiersza poleceń. Programiści Androida używają go również jako samodzielnego rozwiązania do ręcznego instalowania i testowania aplikacji

Smartfony z Androidem a także emulowane urządzenia z Androidem.

Ale ADB może wiele zrobić i większość z nich jest użyteczna nie tylko dla programistów. Nawet jeśli nie jesteś programistą i czytasz ten artykuł, istnieje duża szansa, że ​​prawdopodobnie raz lub dwa razy użyłeś ADB do sideload aplikacji lub zmień uprawnienia. Ale to nie wszystko, do czego można wykorzystać ADB. Czytaj dalej, aby uzyskać porady i wskazówki dotyczące korzystania z ADB, o których mogłeś nie wiedzieć.

Musisz mieć uruchomiony ADB na swoim komputerze. Koniecznie zapoznaj się z naszym artykułem na temat jak zainstalować ADB Jeśli potrzebujesz pomocy. Jeśli używasz systemu Windows, również musisz to zrobić zainstaluj odpowiednie sterowniki USB OEM dla Twojego urządzenia z Androidem.

Dostęp do powłoki

Jeśli korzystałeś już wcześniej z ADB, możesz być przyzwyczajony do uruchamiania poleceń w jednym wierszu. Ale możesz także użyć ADB, aby otworzyć powłokę terminala na swoim urządzeniu i bezpośrednio uruchamiać polecenia. I to jest proste!

W terminalu lub oknie wiersza poleceń:

adb shell

Następnie zostaniesz przywitany komunikatem $ symbol, za pomocą którego możesz uruchamiać polecenia bezpośrednio na swoim urządzeniu.

Podłączanie do wielu urządzeń

ADB może komunikować się z wieloma urządzeniami jednocześnie. Jednak w takich scenariuszach należy określić urządzenie docelowe podczas wydawania poleceń ADB.

Aby to zrobić, musisz znać numer seryjny urządzenia docelowego. Numer seryjny można uzyskać za pomocą polecenia devices:

adb devices

Teraz skorzystaj z -s możliwość podania numeru seryjnego urządzenia docelowego. Przykład:

adb -s <serialnumber> shell

Przesyłanie plików

Miłośnikom wiersza poleceń ADB zapewnia bardzo łatwy sposób przesyłania plików do i z urządzenia z Androidem. Po prostu skorzystaj z pull polecenie kopiowania plików i katalogów z urządzenia i push polecenie skopiowania plików i katalogów na urządzenie:

Jeśli chcesz skopiować plik lub katalog wraz z podkatalogami na urządzenie z systemem Android:

adb push local_path device_path
  • Przykład: adb push D:\image.png /sdcard

Poniższe polecenie skopiuje plik lub katalog wraz z podkatalogami z urządzenia z systemem Android na komputer hosta:

adb pull device_path local_path
  • Przykład: adb pull /sdcard/backup_April.tar D:\Backup

Logowanie

Android Studio zapewnia Okno Logcata, który umożliwia wyświetlanie logów z Twojego urządzenia w czasie rzeczywistym. Jednak nie jest to zbyt przydatne w przypadku przetwarzania wsadowego. Na szczęście urządzenia z Androidem są wyposażone w polecenie logcat dostępne za pośrednictwem ADB, którego można użyć do zrzutu komunikatów dziennika systemu i aplikacji oraz wydrukowania ich na ekranie.

Podstawowa składnia jest następująca:

adb logcat

Aby dowiedzieć się więcej, zapoznaj się z naszym tutorialem na temat jak pobrać logcats systemu, logi jądra i dmesg na Androidzie.

pisanki

Google oferuje dwa fajne pisanki związane z poleceniem logcat.

  1. Pierwszy z nich to lolcat, ukłon w stronę Mem LOLcat. Daje taki sam wynik, jak zwykłe polecenie logcat.
    adb lolcat
  2. Drugim jest longcat, który jest odpowiednikiem polecenia logcat -v long. Wyświetla wszystkie pola metadanych i oddzielne wiadomości z pustą linią.
    adb longcat

Wyświetlanie zainstalowanych aplikacji za pośrednictwem ADB

Aby zobaczyć zainstalowane aplikacje na swoim urządzeniu, możesz użyć następującego polecenia:

adb shell pm list packages

Spowoduje to zwrócenie listy nazw pakietów zainstalowanych aplikacji, z każdą z nich w osobnej linii poprzedzonej package:.

Opcje

Istnieje również kilka opcji, których można użyć do pobrania bardziej szczegółowych list.

  • -F będzie zawierać ścieżkę do podstawowego pliku APK dla każdej aplikacji wraz z nazwą pakietu.
  • -A upewni się, że wszystkie znane pakiety inne niż APEX zostaną zwrócone.
  • -D spowoduje, że polecenie zwróci tylko wyłączone pakiety.
  • -mi spowoduje, że polecenie zwróci tylko włączone pakiety.
  • -S spowoduje, że polecenie zwróci tylko pakiety systemowe.
  • -3 spowoduje, że polecenie zwróci tylko pakiety innych firm.
  • -I będzie zawierać nazwę pakietu instalacyjnego dla każdego pakietu.
  • -U będzie zawierać UID pakietu dla każdego pakietu.
  • -ty będzie zawierać odinstalowane pakiety.
  • --show-kod wersji będzie zawierać kod wersji każdego pakietu.
  • --tylko wierzchołek zwróci tylko pakiety APEX.
  • --uid pokaże tylko pakiety z podanym UID.
  • --użytkownik pokaże tylko pakiety należące do podanego ID użytkownika.

Instalowanie i odinstalowywanie aplikacji poprzez ADB

Jest to stosunkowo powszechne zastosowanie ADB, ale i tak warto o tym wspomnieć. Między innymi możesz także skorzystać z ADB instaluj i odinstalowuj aplikacje na Androida na swoje urządzenie z Androidem.

Instalowanie pakietu APK

Jeśli masz plik APK na swoim komputerze, możesz zainstalować go na swoim urządzeniu, wykonując następujące czynności:

adbinstall-rsomeapk.apk

Pamiętaj o wymianie someapk.apk z pełną ścieżką do pakietu APK, który chcesz zainstalować.

Opcje

Istnieje wiele opcji instalowania plików APK za pośrednictwem ADB.

  • The -R opcja umożliwia ADB instalację na istniejącej aplikacji (tj. aktualizację). W systemie Android Pie i nowszych wersjach nie musisz określać tej opcji.
  • The -R opcja w przypadku Androida Pie i nowszych wersji spowoduje, że instalacja nie powiedzie się, jeśli aplikacja jest już zainstalowana.
  • The -I Opcja pozwala określić nazwę pakietu instalacyjnego. To właśnie zostanie zwrócone, jeśli Android będzie chciał wiedzieć, co zainstalowało plik APK.
  • The -T opcja umożliwia APK z Android: testOnly="true" w swoim manifeście do zainstalowania.
  • The -D Opcja umożliwia przejście określonego pakietu APK do już zainstalowanej aplikacji. Działa to tylko wtedy, gdy obie wersje aplikacji można debugować.
  • The -G opcja dla Androida Marshmallow i nowszych automatycznie przyznaje wszystkie uprawnienia wykonawcze zainstalowanej aplikacji.

To nie wszystkie z nich. Jeśli chcesz uzyskać pełną listę, możesz zapoznać się z wbudowaną dokumentacją.

Wiele plików APK i pakietów

Jeśli masz kilka plików APK, które chcesz zainstalować na raz, z wielu aplikacji lub ponieważ instalujesz pakiet aplikacji, możesz użyć pakietów ADB install-multiple I install-multi-package cechy.

Jeśli wszystkie Twoje pliki APK dotyczą jednej aplikacji, użyj install-multiple:

adbinstall-multipleapk1.apkapk2.apk ...

W przeciwnym razie użyj install-multi-package:

adbinstall-multi-packageapp1.apkapp2.apk ...

Opcje tych poleceń są podobne do install, ale z pewnymi ograniczeniami. Sprawdź wbudowaną dokumentację ADB, dla której dostępne są opcje.

Odinstalowywanie aplikacji

Aby odinstalować za pomocą ADB, będziesz potrzebować nazwy pakietu aplikacji, którą chcesz odinstalować. Sprawdź sekcję dot Lista zainstalowanych aplikacji jeśli jeszcze tego nie zrobiłeś.

Gdy już znasz nazwę pakietu, odinstalowanie jest tak proste, jak:

adb uninstall <packagename>

Za pomocą tego polecenia zazwyczaj nie można odinstalować aplikacji systemowych ani preinstalowanych. Możesz jednak wyłączyć je za pomocą ADB. Sprawdź sekcję Wyłączanie i włączanie prawie każdej aplikacji dla szczegółów.

Wyodrębnianie plików APK za pomocą ADB

Istnieje wiele powodów, dla których warto wyodrębnić pliki APK dla aplikacji. Może chcesz utworzyć jego kopię zapasową do wykorzystania w przyszłości, a może nie jest już dostępny online i chcesz przenieść go na inne urządzenie.

Wyodrębnianie aplikacji za pomocą ADB jest dość proste. Najpierw znajdź nazwę pakietu aplikacji, którą chcesz wyodrębnić. Można to zrobić na wiele sposobów, ale najłatwiej jest zwykle skorzystać z aplikacji Ustawienia na urządzeniu, aby wyświetlić plik listę wszystkich zainstalowanych aplikacji, wybierz tę, którą chcesz i przewiń w dół, aż znajdziesz nazwę pakietu lub aplikacji ID.

Po uzyskaniu nazwy pakietu uruchom następujące polecenie:

adb shell pm path <packagename>

To polecenie zwróci ścieżkę wszystkich plików APK dla tej nazwy pakietu.

Następnie możesz użyć następującego polecenia, aby pobrać każdy plik APK na swój komputer:

adb pull /path/to/apk.apk

Tworzenie kopii zapasowych i przywracanie danych aplikacji

Chociaż Google nie opracowało jeszcze metodologii tworzenia kopii zapasowych jednym kliknięciem na wzór iOS, możesz użyć ADB do tworzenia kopii zapasowych i przywracania zainstalowanych aplikacji wraz z ich danymi. Jednak funkcjonalność jest daleka od doskonałości, a Google już to zrobił oznaczył tę funkcję jako przestarzałą.

Kopia zapasowa

Aby utworzyć kopię zapasową pojedynczej aplikacji wraz z jej plikiem APK:

adb backup -apk <packagename> -f package_name_backup.ab

Jeśli chcesz jednocześnie wykonać kopię zapasową wszystkich danych aplikacji:

adb backup -f all -all -apk -nosystem

Ponieważ moduł przywracania nie może przywrócić poszczególnych aplikacji, lepiej jest utworzyć kopie zapasowe specyficzne dla pakietu. Poniższy fragment polecenia (kompatybilny z systemem Linux/macOS i podsystemem Windows dla systemu Linux) może to zrobić za Ciebie:

for APP in $(adb shell pm list packages -3)
do
APP=$( echo${APP} | sed "s/^package://")
adb backup -f ${APP}.backup ${APP}
done

Przywrócić

Najpierw musisz zainstalować zapisany plik APK;

adb install <packagename>.apk

Następnie możesz przywrócić jego dane:

adbrestorepackage_name_backup.ab

Powtarzam, funkcje tworzenia kopii zapasowych i przywracania ADB mają wiele zastrzeżeń, w tym zmienne wyniki w zależności od pamięci ROM

Lista komponentów aplikacji

Składniki aplikacji to takie elementy, jak jej działania, odbiorniki rozgłoszeniowe, usługi i tak dalej. Czasami warto znać nazwy tych komponentów w konkretnej aplikacji, zwłaszcza jeśli chcesz uruchomić ukryte działania lub wysłać transmisję z określonymi danymi.

Niestety ADB nie ma bardzo przejrzystego sposobu wyświetlania listy komponentów aplikacji. Ale jest to możliwe. Uruchom następujące polecenie:

adb shell dumpsys package

Zostanie zwrócona cała masa tekstu.

  • Przewiń, aż znajdziesz Tabela rozwiązywania działań tytuł, aby zobaczyć działania.
  • Spojrzeć pod Tabela rozpoznawania odbiorników dla odbiorników nadawczych.
  • Sprawdź Tabela rozpoznawania usług dla Usług.
  • I tak dalej.

Dla każdego komponentu zostaną wyświetlone czynności potrzebne do jego uruchomienia, nazwa komponentu i ewentualnie dodatkowe informacje.

Alternatywnie, jeśli chcesz mieć łatwiejszy sposób przeglądania działań, usług i odbiorców, możesz użyć aplikacji Root Activity Launcher od uznanego programisty XDA Zacharee1. Pokaże Ci te komponenty dla każdej aplikacji, wraz z wieloma innymi przydatnymi funkcjami.

Program uruchamiający aktywność rootaDeweloper: Zachary Wander

Cena: 0,99.

Pobierać

Uruchomienie działalności, usług i odbiorników radiowych

ADB można również używać do uruchamiania działań, uruchamiania usług i powiadamiania odbiorników Broadcast. W razie potrzeby możesz nawet określić identyfikatory URI danych i dodatki dotyczące intencji.

Aby uruchomić komponenty, będziesz potrzebować nazwy komponentu, który chcesz uruchomić. Możesz zobaczyć, jak to uzyskać z Lista składników aplikacji Sekcja.

Składnia polecenia uruchamiania działania jest mniej więcej taka:

am start -a <action> -n <component>

Składnia polecenia uruchamiania usługi jest mniej więcej taka:

am startservice -a <action> -n <component>

Składnia polecenia powiadamiania odbiornika BroadcastReceiver jest mniej więcej taka:

am broadcast -a <action> -n <component>

W większości przypadków w przypadku działań i usług nie trzeba jawnie określać akcji. Zwykle będziesz go potrzebować tylko wtedy, gdy komponent używa innego niż android.intent.action. GŁÓWNY.

Oprócz podstawowej składni, poniżej opisano, jak określić więcej danych do przekazania. Ogólnie rzecz biorąc, wszystkie wartości danych powinny być ujęte w cudzysłów.

  • -D pozwala określić URI danych.
  • -mi Lub --es pozwala określić dodatkowy ciąg.
  • --esn pozwala określić dodatkowy ciąg zerowy.
  • --ez służy do określenia dodatkowej wartości logicznej.
  • --ei służy do określenia dodatkowej liczby całkowitej.
  • --el służy do określenia długiego dodatku.
  • --ef przekaże dodatkowy float.
  • --eu przekazuje dodatkowy identyfikator URI.
  • --ecn można użyć do określenia dodatkowej nazwy komponentu.
  • -- eia ,,... przekaże wartości jako dodatkową liczbę całkowitą [].
  • --eial ,,... przekaże wartości jako listę.
  • Te same argumenty tablicowe i listowe działają również w przypadku elementów długich, zmiennoprzecinkowych i ciągów znaków. Po prostu wymień I z odpowiednią literą.
  • -F pozwala określić flagę.

Istnieje jeszcze więcej opcji zachowania, których możesz użyć, więc sprawdź wbudowaną dokumentację, aby uzyskać szczegółowe informacje.

Wyłączanie i włączanie prawie każdej aplikacji

Aplikacji systemowych na Androidzie nie można odinstalować i niestety wielu z nich nie da się również wyłączyć w Ustawieniach. Chociaż ADB nie pozwoli Ci ich odinstalować, może pomóc w ich wyłączeniu.

Najpierw upewnij się, że otrzymałeś nazwę pakietu aplikacji, którą chcesz wyłączyć. Następnie wypróbuj te polecenia. Jeśli jedna się nie powiedzie, wypróbuj następną opcję.

  • po południu wyłącz
    • Aby ponownie włączyć, użyj włącz pm
  • pm wyłącz-użytkownik --użytkownik 0
    • Aby ponownie włączyć, użyj włącz pm
  • po południu ukryj się
    • Aby ponownie włączyć, użyj po południu odkryj
  • zawiesić po południu
    • Aby ponownie włączyć, użyj odwieszenie po południu
  • pm odinstaluj -k --user 0
    • Aby ponownie włączyć, użyj pm zainstaluj istniejącą
      • Ten skutecznie odinstalowuje aplikację z Twojego profilu użytkownika. Podczas gdy polecenie ponownego włączenia powinien zadziała, nie ma gwarancji, że tak się stanie. Aby przywrócić aplikację, może być konieczne przywrócenie ustawień fabrycznych.
      • Jeśli używasz wielu profili użytkowników na swoim urządzeniu, pamiętaj o zastąpieniu 0 w powyższych poleceniach rzeczywistym identyfikatorem użytkownika, który posiadasz.

Aby dowiedzieć się więcej, zapoznaj się z naszym tutorialem na temat jak odinstalować oprogramowanie typu bloatware operatora i OEM bez dostępu do konta root.

Przechwytywanie zrzutów ekranu

Większość ROM-ów Androida oferuje dwa przydatne narzędzia powłoki - screencap i screenrecord - odpowiednio do robienia zrzutów ekranu i nagrywania czynności na ekranie. Możesz do nich zadzwonić bezpośrednio z powłoki ADB, aby przechwycić statyczny zrzut ekranu lub fragment wideo ekranu telefonu i zapisać go bezpośrednio w pamięci wewnętrznej urządzenia.

Składnia przechwytywania zrzutu ekranu jest dość prosta:

adb shell screencap /sdcard/screenshot.png

Podobnie, jeśli chcesz pobrać dynamiczny zrzut ekranu, wykonaj następujące czynności:

adb shell screenrecord /sdcard/recording.mp4

Jak można się spodziewać, narzędzie screencap jest dość proste, podczas gdy narzędzie screenrecord oferuje kilka parametrów. Opcje dla tego ostatniego są następujące:

  • --rozmiar SZEROKOŚĆ x WYSOKOŚĆ
    • Ustaw rozdzielczość pliku wideo (np. „1280x720”). Domyślnie próbuje przyjąć rozdzielczość głównego wyświetlacza urządzenia docelowego (jeśli jest obsługiwana), a jeśli nie, powraca do 1280x720.
  • --szybkość transmisji
    • Ustaw szybkość transmisji wideo w bitach na sekundę. Wartość można określić w bitach lub megabitach, np. „4000000” odpowiada „4M”.
  • --Zgłoszenie błędu
    • Możesz dodać dodatkowe informacje, takie jak nakładka sygnatury czasowej, która może być przydatna do zilustrowania błędów.
  • --limit czasowy CZAS
    • Ustaw maksymalny czas nagrywania w sekundach. Wartość domyślna/maksymalna to 180.
  • --identyfikator identyfikatora wyświetlacza
    • Określ identyfikator wyświetlacza fizycznego do zarejestrowania. Domyślny jest ustawiony na wyświetlacz główny. Zobacz „dumpsy SurfaceFlinger --display-id”, aby uzyskać prawidłowe identyfikatory wyświetlania.
  • --gadatliwy
    • Wyświetl szczegółowe informacje dotyczące sesji nagraniowej.

Możesz dodatkowo rozszerzyć możliwości wbudowanych narzędzi do przechwytywania ekranu systemu Android poprzez przepyszne. Jest to rozwiązanie do tworzenia kopii lustrzanych ekranu o otwartym kodzie źródłowym, które wykorzystuje moc ADB.

Przesyłanie danych binarnych pomiędzy komputerem a urządzeniem z systemem Android

Jeśli nie chcesz tworzyć pełnoprawnej powłoki ADB, ale chcesz usprawnić przekazywanie danych binarnych pomiędzy komputerem głównym a docelowym urządzeniem z Androidem, możesz skorzystać z exec-in I exec-out polecenia.

Pomimo ich przedłużone istnienie, polecenia exec-in i exec-out są nadal nieudokumentowane. Mogą one prowadzić do uszkodzenia plików ze względu na sposób, w jaki różne powłoki obsługują wejścia i wyjścia. Używaj ostrożnie.

Pierwszy z nich pomaga wykonać polecenie na Androidzie i podać niefiltrowane wejście konsoli jako jego parametr, natomiast drugi robi coś zupełnie odwrotnego, tj. uruchamia polecenie na Androidzie i przechwytuje jego niefiltrowane wyjście binarne przez system operacyjny hosta.

Przykład:

adb exec-out "screencap -p" > "D:\screenshot.png"

Spowoduje to użycie screencap polecenie systemu Android, aby przechwycić zrzut ekranu wyświetlacza telefonu, ale bezpośrednio zapisuje go jako zrzut ekranu.png na partycji D: komputera-hosta (pod warunkiem, że działa na nim system Windows). Z drugiej strony,

adb exec-in"cd /sdcard && tar -xf -" < "D:\backup.tar"

Spowoduje to wyodrębnienie zawartości pliku Backup.tar przechowywanego na partycji D: komputera hosta (z systemem Windows) w katalogu głównym pamięci wewnętrznej urządzenia z systemem Android.


ADB to niezwykle potężne narzędzie, które może zrobić o wiele więcej niż tylko to, co opisano powyżej. Polecenia opisane w tym artykule stanowią jedynie przydatny punkt wyjścia. Aby uzyskać bardziej zaawansowane użycie, sprawdź polecenia takie jak cmd -l aby zobaczyć różne usługi, z którymi możesz wejść w interakcję i ls -l /system/bin aby zobaczyć różne pliki wykonywalne poleceń dostępne w pamięci ROM systemu Android.

Aby zapoznać się z innymi wycieczkami i biletami na Androida, zapoznaj się z naszymi przewodnikami na temat jak zrootować swój smartfon z Androidem, jak zainstalować odzyskiwanie TWRP, I jak zainstalować niestandardową pamięć ROM na urządzeniu z Androidem.