Android
adb-skal
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)
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'
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
- kortlista med flera intressanta händelser ADB Shell Input Events
- referensdokumentation https://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_POWER .
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
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.
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
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'
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