
Leem.fin
Ich verwende ein Samsung Galaxy Nexus-Telefon (Android 4.0 Plattform).
Ich entwickle eine Android-App auf Ubuntu Linux OS. Ich möchte meine Anwendung direkt auf dem Samsung-Mobilteil ausführen, daher habe ich die folgenden Einrichtungsschritte ausgeführt:
-
in meinem Projekt AndroidManifest.xml
Datei, hinzugefügt android:debuggable="true"
zum <application>
Element
-
Auf dem Gerät, in der Einstellungen > Sicherheit aktiviert Unbekannte Quellen
-
Auf dem Gerät, in der Einstellungen > Entwickleroptionen aktiviert USB-Debugging
-
Auf meinem Computer erstellt die /etc/udev/rules.d/51-android.rules
Datei mit folgendem Inhalt:
SUBSYSTEM=="usb", ATTR{idVendor}=="04E8", MODE="0666", GROUP="plugdev"
-
Führen Sie auf meinem Computer die chmod a+r /etc/udev/rules.d/51-android.rules
Befehl
Dann habe ich auf meinem Computer ein Terminal geöffnet und die ausgeführt adb devices
Befehl bekam ich:
List of devices attached
???????????? no permissions
Da habe ich mein Gerät aber nur nicht gesehen ???????????? no permissions
führe ich dann die folgenden Befehle aus:
adb kill-server
adb start-server
adb devices
Aber ich habe noch:
List of devices attached
???????????? no permissions
Warum? Was vermisse ich?

WarrenFaith
Was für mich funktioniert, ist, den Adb-Server zu beenden und erneut zu starten. Unter Linux: sudo adb kill-server
und dann sudo adb start-server
. Dann wird es fast jedes Gerät sofort erkennen.

Grebulon
Nichts hat bei mir funktioniert, bis ich endlich die Antwort hier gefunden habe:
http://ptspts.blogspot.co.il/2011/10/how-to-fix-adb-no-permissions-error-on.html
Ich kopiere den Text hierher, falls er in Zukunft verschwindet.
Erstellen Sie eine Datei namens /tmp/android.rules mit folgendem Inhalt (Hex-Anbieternummern wurden von der Anbieterlistenseite übernommen):
SUBSYSTEM=="usb", ATTRS{idVendor}=="0bb4", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0e79", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0502", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0b05", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="413c", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0489", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="091e", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="18d1", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0bb4", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="12d1", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="24e3", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="2116", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0482", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="17ef", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="1004", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="22b8", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0409", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="2080", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0955", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="2257", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="10a9", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="1d4d", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0471", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="04da", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="05c6", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="1f53", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="04e8", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="04dd", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0fce", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0930", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="19d2", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="1bbb", MODE="0666"
Führen Sie die folgenden Befehle aus:
sudo cp /tmp/android.rules /etc/udev/rules.d/51-android.rules
sudo chmod 644 /etc/udev/rules.d/51-android.rules
sudo chown root. /etc/udev/rules.d/51-android.rules
sudo service udev restart
sudo killall adb
Trennen Sie das USB-Kabel zwischen Telefon und Computer.
Verbinden Sie das Telefon erneut.
Laufen adb devices
um zu bestätigen, dass es jetzt die Berechtigung hat, auf das Telefon zuzugreifen.
Bitte beachten Sie, dass die Verwendung möglich ist , USER="$LOGINNAME"
anstatt , MODE="0666"
in dem .rules
Datei, ersetzen $LOGINNAME
für Ihren Login-Namen, dh was id -nu
Drucke.
In manchen Fällen kann es notwendig sein, der udev-Regeldatei einen Namen zu geben, der am Ende steht, wie z z51-android.rules
.

iancrowther
Geben Sie die folgenden Befehle ein:
# cd to adb for sudo
cd `which adb | sed -e "s/adb//"`
adb kill-server
sudo ./adb start-server
./adb devices
This happens when you are not running adb server as root.

Säbel
Alles oben versucht, keiner hat funktioniert. Endlich hat es funktioniert, als ich die Verbindung von MTP auf Kamera (PTP) umschalte.

Alex P.
Es gibt viele schlechte Antworten auf diese Frage, die von dem Beharren auf dem Laufen reichen adb
als root
(was nicht als die einzige oder gar empfohlene Lösung angepriesen werden sollte) bis hin zur Lösung völlig unabhängiger Probleme.
Hier ist das kürzeste und universellste Rezept, um sich um Berechtigungen für alle zu kümmern adb
und fastboot
Geräte auf einmal:
echo 'ACTION=="add", SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ENV{ID_USB_INTERFACES}=="*:ff420?:*", MODE="0666"' | sudo tee /etc/udev/rules.d/99-android.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --verbose --action=add --subsystem-match=usb
Oder Sie könnten eine etwas längere Version verwenden, die ich hier gepostet habe Kern.
Was die spezifische Sache betrifft, die OP in seiner Frage falsch gemacht hat – es wurde nicht neu geladen udev
Regeln nach dem Bearbeiten der .rules
Datei.
Außerdem sagte OP nicht, welchen Android-Build (auch bekannt als ROM) er auf seinem Telefon hatte. Die idVendor
Der Wert wird in der Software festgelegt und hängt daher vom ROM ab. Also der Wert von 04E8
die er in seiner ursprünglichen Regel verwendete, hätte nur für Geräte mit Samsung-Stock-ROMs funktioniert. Aber das ist kein Problem dafür udev
Regel – es stimmt mit allen Geräten überein adb
oder fastboot
Schnittstellen unabhängig von ihrer Hersteller-ID.

Keenan Verbrugge
In Archlinux kann dies gelegentlich vorkommen. Die Reparatur:
$ sudo -s
# adb kill-server
# adb start-server
Für diejenigen, die Debian verwenden, funktioniert die Anleitung zum Einrichten eines Geräts unter Ubuntu zum Erstellen der Datei “/etc/udev/rules.d/51-android.rules” nicht. Ich habe die Anweisungen von befolgt Hier. Dasselbe hier als Referenz niederlegen.
Bearbeiten Sie diese Datei als Superuser
sudo nano /lib/udev/rules.d/91-permissions.rules
Finden Sie den ähnlichen Text
# usbfs-like devices
SUBSYSTEM==”usb”, ENV{DEVTYPE}==”usb_device”, \ MODE=”0664″
Ändern Sie dann den Modus wie unten auf 0666
# usbfs-like devices
SUBSYSTEM==”usb”, ENV{DEVTYPE}==”usb_device”, \ MODE=”0666″
Dadurch kann adb funktionieren, aber wir müssen das Gerät noch so einrichten, dass es erkannt werden kann. Wir müssen diese Datei als Superuser erstellen,
sudo nano /lib/udev/rules.d/99-android.rules
und eintreten
SUBSYSTEM==”usb”, ENV{DEVTYPE}==”usb_device”, ATTRS{idVendor}==”0bb4″, MODE=”0666″
Die obige Zeile ist für HTC, folgen Sie dem Beitrag von @grebulon für eine vollständige Liste.
Speichern Sie die Datei und starten Sie udev dann als Superuser neu
sudo /etc/init.d/udev restart
Schließen Sie das Telefon über USB an und es sollte erkannt werden, wenn Sie ein Projekt kompilieren und ausführen.
10016400cookie-checkGerät für Entwicklung einrichten (???????????? keine Berechtigungen)yes
nach dem Ausführen von adb kill-server bekamen Sie die Meldung, dass * daemon not running. Starten Sie es jetzt auf Port 5037 * * Daemon erfolgreich gestartet * — Wenn nicht, versuchen Sie es, bis Sie diese Nachricht erhalten
– Andro Selva
9. Februar 2012 um 11:44 Uhr
Versuchen Sie zu überprüfen, ob Ihr Benutzer angemeldet ist
plugdev
Gruppe.– Sergej Glotow
9. Februar 2012 um 11:58 Uhr
Führen Sie => sudo adb start-server aus (verwenden Sie Root-Zugriff, um adb auszuführen)
– Verwirrt
23. Januar 2016 um 13:41 Uhr
Endlich habe ich die Lösung gefunden, die in diesem Link für mich funktioniert hat github.com/snowdream/51-android
– Abdulrahman Gamal
13. September 2019 um 21:23 Uhr
Bitte sehen Sie sich mein 2022-Update zu diesem Problem unten an und einen kurzen Kommentar, dass einige der wirklich alten Lösungen hier ein Linux-System blockieren können.
– Basautner
10. Januar um 15:38 Uhr