Sök…


Introduktion

adb shell öppnar ett Linux-skal i en målenhet eller emulator. Det är det mest kraftfulla och mångsidiga sättet att kontrollera en Android-enhet via adb .

Detta ämne delades upp från ADB (Android Debug Bridge) på grund av att gränsen för exempel uppnåddes, varav många involverade adb shell .

Syntax

  • adb shell [-e flykt] [-n] [-Tt] [-x] [kommando]

parametrar

Parameter detaljer
-e välj flyktecken, eller "ingen"; standard '~'
-n läs inte från stdin
-T inaktivera PTY-allokering
-t tvinga PTY-allokering
-x inaktivera externa utgångskoder och stdout / stderr-separering

Skicka text, knapptryckt och tryck på händelser till Android-enhet via ADB

kör följande kommando för att infoga texten i en vy med fokus (om den stöder textinmatning)

6,0

Skicka text på SDK 23+

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

Om du redan är ansluten till din enhet via adb :

input text 'Paste text on Android Device'
6,0

Skicka text före SDK 23

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

Mellanslag accepteras inte som ingång, ersätt dem med% s.

Skicka händelser

För att simulera genom att trycka på hårdvaruknappen

adb shell input keyevent 26

eller alternativt

adb shell input keyevent POWER

Även om du inte har en hårdvaruknapp kan du fortfarande använda en keyevent att utföra motsvarande åtgärd

adb shell input keyevent CAMERA

Skicka beröringshändelse som inmatning

adb shell input tap Xpoint Ypoint

Skicka svephändelse som inmatning

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

* DURATION är valfritt, standard = 300 ms. källa

Få X- och Y-poäng genom att aktivera pekarplatsen i utvecklaralternativet.

ADB-provskalskript

För att köra ett skript i Ubuntu, Skapa script.sh högerklicka på filen och lägg till läs / skriv behörighet och kryssa för att köra fil som program .

Öppna terminalemulator och kör kommandot ./script.sh

Script.sh

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

För en omfattande lista över evenemangsnummer

Lista paket

Skriver ut alla paket, eventuellt bara de vars paketnamn innehåller texten i <FILTER>.

adb shell pm list packages [options] <FILTER>

All <FILTER>

adb shell pm list packages

Egenskaper:

-f att se deras tillhörande fil.

-i Se installationsprogrammet för paketen.

-u att även inkludera avinstallerade paket.

-u Inkludera också avinstallerade paket.

Attribut som filtrerar:

-d för inaktiverade paket.

-e för aktiverade paket.

-s för systempaket.

-3 för tredjepartspaket.

--user <USER_ID> för ett specifikt användarutrymme att fråga.

Bevilja & återkalla API 23+ -behörigheter

En enlinje som hjälper till att bevilja eller återkalla sårbara behörigheter.

  • beviljande

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

    adb shell pm revoke <sample.package.id> android.permission.<PERMISSION_NAME>
    
  • Ge alla körtidstillstånd i taget vid installationen (-g)

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

Skriv ut applikationsdata

Detta kommando skriver ut alla relevanta applikationsdata:

  • versionskod
  • versionens namn
  • beviljade behörigheter (Android API 23+)
  • etc..
adb shell dumpsys package <your.package.id>

Spela in skärmen

4,4

Spela in visningen av enheter med Android 4.4 (API-nivå 19) och högre:

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

(tryck Ctrl-C för att stoppa inspelningen)

Ladda ner filen från enheten:

adb pull /sdcard/demo.mp4

Obs: Stoppa skärminspelningen genom att trycka på Ctrl-C, annars stoppar inspelningen automatiskt vid tre minuter eller tidsgränsen inställd med --time-limit .

adb shell screenrecord --size <WIDTHxHEIGHT>

Ställer in videostorleken: 1280x720. Standardvärdet är enhetens ursprungliga skärmupplösning (om det stöds), 1280x720 om inte. För bästa resultat, använd en storlek som stöds av enhetens Advanced Video Coding (AVC) kodare.


adb shell screenrecord --bit-rate <RATE>

Ställer in videohastigheten för videon, i megabit per sekund. Standardvärdet är 4 Mbps. Du kan öka bithastigheten för att förbättra videokvaliteten, men om du gör det resulterar det i större filmfiler. Följande exempel sätter inspelningsbithastigheten till 5 Mbps:

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

adb shell screenrecord --time-limit <TIME>

Ställer in maximal inspelningstid, i sekunder. Standard- och maxvärdet är 180 (3 minuter).


adb shell screenrecord --rotate

Roterar utgången 90 grader. Den här funktionen är experimentell.


adb shell screenrecord --verbose

Visar logginformation på kommandoradsskärmen. Om du inte ställer in det här alternativet, visar verktyget inte information under körning.

Obs: Det här kanske inte fungerar på vissa enheter.

4,4

Skärminspelningskommandot är inte kompatibelt med Android-versioner före 4.4

Screenrecord-kommandot är ett skalverktyg för att spela in visningen av enheter som kör Android 4.4 (API-nivå 19) och högre. Verktyget registrerar skärmaktivitet till en MPEG-4-fil.

Ändra filtillstånd med kommando chmod

Observera att för att ändra filpremission måste din enhet vara rotad, su binär levereras inte med fabriksskickade enheter!

Konvent:

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

Numeriskt tillstånd konstruerat från användar-, grupp- och världssektioner.

Om du till exempel vill ändra fil till att vara läsbar, skrivbar och körbar av alla kommer detta att vara ditt kommando:

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

Eller

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

om du avser att neka några behörigheter för det.

1: a siffran - specificerar användartillstånd, 2: a siffran - anger grupptillstånd, 3: e siffran - anger världen (andra) tillstånd.

Åtkomstbehörigheter:

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

Ställ in datum / tid via adb

6,0

Standard SET-format är MMDDhhmm[[CC]YY][.ss] , det är (2 siffror vardera)

Om du till exempel ställer in 17 juli kl 10:10 utan att ändra det aktuella året skriver du:

adb shell 'date 07171010.00'

Tips 1: datumändringen återspeglas inte omedelbart och en märkbar förändring kommer att ske först efter att systemklockan går vidare till nästa minut.
Du kan tvinga fram en uppdatering genom att bifoga en TIME_SET avsikt som sänds till ditt samtal, på så sätt:

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

Tips 2: för att synkronisera Android: s klocka med din lokala maskin:

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"

Båda tipsen tillsammans:

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

Standard SET-format är 'ÅÅÅÅMMDD.HHmmss'

adb shell 'date -s 20160117.095930'

Tips: för att synkronisera Android: s klocka med din lokala (linuxbaserade) maskin:

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

Öppna utvecklaralternativ

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

Navigerar din enhet / emulator till avsnittet för Developer Options .

Genererar en "Boot Complete" -sändning

Detta är relevant för appar som implementerar en BootListener . Testa din app genom att döda din app och testa sedan med:

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

(ersätt your.package/your.app.BootListener med rätt värde).

Visa externt / sekundärt lagringsinnehåll

Visa innehåll:

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

Visa sökväg:

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

döda en process i en Android-enhet

Ibland körs Android's logcat oändligt med fel som kommer från någon process som du inte äger, tappar batteri eller bara gör det svårt att felsöka din kod.

Ett bekvämt sätt att lösa problemet utan att starta om enheten är att hitta och döda processen som orsakar problemet.

Från Logcat

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

Lägg märke till processnummer: 1550

Nu kan vi öppna ett skal och döda processen. Observera att vi inte kan döda root .

adb shell

inuti skalet kan vi kontrollera mer om processen med

ps -x | grep 1550

och döda det om vi vill:

kill -9 1550


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow