Suche…


Einführung

adb shell öffnet eine Linux-Shell in einem Zielgerät oder Emulator. Es ist die leistungsfähigste und vielseitigste Möglichkeit, ein Android-Gerät über adb zu steuern.

Dieses Thema wurde von ADB (Android Debug Bridge) getrennt, da die Anzahl der Beispiele erreicht wurde, von denen viele den Befehl adb shell .

Syntax

  • Adb-Shell [-e Escape] [-n] [-Tt] [-x] [Befehl]

Parameter

Parameter Einzelheiten
-e Fluchtzeichen oder "none" wählen; Standardeinstellung "~"
-n lese nicht von stdin
-T Deaktivieren Sie die PTY-Zuordnung
-t PTY-Zuordnung erzwingen
-x Deaktivieren Sie Remote-Exit-Codes und stdout / stderr-Trennung

Senden Sie Text, drücken Sie die Taste und berühren Sie Ereignisse über ADB an das Android-Gerät

Führen Sie den folgenden Befehl aus, um den Text in eine Ansicht mit einem Fokus einzufügen (wenn er Texteingabe unterstützt).

6,0

Senden Sie Text auf SDK 23+

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

Wenn Sie bereits über adb mit Ihrem Gerät verbunden sind:

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

Senden Sie Text vor dem SDK 23

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

Leerzeichen werden nicht als Eingabe akzeptiert, sondern durch% s ersetzt.

Ereignisse senden

So simulieren Sie das Drücken der Hardwaretaste

adb shell input keyevent 26

oder alternativ

adb shell input keyevent POWER

Selbst wenn Sie keinen Hardwareschlüssel haben, können Sie immer noch ein keyevent , um die entsprechende Aktion auszuführen

adb shell input keyevent CAMERA

Berührungsereignis als Eingabe senden

adb shell input tap Xpoint Ypoint

Swipe-Event als Eingabe senden

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

* DAUER ist optional, Standard = 300ms. Quelle

Erhalten Sie X- und Y-Punkte, indem Sie die Zeigerposition in der Entwickleroption aktivieren.

ADB-Beispielshellskript

Um ein Skript in Ubuntu auszuführen, klicken Sie auf Create script.sh, klicken Sie mit der rechten Maustaste auf die Datei, fügen Sie die Lese- / Schreibberechtigung hinzu und aktivieren Sie das Kontrollkästchen Ausführen als Programm zulassen .

Öffnen Sie den Terminalemulator und führen Sie den Befehl ./script.sh aus

Script.sh

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

Für eine umfassende Liste der Veranstaltungsnummern

Pakete auflisten

Druckt alle Pakete, optional nur diejenigen, deren Paketname den Text in <FILTER> enthält.

adb shell pm list packages [options] <FILTER>

All <FILTER>

adb shell pm list packages

Attribute:

-f , um die zugehörige Datei -f .

-i Informationen zu den Paketen finden Sie im Installationsprogramm.

-u um auch deinstallierte Pakete aufzunehmen.

-u auch deinstallierte Pakete.

Attribute, die filtern:

-d für deaktivierte Pakete.

-e für aktivierte Pakete.

-s für Systempakete.

-3 für Pakete von Drittanbietern.

--user <USER_ID> für einen bestimmten Benutzerbereich zum Abfragen.

Erteilen und Widerrufen von API 23+ -Berechtigungen

Ein Einzeiler, mit dem verwundbare Berechtigungen erteilt oder widerrufen werden.

  • Gewährung

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

    adb shell pm revoke <sample.package.id> android.permission.<PERMISSION_NAME>
    
  • Alle Laufzeitberechtigungen bei der Installation erteilen (-g)

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

Anwendungsdaten drucken

Dieser Befehl druckt alle relevanten Anwendungsdaten:

  • Versionscode
  • Versionsname
  • erteilte Berechtigungen (Android API 23+)
  • usw..
adb shell dumpsys package <your.package.id>

Aufzeichnen der Anzeige

4.4

Aufzeichnen der Anzeige von Geräten, auf denen Android 4.4 (API Level 19) und höher ausgeführt wird:

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

(drücken Sie Strg-C, um die Aufnahme zu stoppen)

Laden Sie die Datei vom Gerät herunter:

adb pull /sdcard/demo.mp4

Hinweis: Stoppen Sie die Bildschirmaufnahme, indem Sie die Tastenkombination Strg-C drücken. Andernfalls wird die Aufnahme automatisch nach drei Minuten oder nach der --time-limit .

adb shell screenrecord --size <WIDTHxHEIGHT>

Legt die Videogröße fest: 1280x720. Der Standardwert ist die native Anzeigeauflösung des Geräts (falls unterstützt), 1280x720, falls nicht. Um optimale Ergebnisse zu erzielen, verwenden Sie eine vom AVC-Encoder (Advanced Video Coding) Ihres Geräts unterstützte Größe.


adb shell screenrecord --bit-rate <RATE>

Legt die Video-Bitrate für das Video in Megabit pro Sekunde fest. Der Standardwert ist 4 MBit / s. Sie können die Bitrate erhöhen, um die Videoqualität zu verbessern. Dies führt jedoch zu größeren Filmdateien. Im folgenden Beispiel wird die Aufzeichnungsbitrate auf 5 MBit / s festgelegt:

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

adb shell screenrecord --time-limit <TIME>

Legt die maximale Aufnahmezeit in Sekunden fest. Der voreingestellte und maximale Wert beträgt 180 (3 Minuten).


adb shell screenrecord --rotate

Dreht die Ausgabe um 90 Grad. Diese Funktion ist experimentell.


adb shell screenrecord --verbose

Zeigt Protokollinformationen auf dem Befehlszeilenbildschirm an. Wenn Sie diese Option nicht festlegen, zeigt das Dienstprogramm während der Ausführung keine Informationen an.

Hinweis: Dies funktioniert möglicherweise auf einigen Geräten nicht.

4.4

Der Bildschirmaufzeichnungsbefehl ist nicht mit Android-Versionen vor 4.4 kompatibel

Der screenrecord-Befehl ist ein Shell-Dienstprogramm zum Aufzeichnen der Anzeige von Geräten, auf denen Android 4.4 (API Level 19) und höher ausgeführt wird. Das Dienstprogramm zeichnet die Bildschirmaktivität in einer MPEG-4-Datei auf.

Ändern der Dateiberechtigungen mit dem Befehl chmod

Beachten Sie, dass Ihr Gerät verwurzelt sein muss, um die Dateiübertragung zu ändern. su binary wird nicht mit werkseitig gelieferten Geräten geliefert !

Konvention:

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

Numerische Berechtigung, erstellt aus Benutzer-, Gruppen- und Weltabschnitten.

Wenn Sie beispielsweise die Datei so ändern möchten, dass sie von allen lesbar, schreibbar und ausführbar ist, ist dies Ihr Befehl:

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

Oder

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

wenn Sie beabsichtigen, Berechtigungen dafür zu verweigern.

1. Stelle - Gibt die Benutzererlaubnis an, 2. Stelle - Gibt die Gruppenerlaubnis an, 3. Stelle - Gibt die Weltberechtigung (andere) an.

Zugriffsberechtigungen:

--- :   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 / Uhrzeit über adb einstellen

6,0

Das MMDDhhmm[[CC]YY][.ss] SET-Format ist MMDDhhmm[[CC]YY][.ss] , das ist (jeweils 2 Ziffern).

Um beispielsweise den 17. Juli um 10:10 Uhr einzustellen, ohne das aktuelle Jahr zu ändern, geben Sie Folgendes ein:

adb shell 'date 07171010.00'

Tipp 1: Die Datumsänderung wird nicht sofort angezeigt, und eine merkliche Änderung wird erst nach der nächsten Uhr der Systemuhr vorgenommen.
Sie können eine Aktualisierung erzwingen, indem TIME_SET Ihrem Aufruf eine TIME_SET Intent-Broadcast TIME_SET :

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

Tipp 2: So synchronisieren Sie die Uhr von Android mit Ihrem lokalen Computer:

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 Tipps zusammen:

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

Das Standard-SET-Format ist 'JJJJMMTT.HHmmss'.

adb shell 'date -s 20160117.095930'

Tipp: So synchronisieren Sie die Uhr von Android mit Ihrem lokalen (Linux-basierten) Computer:

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

Öffnen Sie die Entwickleroptionen

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

Navigiert mit Ihrem Gerät / Emulator zum Abschnitt " Developer Options ".

Generieren einer "Boot Complete" -Übertragung

Dies ist relevant für Apps, die einen BootListener implementieren. Testen Sie Ihre App, indem Sie Ihre App beenden und testen Sie dann mit:

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

(Ersetzen Sie your.package/your.app.BootListener durch die richtigen Werte).

Anzeigen externer / sekundärer Speicherinhalte

Inhalt anzeigen:

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

Pfad anzeigen:

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

Beenden Sie einen Prozess in einem Android-Gerät

Manchmal läuft das Logcat von Android unendlich oft mit Fehlern, die auf einen Prozess zurückzuführen sind, der nicht Ihnen gehört, die Batterie entleert oder nur das Debuggen Ihres Codes erschwert.

Um das Problem ohne Neustart des Geräts zu beheben, können Sie den Prozess, der das Problem verursacht, lokalisieren und beenden.

Von Logcat

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

Beachten Sie die Prozessnummer: 1550

Jetzt können wir eine Shell öffnen und den Prozess beenden. Beachten Sie, dass wir den root Prozess nicht beenden können.

adb shell

In der Shell können wir mehr über den Prozess überprüfen

ps -x | grep 1550

und töte es, wenn wir wollen:

kill -9 1550


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow