Szukaj…


Wprowadzenie

adb shell otwiera adb shell Linux w urządzeniu docelowym lub emulatorze. Jest to najpotężniejszy i wszechstronny sposób sterowania urządzeniem z Androidem za pomocą adb .

Temat ten został oddzielony od ADB (Android Debug Bridge) z powodu osiągnięcia limitu przykładów, z których wiele dotyczyło polecenia adb shell .

Składnia

  • adb shell [-e escape] [-n] [-Tt] [-x] [polecenie]

Parametry

Parametr Detale
-mi wybierz znak ucieczki lub „brak”; domyślne „~”
-n nie czytaj ze standardowego
-T wyłącz przydział PTY
-t wymuś przydział PTY
-x wyłącz kody zdalnego wyjścia i separację stdout / stderr

Wysyłaj tekst, naciśnięte klawisze i dotykaj zdarzeń do urządzenia z systemem Android za pośrednictwem ADB

wykonaj następujące polecenie, aby wstawić tekst do widoku z fokusem (jeśli obsługuje wprowadzanie tekstu)

6.0

Wyślij tekst na SDK 23+

adb shell "input keyboard text 'Paste text on Android Device'"

Jeśli jest już podłączony do urządzenia przez adb :

input text 'Paste text on Android Device'
6.0

Wyślij tekst przed pakietem SDK 23

adb shell "input keyboard text 'Paste%stext%son%sAndroid%sDevice'"

Spacje nie są akceptowane jako dane wejściowe, zamień je na% s.

Wysyłaj wydarzenia

Aby symulować naciśnięcie klawisza sprzętowego zasilania

adb shell input keyevent 26

lub alternatywnie

adb shell input keyevent POWER

Nawet jeśli nie masz klucza sprzętowego, nadal możesz użyć keyevent do wykonania równoważnej akcji

adb shell input keyevent CAMERA

Wyślij zdarzenie dotykowe jako dane wejściowe

adb shell input tap Xpoint Ypoint

Wyślij zdarzenie machnięcia jako dane wejściowe

adb shell input swipe Xpoint1 Ypoint1 Xpoint2 Ypoint2 [DURATION*]

* CZAS TRWANIA jest opcjonalny, domyślnie = 300 ms. źródło

Zdobądź punkty X i Y, włączając lokalizację wskaźnika w opcji programisty.

Przykładowy skrypt powłoki ADB

Aby uruchomić skrypt w Ubuntu, Utwórz skrypt.sh kliknij plik prawym przyciskiem myszy i dodaj uprawnienia do odczytu / zapisu i zaznacz pole wyboru zezwól na uruchamianie pliku jako programu .

Otwórz emulator terminala i uruchom komendę ./script.sh

Script.sh

 for (( c=1; c<=5; c++ ))
    do  
       adb shell input tap X Y
       echo "Clicked $c times"
       sleep 5s
    done

Aby uzyskać pełną listę numerów wydarzeń

Wyświetl listę pakietów

Drukuje wszystkie paczki, opcjonalnie tylko te, których nazwa paczki zawiera tekst w <FILTER>.

adb shell pm list packages [options] <FILTER>

All <FILTER>

adb shell pm list packages

Atrybuty:

-f aby zobaczyć ich powiązany plik.

-i Zobacz instalator pakietów.

-u aby uwzględnić również odinstalowane pakiety.

-u także odinstalowane pakiety.

Atrybuty, które filtrują:

-d dla wyłączonych pakietów.

-e dla włączonych pakietów.

-s dla pakietów systemowych.

-3 dla pakietów stron trzecich.

--user <USER_ID> dla określonej przestrzeni użytkownika do zapytania.

Udzielanie i odwoływanie uprawnień API 23+

Jednowierszowy, który pomaga udzielać lub odwoływać wrażliwe uprawnienia.

  • udzielanie

    adb shell pm grant <sample.package.id> android.permission.<PERMISSION_NAME>
    
  • odwołanie

    adb shell pm revoke <sample.package.id> android.permission.<PERMISSION_NAME>
    
  • Przyznawanie wszystkich uprawnień w czasie wykonywania podczas instalacji (-g)

    adb install -g /path/to/sample_package.apk
    

Wydrukuj dane aplikacji

To polecenie wyświetla wszystkie istotne dane aplikacji:

  • kod wersji
  • nazwa wersji
  • przyznane uprawnienia (Android API 23+)
  • itp..
adb shell dumpsys package <your.package.id>

Nagrywanie wyświetlacza

4.4

Rejestrowanie wyświetlania urządzeń z Androidem 4.4 (poziom API 19) i wyższych:

adb shell screenrecord [options] <filename>
adb shell screenrecord /sdcard/demo.mp4

(naciśnij Ctrl-C, aby zatrzymać nagrywanie)

Pobierz plik z urządzenia:

adb pull /sdcard/demo.mp4

Uwaga: Zatrzymaj nagrywanie ekranu, naciskając Ctrl-C, w przeciwnym razie nagrywanie zatrzyma się automatycznie po trzech minutach lub w limicie czasu ustawionym na --time-limit .

adb shell screenrecord --size <WIDTHxHEIGHT>

Ustawia rozmiar wideo: 1280 x 720. Wartością domyślną jest natywna rozdzielczość wyświetlania urządzenia (jeśli jest obsługiwana), 1280 x 720, jeśli nie. Aby uzyskać najlepsze wyniki, użyj rozmiaru obsługiwanego przez koder Advanced Video Coding (AVC) urządzenia.


adb shell screenrecord --bit-rate <RATE>

Ustawia szybkość transmisji wideo dla wideo, w megabitach na sekundę. Wartość domyślna to 4 Mb / s. Możesz zwiększyć przepływność, aby poprawić jakość wideo, ale spowoduje to większe pliki filmowe. Poniższy przykład ustawia szybkość transmisji nagrania na 5 Mb / s:

adb shell screenrecord --bit-rate 5000000 /sdcard/demo.mp4

adb shell screenrecord --time-limit <TIME>

Ustawia maksymalny czas nagrywania w sekundach. Wartość domyślna i maksymalna to 180 (3 minuty).


adb shell screenrecord --rotate

Obraca moc wyjściową o 90 stopni. Ta funkcja jest eksperymentalna.


adb shell screenrecord --verbose

Wyświetla informacje z dziennika na ekranie wiersza polecenia. Jeśli ta opcja nie zostanie ustawiona, narzędzie nie wyświetla żadnych informacji podczas działania.

Uwaga: To może nie działać na niektórych urządzeniach.

4.4

Polecenie nagrywania ekranu nie jest kompatybilne z wersjami Androida wcześniejszymi niż 4.4

Polecenie screenrecord to narzędzie powłoki do rejestrowania wyświetlania urządzeń z Androidem 4.4 (poziom API 19) i wyższych. Narzędzie rejestruje aktywność ekranu do pliku MPEG-4.

Zmiana uprawnień do plików za pomocą komendy chmod

Zauważ, że aby zmienić ustawienia plików, urządzenie musi być zrootowane, a plik binarny su nie jest dostarczany z fabrycznie dostarczonymi urządzeniami!

Konwencja:

adb shell su -c "chmod <numeric-permisson> <file>"

Uprawnienie numeryczne zbudowane z sekcji użytkownika, grupy i świata.

Na przykład, jeśli chcesz zmienić plik na czytelny, zapisywalny i wykonywalny dla wszystkich, będzie to Twoje polecenie:

adb shell su -c "chmod 777 <file-path>"

Lub

adb shell su -c "chmod 000 <file-path>"

jeśli zamierzasz odmówić jakichkolwiek uprawnień do tego.

Pierwsza cyfra - określa uprawnienia użytkownika, druga cyfra - określa uprawnienia grupy, trzecia cyfra - określa uprawnienia świata (innych).

Uprawnienia dostępu:

--- :   binary value:   000,  octal value: 0 (none)
--x :   binary value:   001,  octal value: 1 (execute)
-w- :   binary value:   010,  octal value: 2 (write)
-wx :   binary value:   011,  octal value: 3 (write, execute)
r-- :   binary value:   100,  octal value: 4 (read)
r-x :   binary value:   101,  octal value: 5 (read, execute)
rw- :   binary value:   110,  octal value: 6 (read, write)
rwx :   binary value:   111,  octal value: 7 (read, write, execute)

Ustaw datę / godzinę za pomocą adb

6.0

Domyślny format SET to MMDDhhmm[[CC]YY][.ss] , czyli (po 2 cyfry)

Na przykład, aby ustawić 17 lipca o 10:10, bez zmiany bieżącego roku, wpisz:

adb shell 'date 07171010.00'

Wskazówka 1: zmiana daty nie zostanie odzwierciedlona natychmiast, a zauważalna zmiana nastąpi dopiero po przejściu zegara systemowego do następnej minuty.
Możesz wymusić aktualizację, dołączając do TIME_SET zamiar TIME_SET :

adb shell 'date 07171010.00 ; am broadcast -a android.intent.action.TIME_SET'

Wskazówka 2: aby zsynchronizować zegar Androida z maszyną lokalną:

Linux:

adb shell date `date +%m%d%H%M%G.%S`

Windows (PowerShell):

$currentDate = Get-Date -Format "MMddHHmmyyyy.ss" # Android's preferred format
adb shell "date $currentDate"

Obie wskazówki razem:

adb shell 'date `date +%m%d%H%M%G.%S` ; am broadcast -a android.intent.action.TIME_SET'
6.0

Domyślny format SET to „RRRRMMDD.GGmmmm”

adb shell 'date -s 20160117.095930'

Wskazówka: aby zsynchronizować zegar Androida z maszyną lokalną (opartą na systemie Linux):

adb shell date -s `date +%G%m%d.%H%M%S`

Otwórz Opcje programisty

adb shell am start -n com.android.settings/.DevelopmentSettings

Poprowadzi Twoje urządzenie / emulator do sekcji Developer Options .

Generowanie transmisji „Boot Complete”

Dotyczy to aplikacji, które implementują BootListener . Przetestuj aplikację, zabijając ją, a następnie przetestuj za pomocą:

adb shell am broadcast -a android.intent.action.BOOT_COMPLETED -c android.intent.category.HOME -n your.app/your.app.BootListener

(zastąp your.package/your.app.BootListener prawidłowymi wartościami).

Wyświetl zawartość pamięci zewnętrznej / dodatkowej

Wyświetl zawartość:

adb shell ls \$EXTERNAL_STORAGE
adb shell ls \$SECONDARY_STORAGE

Wyświetl ścieżkę:

adb shell echo \$EXTERNAL_STORAGE
adb shell echo \$SECONDARY_STORAGE

zabij proces w urządzeniu z Androidem

Czasami logcat systemu Android działa nieskończenie z błędami pochodzącymi z jakiegoś procesu, który nie jest twój, wyczerpuje baterię lub po prostu utrudnia debugowanie kodu.

Wygodnym sposobem rozwiązania problemu bez ponownego uruchamiania urządzenia jest zlokalizowanie i zabicie procesu powodującego problem.

Od Logcat

03-10 11:41:40.010 1550-1627/? E/SomeProcess: ....

zauważ numer procesu: 1550

Teraz możemy otworzyć powłokę i zabić proces. Pamiętaj, że nie możemy zabić procesu root .

adb shell

wewnątrz powłoki możemy sprawdzić więcej na temat tego procesu

ps -x | grep 1550

i zabijmy, jeśli chcemy:

kill -9 1550


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow