Ich habe gerade meine glänzenden neuen Wileyfox Swift - und bevor sie setzen verwenden Ich möchte oem unlock
und Wurzel es (wie ich in der Regel mit neuen Geräten zu tun;) Das Problem ist, obwohl USB-Debugging auf dem Gerät aktiviert ist, und eine entsprechende Zeile in /etc/udev/rules.d/51-android.rules
existiert wird das Gerät von nicht gesehen adb devices
.
Ich weiß, dass auf dieser Website mehrere Antworten verstreut sind, aber sie sind entweder schwer zu finden, decken nur ein bestimmtes Gerät ab oder decken nicht alle Schritte ab, die ich schließlich benötigt habe. Daher nehme ich dies zum Anlass, eine kanonische, geräteunabhängige Frage zu stellen, und gebe im Folgenden eine ausführliche Antwort:
Wie kann ich mein Android-Gerät adb
unter Linux anzeigen und verwenden ?
Antworten:
Aktivieren Sie das USB-Debugging auf dem Gerät
Dies erfolgt unter Einstellungen ›Entwicklung . Wenn Sie diesen Eintrag nicht in Ihrem Einstellungsmenü haben, gehen Sie zu Einstellungen ›Info , scrollen Sie zur" Build-Nummer "und hämmern Sie sie wie einen Affen, bis Ihr Gerät Sie als Entwickler beglückwünscht. Kehren Sie zur Hauptseite des Einstellungsmenüs zurück , und ganz unten sollten Sie jetzt die Einstellungen für "Entwicklung" (oder "Entwickler") sehen. Geben Sie es ein und aktivieren Sie das USB-Debugging hier.
Identifizieren Sie das Gerät
Zuerst müssen wir wissen, wie sich das Gerät auf dem USB-Bus identifiziert. Nehmen Sie dazu bei NICHT verbundenem Android-Gerät eine Shell und führen Sie den Befehl aus
lsusb
. Schließen Sie dann das Gerät an und führen Sie den Befehl erneut aus. Finde die neue Linie. Für den Wileyfox Swift ist dies ein "namenloses Gerät":Einrichten der Regeln für ADB
Wir müssen jetzt die Zahlen am Ende der Zeile oben:
2970:2282
. Diese geben den Anbieter (2970) und das Gerät selbst (2282) an. Mit diesen Details benötigen wir eine Root- Shell auf unserem Linux-Rechner, um die/etc/udev/rules.d/51-android.rules
Datei zu bearbeiten (oder zu erstellen, falls sie noch nicht existiert) . Fügen Sie dort eine Zeile für Ihr Gerät hinzu. Die folgende Beispielzeile zeigt, wie es für den Wileyfox Swift aussieht : ¹Wenn Sie ein anderes Gerät haben, ersetzen Sie die Hersteller- und Produkt-IDs durch die oben beim Ausführen gefundenen
lsusb
. Eine kurze Erklärung der Zeile:SUBSYSTEMS=="usb"
: natürlich gilt diese Regel nur für USB;)ATTRS{idVendor}=="2970"
: Die Hersteller-ID des Geräts, für das diese Regel giltATTRS{idProduct}=="2282"
: die Geräte-IDMODE="0666"
: Berechtigungen, die der Geräteknoten erhalten soll.0666
Es ist ziemlich lässig, jedem Benutzer auf Ihrem System Lese- und Schreibrechte zu erteilen. Wenn Sie also Bedenken haben, können Sie versuchen, diese durch ein zu ersetzen0660
(nur Eigentümer und Gruppe können Lese- und Schreibrechte erteilen und anderen alles verweigern).GROUP="androiddev"
: Zu welcher Gruppe der Geräteknoten gehören soll. Dies sollte eine Gruppe sein, zu der die Benutzer gehören, die mit dem Gerät arbeiten sollen.SYMLINK+="android%n"
: nur um dem Knoten einen schönen Namen zu geben, damit du ihn leichter finden kannst/dev
(in meinem Fall tauchte er später dort auf als/dev/android5
)/etc/udev/rules.d/51-android.rules
Wir müssen sagenudev
, dass diese Regel in Kraft getreten ist , um sie zu nutzen. Der sicherste Weg (neben einem Neustart;) ist ein Neustart desudev
Dienstes. Abhängig von Ihrer Linux-Distribution kann dies entweder überservice udev restart
oder erfolgen/etc/init.d/udev restart
.Wenn Sie das getan haben, verlassen Sie die Root-Shell. Trennen Sie Ihr Android-Gerät und schließen Sie es
adb devices
erneut an. Versuchen Sie es erneut. Die meisten Geräte tauchten jetzt auf, aber nicht der Wileyfox Swift - der offensichtlich ein paar zusätzliche Kuschelpartien möchte. Wenn Sie in dieser Situation sind, öffnen Sie die Datei (oder erstellen Sie sie, falls sie nicht vorhanden ist)~/.android/adb_usb.ini
und fügen Sie eine einzelne Zeile hinzu, wobei Sie den oben genannten Hersteller angebenlsusb
. für den Swift wäre das0x2970
(yupp, hier musst du es voranstellen, um0x
darauf hinzuweisen, dass es eine hexadezimale Zahl ist). Dann starten Sie den ADB - Server:adb kill-server && adb start-server
. Trennen Sie das Gerät vom Computer und schließen Sie es erneut an. Jetztadb devices
sollte es sehen.Gerät anschließen
Sie haben vielleicht bemerkt,
adb devices
dass Ihnen so etwas erzählt wurde0123456789ABCDEF unauthorized
. Das ist in Ordnung und dient Ihrer (Geräte-) Sicherheit: Ihr Computer muss zuerst autorisiert werden, um auf das Gerät zugreifen zu können. Also einfachadb shell
jetzt ausgeben - miterror: device unauthorized. Please check the confirmation dialog on your device.
dem Hinweis "Folgen Sie diesem Hinweis" beenden (optional das Kästchen ankreuzen, um Ihren Computer dauerhaft zu autorisieren) und fertig: Jetzt können Sie mit adb auf Ihr Gerät zugreifen.Aktualisierung:
¹ Beachten Sie, dass sich in späteren Linux-Versionen die Syntax für die UDEV-Regeln geringfügig geändert hat, wie z. B. jcomeau_ictx in seinem Kommentar ausgeführt hat. Für die oben gefundenen Werte wäre das:
Zwei Unterschiede: Es ist jetzt
SUBSYSTEM
(kein Plural), und die Gruppe hat sich vonandroiddev
zu geändertplugdev
(Ersteres ist auf neueren Systemen nicht vorhanden, Letzteres ist vorhanden und wird normalerweise mindestens dem ersten Benutzer zugewiesen).Außerdem müssen Sie möglicherweise die VendorID zu Ihrer
~/.android/adb_usb.ini
ID hinzufügen (eine ID pro Zeile in hexadezimaler Schreibweise):quelle
jcomeau@aspire:~$ tail -n 1 /etc/udev/rules.d/99-android.rules SUBSYSTEM=="usb", ATTR{idVendor}=="0e8d", ATTR{idProduct}=="201d", MODE="0666", GROUP="plugdev", SYMLINK+="android%n" jcomeau@aspire:~$ cat ~/.android/adb_usb.ini # ANDROID 3RD PARTY USB VENDOR ID LIST -- DO NOT EDIT. # USE 'android update adb' TO GENERATE. # 1 USB VENDOR ID PER LINE. 0x0e8d
Ich musste den Rat ignorieren,android update adb
um es auszuführen und manuell einzugeben, wie Sie angegeben haben.plugdev
anstelle vonandroiddev
). Nicht verifiziert, aber ich würde sagen, der wichtige Teil hier ist, dass es sich um eine Gruppe handelt, die auch Ihr Benutzer (mit dem Sie USB verwenden möchten) hat.SUBSYSTEM
stattSUBSYSTEMS
,ATTR
stattATTRS
, Komma nachMODE="0666"
nicht sicher , ob alle diese Änderungen waren notwendig, aber das ist , was funktioniert.sudo wget -O /etc/udev/rules.d/51-android.rules
von hier für mich für mein Xiaomi Mi A1. Natürlich ist es besser zu lernen, aber gut, faul zu sein :)Ein paar Kommentare von einer neueren Linux-Distribution. Fedora 29 mit einem Nexus 5X oder dem Nokia 7.1 (Android One).
Trennen Sie zuerst das Telefon, falls es bereits verbunden ist.
sudo dnf install android-tools
) liefernsudo cp /usr/share/doc/android-tools/51-android.rules /etc/udev/rules.d
)sudo udevadm control --reload-rules
)sudo systemctl restart adb
)Schließen Sie nun das Telefon an und führen Sie es
adb devices
über die Befehlszeile aus. Sie werden wahrscheinlich ein Gerät mit der Auflistung "Keine Berechtigungen" sehen. Das ist okay.WENN es nicht aufgeführt ist, müssen Sie Ihr Gerät zur udev-Regeldatei hinzufügen, aber für mich haben die getesteten Geräte nur mit den vordefinierten Regeln funktioniert.
Führen
adb shell
Sie das Programm aus, und Sie werden hoffentlich per Sicherheitsbenachrichtigung gefragt, ob Sie dem Computer vertrauen möchten. Wählen Sie "Ja" aus.WENN Ihr Computer stattdessen "Fehler: Unzureichende Berechtigungen für Gerät" anzeigt, müssen Sie sicherstellen, dass Sie auf dem Telefon den USB-Anschluss auf "Dateien übertragen" und nicht auf "Gerät laden" eingestellt haben. Unter Android 8.1 finden Sie dies in den Einstellungen unter "Angeschlossene Geräte"> "USB".
Mir ist aufgefallen, dass selbst wenn heute alles funktioniert, es morgen ohne ersichtlichen Grund plötzlich kaputt gehen kann. Überprüfen Sie in diesem Fall zunächst die USB-Anschlusseinstellung des Geräts, die möglicherweise wieder in den Lademodus geändert wurde. Wenn dies fehlschlägt, widerrufen Sie die USB-Debug-Berechtigungen auf dem Gerät (in den Einstellungen unter Entwickleroptionen) -up wieder, wenn Sie laufen
adb shell
.Damit kann ich Android Studio ausführen und auf dem verbundenen Gerät ausführen.
quelle