Zoeken…


Invoering

adb shell opent een Linux-shell in een doelapparaat of emulator. Het is de meest krachtige en veelzijdige manier om een Android-apparaat via adb te bedienen.

Dit onderwerp is gescheiden van ADB (Android Debug Bridge) vanwege het bereiken van de limiet van voorbeelden, waarvan er veel een adb shell opdracht adb shell .

Syntaxis

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

parameters

Parameter Details
-e kies escape karakter, of "none"; standaard '~'
-n niet lezen van stdin
-T PTY-toewijzing uitschakelen
-t PTY-toewijzing afdwingen
-X externe exit-codes en stdout / stderr-scheiding uitschakelen

Stuur tekst, toets ingedrukt en raak evenementen aan naar Android-apparaat via ADB

voer de volgende opdracht uit om de tekst in een weergave met een focus in te voegen (als het tekstinvoer ondersteunt)

6.0

Stuur tekst op SDK 23+

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

Indien al verbonden met uw apparaat via adb :

input text 'Paste text on Android Device'
6.0

Tekst verzenden vóór SDK 23

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

Spaties worden niet geaccepteerd als invoer, vervang ze door% s.

Evenementen verzenden

Simuleren door op de hardwaretoets te drukken

adb shell input keyevent 26

Of anders

adb shell input keyevent POWER

Zelfs als u geen hardwaresleutel hebt, kunt u nog steeds een keyevent gebruiken om de equivalente actie uit te voeren

adb shell input keyevent CAMERA

Stuur aanraakgebeurtenis als invoer

adb shell input tap Xpoint Ypoint

Verzend veeggebeurtenis als invoer

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

* DUUR is optioneel, standaard = 300 ms. bron

Ontvang X- en Y-punten door de pointerlocatie in de ontwikkelaaroptie in te schakelen.

ADB-voorbeeld shellscript

Als u een script in Ubuntu wilt uitvoeren, maakt u script.sh met de rechtermuisknop op het bestand en voegt u lees- / schrijfrechten toe en vinkt u het bestand als programma toe te staan aan .

Open terminal-emulator en voer de opdracht ./script.sh uit

Script.sh

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

Voor een uitgebreide lijst met evenementnummers

Lijst pakketten

Drukt alle pakketten af, optioneel alleen pakketten waarvan de pakketnaam de tekst in <FILTER> bevat.

adb shell pm list packages [options] <FILTER>

All <FILTER>

adb shell pm list packages

attributen:

-f om het bijbehorende bestand te bekijken.

-i Raadpleeg het installatieprogramma voor de pakketten.

-u om ook verwijderde pakketten op te nemen.

-u ook verwijderde pakketten op.

Attributen die filteren:

-d voor uitgeschakelde pakketten.

-e voor ingeschakelde pakketten.

-s voor systeempakketten.

-3 voor pakketten van derden.

--user <USER_ID> voor een specifieke op te vragen gebruikersruimte.

API 23+ machtigingen verlenen en intrekken

Een one-liner die helpt bij het verlenen of intrekken van kwetsbare machtigingen.

  • toekenning

    adb shell pm grant <sample.package.id> android.permission.<PERMISSION_NAME>
    
  • intrekken

    adb shell pm revoke <sample.package.id> android.permission.<PERMISSION_NAME>
    
  • Alle runtime-machtigingen tegelijkertijd tijdens de installatie verlenen (-g)

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

Applicatiegegevens afdrukken

Met deze opdracht worden alle relevante applicatiegegevens afgedrukt:

  • versie code
  • versienaam
  • verleende machtigingen (Android API 23+)
  • enz..
adb shell dumpsys package <your.package.id>

Het display opnemen

4.4

De weergave van apparaten met Android 4.4 (API-niveau 19) en hoger opnemen:

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

(druk op Ctrl-C om de opname te stoppen)

Download het bestand van het apparaat:

adb pull /sdcard/demo.mp4

Opmerking: Stop de schermopname door op Ctrl-C te drukken, anders stopt de opname automatisch na drie minuten of de tijdslimiet ingesteld door - --time-limit .

adb shell screenrecord --size <WIDTHxHEIGHT>

Stelt het videoformaat in: 1280x720. De standaardwaarde is de native schermresolutie van het apparaat (indien ondersteund), 1280x720 indien niet. Gebruik voor de beste resultaten een grootte die wordt ondersteund door de AVC-encoder (Advanced Video Coding) van uw apparaat.


adb shell screenrecord --bit-rate <RATE>

Stelt de videobitsnelheid voor de video in, in megabits per seconde. De standaardwaarde is 4 Mbps. U kunt de bitsnelheid verhogen om de videokwaliteit te verbeteren, maar dit resulteert in grotere filmbestanden. In het volgende voorbeeld wordt de opnamebitsnelheid ingesteld op 5 Mbps:

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

adb shell screenrecord --time-limit <TIME>

Stelt de maximale opnametijd in seconden in. De standaard en maximale waarde is 180 (3 minuten).


adb shell screenrecord --rotate

Roteert de uitvoer 90 graden. Deze functie is experimenteel.


adb shell screenrecord --verbose

Toont loginformatie op het opdrachtregelscherm. Als u deze optie niet instelt, geeft het hulpprogramma tijdens het uitvoeren geen informatie weer.

Opmerking: dit werkt mogelijk niet op sommige apparaten.

4.4

De opdracht voor schermopname is niet compatibel met Android-versies van 4.4

De opdracht screenrecord is een shell-hulpprogramma voor het opnemen van de weergave van apparaten met Android 4.4 (API level 19) en hoger. Het hulpprogramma registreert schermactiviteit in een MPEG-4-bestand.

Bestandsrechten wijzigen met de opdracht chmod

Merk op dat uw apparaat geroot moet zijn om bestandsrechten te kunnen wijzigen, su binary wordt niet geleverd met in de fabriek verzonden apparaten!

conventie:

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

Numerieke toestemming opgebouwd uit gebruikers-, groeps- en wereldsecties.

Als u bijvoorbeeld wilt dat het bestand leesbaar, schrijfbaar en uitvoerbaar is voor iedereen, is dit uw opdracht:

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

Of

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

als u van plan bent om machtigingen te weigeren.

1e cijfer - geeft gebruikersmachtiging aan, 2e cijfer - geeft groepstoestemming aan, 3e cijfer - geeft wereld (anderen) toestemming aan.

Toegangsrechten:

--- :   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)

Datum / tijd instellen via adb

6.0

Standaard SET-formaat is MMDDhhmm[[CC]YY][.ss] , dat is (elk 2 cijfers)

Als u bijvoorbeeld 17 juli 10:10 uur wilt instellen, zonder het huidige jaar te wijzigen, typt u:

adb shell 'date 07171010.00'

Tip 1: de datumwijziging wordt niet onmiddellijk weergegeven en een merkbare wijziging vindt pas plaats nadat de systeemklok naar de volgende minuut is gegaan.
Je kunt een update afdwingen door een TIME_SET intentie-uitzending als volgt aan je oproep toe te TIME_SET :

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

Tip 2: om de klok van Android te synchroniseren met uw lokale machine:

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"

Beide tips samen:

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

Standaard SET-formaat is 'JJJJMMDD.HHmmss'

adb shell 'date -s 20160117.095930'

Tip: om de klok van Android te synchroniseren met uw lokale (linux-gebaseerde) machine:

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

Open ontwikkelaarsopties

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

Navigeert met uw apparaat / emulator naar het gedeelte Developer Options .

Een "Boot Complete" -uitzending genereren

Dit is relevant voor apps die een BootListener implementeren. Test uw app door uw app te doden en test vervolgens met:

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

(vervang your.package/your.app.BootListener door de juiste waarden).

Bekijk externe / secundaire opslaginhoud

Bekijk inhoud:

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

Bekijk pad:

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

een proces binnen een Android-apparaat doden

Soms draait de logcat van Android oneindig met fouten die afkomstig zijn van een proces dat niet van jou is, waardoor de batterij leegloopt of het moeilijk is om je code te debuggen.

Een handige manier om het probleem op te lossen zonder het apparaat opnieuw op te starten, is het proces dat het probleem veroorzaakt te lokaliseren en te beëindigen.

Van Logcat

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

let op het procesnummer: 1550

Nu kunnen we een shell openen en het proces doden. Merk op dat we niet kunnen doden root proces.

adb shell

in de shell kunnen we meer controleren over het proces met behulp van

ps -x | grep 1550

en dood het als we willen:

kill -9 1550


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow