Android
ADB Shell
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).
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'
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
- Auswahlliste mehrerer interessanter Ereignisse ADB Shell Input Events
- Referenzdokumentation https://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_POWER .
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
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.
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
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'
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