USB-Debugging auf dem Gerät aktivieren
Dies geschieht in 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 wie ein Affe darauf, bis Ihr Gerät Ihnen gratuliert, Entwickler geworden zu sein. Gehen Sie zurück zur Hauptseite der Einstellungen Menü, und ganz unten sollten Sie jetzt die Einstellungen "Entwicklung" (oder "Entwickler") sehen. Geben Sie es ein und aktivieren Sie USB-Debugging hier.
Identifizieren Sie das Gerät
Zuerst müssen wir wissen, wie sich das Gerät auf dem USB-Bus identifiziert. Dafür mit dem Android-Gerät NICHT verbunden, schnappen Sie sich eine Shell und führen Sie den Befehl lsusb
aus . 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 dies ist ein "namenloses Gerät":
Bus 004 Device 003: ID 2970:2282
Einrichten der Regeln für ADB
Wir brauchen jetzt die Zahlen am Ende der obigen Zeile:2970:2282
. Diese spezifizieren den Hersteller (2970) und das Gerät selbst (2282). Mit diesen Details brauchen wir einen Root Shell auf unserer Linux-Maschine, um die /etc/udev/rules.d/51-android.rules
zu bearbeiten (oder zu erstellen, falls sie noch nicht existiert). Datei. Fügen Sie dort eine Zeile für Ihr Gerät hinzu. Die folgende Beispielzeile zeigt, wie es für Wileyfox Swift:¹ aussieht
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2970", ATTRS{idProduct}=="2282", MODE="0666" GROUP="androiddev", SYMLINK+="android%n"
Wenn Sie ein anderes Gerät haben, ersetzen Sie die Hersteller- und Produkt-IDs durch die oben gefundenen, wenn Sie lsusb
ausführen . Eine kurze Erklärung der Zeile:
SUBSYSTEMS=="usb"
:offensichtlich 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
ist ziemlich locker und gibt jedem Benutzer auf Ihrem System Lese- und Schreibrechte – wenn Sie also besorgt sind, können Sie versuchen, dies durch einen0660
zu ersetzen (nur Besitzer und Gruppe Lese- und Schreibzugriff geben 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 Sie ihn leichter in/dev
finden können (in meinem Fall tauchte es dort später als/dev/android5
auf )
Diese Regel wurde in /etc/udev/rules.d/51-android.rules
eingetragen , müssen wir udev
mitteilen um es zu nutzen. Der sicherste Weg (neben einem Neustart;) ist ein Neustart des udev
Service. Abhängig von Ihrer Linux-Distribution kann dies entweder über service udev restart
erfolgen oder /etc/init.d/udev restart
.
Verlassen Sie die Root-Shell. Trennen Sie Ihr Android-Gerät und verbinden Sie es erneut, versuchen Sie es mit adb devices
wieder. Die meisten Geräte wurden jetzt angezeigt, aber nicht Wileyfox Swift – die offensichtlich ein paar zusätzliche Kuscheleinheiten möchte. Wenn Sie in dieser Situation sind, öffnen Sie (oder erstellen Sie, falls sie nicht existiert) die Datei ~/.android/adb_usb.ini
und fügen Sie eine einzelne Zeile hinzu, in der Sie den Anbieter nennen, den Sie mit lsusb
herausgefunden haben Oben; für den Swift das wäre 0x2970
(Yupp, hier müssen Sie 0x
voranstellen um darauf hinzuweisen, dass es sich um eine Hexadezimalzahl handelt). Starten Sie dann den ADB-Server neu:adb kill-server && adb start-server
. Trennen Sie das Gerät und schließen Sie es erneut an. Jetzt adb devices
sollte es sehen.
Gerät verbinden
Vielleicht ist Ihnen adb devices
aufgefallen hat dir etwas wie 0123456789ABCDEF unauthorized
gesagt . Das ist in Ordnung und zu Ihrer (Geräte-)Sicherheit:Ihr Computer muss zuerst autorisiert werden, um auf das Gerät zugreifen zu können. Geben Sie also einfach adb shell
aus now – die mit einem error: device unauthorized. Please check the confirmation dialog on your device.
beendet wird Befolgen Sie diese Ratschläge (markieren Sie optional das Kontrollkästchen, um Ihren Computer dauerhaft zu autorisieren), und Sie sind fertig:Jetzt können Sie mit adb auf Ihr Gerät zugreifen.
Aktualisierungen:
¹ Beachten Sie, dass sich in späteren Linux-Versionen die Syntax für die UDEV-Regeln leicht geändert hat, da z. jcomeau_ictx wies in seinem Kommentar darauf hin. Für die oben gefundenen Werte wäre das:
SUBSYSTEM=="usb", ATTR{idVendor}=="2970", ATTR{idProduct}=="2282", MODE="0666", GROUP="plugdev", SYMLINK+="android%n"
Zwei Unterschiede:Es ist jetzt SUBSYSTEM
(kein Plural) und die Gruppe hat sich von androiddev
geändert bis plugdev
(Ersteres existiert auf neueren Systemen nicht, letzteres schon und wird normalerweise zumindest dem ersten Benutzer zugewiesen).
Außerdem müssen Sie möglicherweise die Hersteller-ID zu Ihrem ~/.android/adb_usb.ini
hinzufügen (eine ID pro Zeile, in Hex-Schreibweise):
# ANDROID 3RD PARTY USB VENDOR ID LIST
# 1 USB VENDOR ID PER LINE.
0x2970
Ein paar Kommentare von einer neueren Linux-Distribution. Fedora 29 mit einem Nexus 5X oder dem Nokia 7.1 (Android One) Telefon.
Trennen Sie zuerst das Telefon, falls es bereits verbunden ist.
- Installieren Sie Android-Tools, die ADB bereitstellen (
sudo dnf install android-tools
) - UDEV-Regeln kopieren (
sudo cp /usr/share/doc/android-tools/51-android.rules /etc/udev/rules.d
) - udev-Regeln neu laden (
sudo udevadm control --reload-rules
) - Starten Sie ADB neu, um sicherzugehen (
sudo systemctl restart adb
)
Schließen Sie nun das Telefon an und führen Sie adb devices
aus von der Kommandozeile. Sie werden wahrscheinlich ein Gerät sehen, das mit „keine Berechtigungen“ aufgelistet ist. Das ist in Ordnung.
WENN es nicht aufgeführt ist, müssen Sie Ihr Gerät zur udev-Regeldatei hinzufügen, aber für mich funktionierten die getesteten Geräte nur mit den vordefinierten Regeln.
Führen Sie adb shell
aus und hoffentlich erhalten Sie eine Sicherheitsbenachrichtigung auf dem Telefon, in der Sie gefragt werden, ob Sie dem Computer vertrauen möchten. Wählen Sie Ja aus.
WENN Stattdessen sagt Ihr Computer "Fehler:Unzureichende Berechtigungen für das Gerät", Sie müssen sicherstellen, dass Sie auf dem Telefon Ihren USB-Anschluss auf den Modus "Dateien übertragen" und nicht auf "Dieses Gerät aufladen" eingestellt haben. Unter Android 8.1 befindet sich dies in den Einstellungen unter "Verbundene Geräte"> "USB".
Mir ist aufgefallen, dass selbst wenn heute alles funktioniert, es morgen plötzlich ohne ersichtlichen Grund kaputt gehen kann. Wenn das passiert, überprüfen Sie zuerst die USB-Anschlusseinstellung auf dem Gerät, die möglicherweise wieder in den Lademodus gewechselt ist, und wenn dies fehlschlägt, widerrufen Sie die USB-Debugging-Autorisierungen auf dem Gerät (in den Einstellungen unter Entwickleroptionen), und Sie sollten hoffentlich den Pop bekommen -up erneut, wenn Sie adb shell
ausführen .
Damit kann ich Android Studio ausführen und auf dem verbundenen Gerät ausführen.