adb keine Berechtigungen auf Ubuntu 17.04

48

Wenn ich versuche:

$ adb devices

Ich bekomme das Ergebnis:

List of devices attached 
????????????    no permissions

worin besteht das Problem?

auf einem Ubuntu 16.04 Rechner ausprobiert und es hat einwandfrei funktioniert. habe ein 7.1.1 Gerät ausprobiert und es hat auch einwandfrei funktioniert.

Nadav Tasher
quelle
Versuchen Sie es sudo adb devices. Wenn das großartig funktioniert, aber aus dem Speicher muss ich nicht root sein, um nach angeschlossenen Geräten zu suchen.
Shmink
1
es funktioniert nicht mit sudo, aber mit root login. das problem ist, dass android studio nur adb von einer nicht-root-sitzung ausführt und mit jksudo meine dateien nicht erkennt.
Nadav Tasher
Ich habe das gleiche mit Android Studio und im Allgemeinen alles von Jetbrains gemacht gefunden. Als du Android Studio installiert hast, hast du es als root gemacht?
Shmink
Als root auf / usr / local / installiert und auf 777 -R geändert. Nicht als root ausführen, um Einstellungen und SDK zu erkennen.
Nadav Tasher
Wie wäre es, wenn Sie es als root ausführen und einfach die Einstellungen und das SDK entsprechend ändern.
Shmink

Antworten:

64

Versuchen Sie, den Adb-Server neu zu starten.

sudo adb kill-server

und dann

sudo adb start-server

Schließen Sie dann Ihr Gerät an, schalten Sie Debugging ein und geben Sie ein

adb devices
Sumeet Deshmukh
quelle
2
Das funktioniert ... irgendwie. Nachdem ich das getan habe, adb deviceszeigt das Ausführen tatsächlich jetzt das Gerät an (und ich erhalte den Fingerabdruck-Dialog). Es funktioniert jedoch immer noch nicht mit Android Studio. Außerdem adb devicesbekomme ich , wenn ich android studio und dann von einer Konsole aus starte, einen "adb server is out of date" und der adb server wird neu gestartet. Danach komme ich wieder zur Situation "keine Berechtigungen".
Schatten
Das funktioniert nicht. adb devices zeigt nichts an und das Headset fragt nie wieder nach Erlaubnis.
Tyguy7
62

Hatte das gleiche Problem. Wenn Sie sicherstellen, dass der USB-Modus des Geräts NICHT aufgeladen wird, ist das Problem behoben.

Ivan Klass
quelle
5
Auch hier hatte ich die Udev-Regeln ohne Ergebnisse geändert, USB auf Filesharing und Presto umgestellt. Das Gerät benötigte in der vorherigen Ubuntu-Version keine udev-Regeln oder bestimmte USB-Modi.
FCO P.
3
Dies sollte die richtige Antwort sein (nicht ADB Neustart Server)
RumburaK
1
Richtige Antwort für mich.
Alvaro Gutierrez Perez
1
sollte nicht die richtige antwort sein aber funktioniert.
Uzumaki D. Ichigo
1
Ja, das ist die richtige Antwort.
39

Sehr wahrscheinlich fügt udev Ihr Gerät falsch hinzu. Auch ich hatte dieses Problem und bin auf eine relativ einfache Lösung gestoßen.

Finden Sie Ihr Gerät in lsusb

$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 8087:0a2b Intel Corp. 
Bus 001 Device 002: ID 05c8:03a2 Cheng Uei Precision Industry Co., Ltd (Foxlink) 
Bus 001 Device 006: ID 18d1:4ee7 Google Inc.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Punkt von Interesse in diesem Fall:

Bus 001 Device 006: ID 18d1:4ee7 Google Inc.

Checken Sie die entsprechende Gerätedatei aus

$ ls -l /dev/bus/usb/001/006

Wahrscheinlich werden Sie so etwas sehen

crw-rw-r-- 1 root root 189, 5 Sep  8 21:47 /dev/bus/usb/001/006

Dies bedeutet, dass die Gerätedatei dem Benutzer root und der Gruppe root gehört, weshalb adb als root, aber nicht als Standardbenutzer darauf zugreifen kann.

Dies kann durch die Schaffung einer neuen udev - Regel gelöst werden - ich verwendet /etc/udev/rules.d/51-android.rules- um das Gerät zu der Gruppe hinzuzufügen plugdev, die adb bereits voraus , dass Sie ein Mitglied sein (Sie shoukd sein, überprüfen Sie mit id)

SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee7", MODE="0660", 
GROUP="plugdev", SYMLINK+="android%n"

** Denken Sie daran, das ATTR {idProduct} == "4ee7" durch Ihre eigene Produkt-ID zu ersetzen, die Sie in Schritt 1 ermittelt haben. ** (Wenn Ihr Anbieter nicht Google Inc. ist, ersetzen Sie auch die Anbieter-ID durch die vor dem Doppelpunkt in lsusb).

Jetzt einfach das Gerät ausstecken und wieder einstecken (udev sollte automatisch auf die neue Datei reagieren) und tadaa:

$ adb devices
List of devices attached 
YC873P0G    device

Quelle: Hinzufügen von udev-Regeln für das USB-Debugging von Android-Geräten - Janos Gyerik

Paul
quelle
1
Diese Antwort löste mein Problem. Perfekt danke.
Alexmeia
1
Danke @Paul Es hat mir geholfen. Mit gutem Grund erklärt. Ich denke, udev Dienst Neustart ist ebenfalls erforderlich.
Gagan
Dies ist definitiv die richtige Lösung, wenn Sie sudo nicht für
Dinge verwenden
Dies sollte die akzeptierte Antwort sein, da es die richtige Antwort ist. Die bestbewertete Antwort ist eigentlich nur eine Umgehung.
Joel Cross
Das hat es für mich gelöst. Es funktionierte gestern ohne die Regeln, aber nach der Installation von Updates auf Ubuntu funktionierte es nicht mehr und ich musste dies tun.
Simernes
2

Um die Antwort von Sumeet Deshmukh zu erweitern, funktioniert sein Ansatz im Allgemeinen - wenn Sie nur den adbBefehl von der Konsole aus verwenden möchten .

Android Studio startet jedoch anscheinend einen eigenen AdB-Server und bringt unseren um. Das heißt, nachdem wir den Server mit sudo beendet / gestartet haben, startet Studio ihn neu, was zur Ausgangssituation führt - keine Berechtigungen.

Die Lösung besteht darin, zuerst Studio zu starten und dann den Start / Stopp des Servers durchzuführen. Auf diese Weise habe ich es geschafft, dass mein Nexus 5X als gültiges Ausführungsziel in Studio angezeigt wird.

Dies ist nicht die beste Situation (bei jedem Start von Studio müssen Befehle ausgeführt werden), aber sie erledigt den Trick schnell und schmutzig. Wenn ich eine dauerhaftere Lösung finde, werde ich diese Antwort aktualisieren.

Schatten
quelle
Vielen Dank, obwohl es sich um einen Fehler handelte, der durch ein System-Update (auf dem Telefon) und ein Studio-Update behoben wurde.
Nadav Tasher
2

Das Ändern des USB-Modus vom Telefon aus hat mir geholfen. (Ich habe es auf Dateiübertragung eingestellt .)

NuttLoose
quelle
2

Bitte NICHT den Lösungsvorschlägen folgensudo ( sudo adb start-server)! Dies führe adb als root (Administrator) aus und es sollte NICHT so laufen !!! Es ist eine schlechte Problemumgehung !

Alles, was als root ausgeführt wird, kann alles in Ihrem System tun. Wenn eine Datei erstellt oder geändert wird, kann die Berechtigung geändert werden, nur von root verwendet zu werden. Wieder NICHT!

Das Richtige zu tun ist Ihr System so einrichten , um den Benutzer die Erlaubnis machen Besuche dieses Handbuch i geschrieben, wie man es richtig zu machen.

Daniele Segato
quelle
2

Es hat bei mir nicht funktioniert, nachdem ich mich der plugdevGruppe hinzugefügt und den Computer neu gestartet habe, um sicherzustellen, dass die Änderung in allen meinen Shell-Sitzungen wirksam wird. Ich fand dann, dass es keine 51-android.rulesAkte innen gibt /etc/udev/rules.dund musste das folgende tun, um das Problem zu regeln:

# Here the vendor ID is of Google
$ echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0660", GROUP="plugdev"' | sudo tee —append /etc/udev/rules.d/51-android.rules
$ sudo chmod a+r /etc/udev/rules.d/51-android.rules
$ sudo udevadm control --reload-rules
$ sudo service udev restart

Ich musste auch mein Android-Gerät aus- und wieder einstecken.

russoue
quelle
Das funktioniert auch bei mir nicht ...
Tyguy7
1

Sie müssen auf Ihrem Android-Gerät eine Berechtigung angeben. Gehen Sie zu Einstellungen> Entwickleroptionen. Schalten Sie das USB-Debugging aus und wieder ein. Entfernen Sie das Kabel und schließen Sie es wieder an. Versuchen Sie auch, alle gespeicherten Berechtigungen aus den Entwickleroptionen zu löschen. Es sollte nun über eine Eingabeaufforderung auf Ihrem Telefon nach dem Debuggen gefragt werden. Akzeptieren.

Joel G Mathew
quelle
funktioniert nicht, ich habe es bereits ausprobiert, wenn es wichtig ist, verwende ich Android 7.1.2 und auf einem anderen Gerät, auf dem 7.1.1 ausgeführt wird, hat es funktioniert.
Nadav Tasher
Haben Sie versucht, alle Host-Berechtigungen zu löschen? Danach neu gestartet?
Joel G Mathew
hat nicht neu gestartet. Ich werde es versuchen und dir sagen, ob es funktioniert hat.
Nadav Tasher
Wenn es funktioniert hat, können Sie die Antwort akzeptieren.
Joel G Mathew
Ich werde
0

Ich habe keine Ahnung, warum dies funktioniert, aber dies war die einzige Lösung, die für mich funktioniert hat

Finde heraus, wo adb läuft (wenn du wie ich bist, hast du mehrere Versionen installiert). Denken Sie daran, dass Tools wie Eingeborenes Reagieren möglicherweise andere zufällige Versionen verwenden, um Ihr Leben zu erschweren. Für mich ist es ~/Android/Sdk/platform-tools/adb. Also werde ich laufen:

sudo chown root:YOUR_USERNAME ~/Android/Sdk/platform-tools/adb
sudo chmod 4550 ~/Android/Sdk/platform-tools/adb

Android-Tools sind super nervig.

Bufke
quelle
0

Gehen Sie zu Einstellungen >> Wartung >> Speicher. Überprüfen Sie dann das Menü oben links und klicken Sie auf USB-Computerverbindung. Wechseln Sie dann zu Mediengerät (MTP).

Charloh Maguri Jnr
quelle