Ich benutze ein Samsung Galaxy Nexus-Handy (Android 4. Plattform).
Ich entwickle Android App unter Ubuntu Linux OS. Ich möchte meine Anwendung direkt auf dem Samsung-Handset ausführen und habe die folgenden Installationsschritte ausgeführt:
in meiner Projektdatei AndroidManifest.xml
wurde Android:debuggable="true"
zum Element <application>
hinzugefügt
Auf dem Gerät unter Einstellungen> Sicherheit aktiviert nbekannte Quellen
Auf dem Gerät unter Einstellungen> Entwickleroptionen aktiviert SB-Debugging
Erstellen Sie auf meinem Computer die Datei /etc/udev/rules.d/51-Android.rules
Mit dem folgenden Inhalt:
SUBSYSTEM=="usb", ATTR{idVendor}=="04E8", MODE="0666", GROUP="plugdev"
Führen Sie auf meinem Computer den Befehl chmod a+r /etc/udev/rules.d/51-Android.rules
Aus
Dann habe ich auf meinem Computer ein Terminal geöffnet und den Befehl adb devices
Ausgeführt.
List of devices attached
???????????? no permissions
Da ich mein Gerät nicht gesehen habe, sondern nur ???????????? no permissions
, Führe ich folgende Befehle aus:
adb kill-server
adb start-server
adb devices
Aber ich habe immer noch:
List of devices attached
???????????? no permissions
Warum? Was vermisse ich?
Was für mich funktioniert, ist den AdB-Server zu töten und neu zu starten. Unter Linux: Sudo adb kill-server
und dann Sudo adb start-server
. Dann erkennt es fast jedes Gerät aus der Box.
Nichts hat bei mir funktioniert, bis ich hier endlich die Antwort 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 mit dem Namen /tmp/Android.rules mit folgendem Inhalt (hexadezimale Lieferantennummern wurden von der Seite mit der Lieferantenliste ü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 dem Telefon und dem Computer.
Schließen Sie das Telefon erneut an.
Lauf adb devices
, um zu bestätigen, dass es jetzt berechtigt ist, auf das Telefon zuzugreifen.
Bitte beachten Sie, dass es möglich ist, , USER="$LOGINNAME"
anstatt , MODE="0666"
in dem .rules
Datei, ersetzt $LOGINNAME
für Ihren Anmeldenamen, d. h. was id -nu
druckt.
In einigen Fällen kann es erforderlich sein, der udev-Regeldatei einen Namen zu geben, der kurz vor dem Ende steht, z. B. z51-Android.rules
.
Geben Sie die folgenden Befehle ein:
adb kill-server
Sudo ./adb start-server
adb devices
Das Problem ist, dass Ihr AdB-Server nicht als Root ausgeführt wird.
Versucht alle oben, keiner hat funktioniert .. schließlich hat es funktioniert, als ich von MTP auf Camera (PTP) geschaltet habe.
Es gibt viele schlechte Antworten auf diese Frage, von der Forderung, adb
als root
auszuführen (was nicht als einzige oder sogar empfohlene Lösung angepriesen werden sollte) bis zur Lösung völlig unabhängiger Probleme.
Hier ist das kürzeste und universellste Rezept für die gleichzeitige Verwaltung von Berechtigungen für alle adb
und fastboot
Geräte:
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 in diesem Artikel gepostet habe Gist .
Was die spezifische Sache betrifft, die OP in seiner Frage falsch gemacht hat, so wurden die udev
- Regeln nach dem Bearbeiten der .rules
- Datei nicht neu geladen.
Auch OP wusste nicht, welchen Android Build (aka ROM) er auf seinem Handy hatte. Der idVendor
Wert wird in der Software eingestellt und ist daher vom ROM abhängig. Also der Wert von 04E8
, den er in seiner ursprünglichen Regel verwendet hat, hätte nur für Geräte mit Samsung-Standard-ROMs funktioniert. Dies ist jedoch kein Problem für diese udev
- Regel - sie entspricht allen Geräten mit adb
oder fastboot
unabhängig von ihrer VendorID .
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 folgte den Anweisungen von hier . Stellen Sie dasselbe hier als Referenz auf.
Bearbeiten Sie diese Datei als Superuser
Sudo nano /lib/udev/rules.d/91-permissions.rules
Finden Sie den Text ähnlich
# usbfs-like devices
SUBSYSTEM==”usb”, ENV{DEVTYPE}==”usb_device”, \ MODE=”0664″
Dann ändern Sie den Modus auf 0666 wie unten
# usbfs-like devices
SUBSYSTEM==”usb”, ENV{DEVTYPE}==”usb_device”, \ MODE=”0666″
Dies ermöglicht es adb zu arbeiten, wir müssen das Gerät jedoch noch einrichten, damit es erkannt werden kann. Wir müssen diese Datei als Superuser erstellen,
Sudo nano /lib/udev/rules.d/99-Android.rules
und betreten
SUBSYSTEM==”usb”, ENV{DEVTYPE}==”usb_device”, ATTRS{idVendor}==”0bb4″, MODE=”0666″
die obige Zeile gilt für HTC. Die vollständige Liste finden Sie in @ grebulons Beitrag.
Speichern Sie die Datei und starten Sie udev 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.
Ich hatte das gleiche Problem, die Lösung ist wie folgt: (Übrigens müssen Sie Ihr Gerät nicht rooten.)
Genießen.
Ich hatte das gleiche Problem mit meinem Galaxy S3. Mein Problem war, dass der idVendor
Wert 04E8
war nicht der richtige. Um das Richtige zu finden, schließen Sie Ihr Smartphone an den Computer an und führen Sie lsusb
im Terminal aus. Daraufhin wird Ihr Smartphone folgendermaßen aufgelistet:
Bus 002 Device 010: ID 18d1:d002 Google Inc.
Der richtige idVendor
Wert ist also 18d1
. Und die Zeile in der /etc/udev/rules.d/51-Android.rules
muß sein:
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666", GROUP="plugdev"
Dann renne ich Sudo udevadm control --reload-rules
und alles hat funktioniert!
Ich weiß, dass dies etwas spät sein könnte, aber hier ist ein sehr guter Artikel darüber, wie man Android ADB USB Driver manuell hinzufügt. Manuelles Hinzufügen Android ADB USB-Treiber in Ubuntu 14.04 LTS
Zum Hinzufügen von Linkinhalten bearbeitet
Hinweis: Stellen Sie sicher, dass Sie Ihr Android Gerät beim USB-Debuggen angeschlossen haben Modus
Öffnen Sie das Terminal (CTRL + ALT + T
) Und geben Sie den folgenden Befehl ein: lsusb
Jetzt erhalten Sie möglicherweise eine ähnliche Antwort:Bus 002 Device 013: ID 283b:1024
Hinweis: In Bezug auf diese Bus 002 Device 008: ID 283b:1024
{idVendor}==”283b” {idProduct}==”1024″
Geben Sie nun folgenden Befehl ein: Sudo gedit /etc/udev/rules.d/51-Android.rules
Dadurch wird die Regeldatei Android= (51-Android.rules
) Oder die vorhandene Datei am angegebenen Speicherort (/etc/udev/rules.d
) Erstellt.
Fügen Sie dieser Datei eine neue Zeile hinzu:SUBSYSTEM==”usb”, ATTRS{idVendor}==”283b”, ATTRS{idProduct}==”1024″, MODE=”0666″
Hinweis Bearbeiten Sie idVendor
& idProduct
Werte mit Ihren Gerätewerten. Speichern und schließen.
Geben Sie nun folgenden Befehl ein:Sudo chmod a+rx /etc/udev/rules.d/51-Android.rules
- Erteilen Sie die Berechtigung zum Lesen/AusführenSudo service udev restart
- Starten Sie den Dienst udev
neu
Jetzt müssen wir den idVendor
zu adb_usb.ini
Hinzufügen. Geben Sie die folgenden Befehle ein:cd ~/.Android
gedit adb_usb.ini
Addiere den folgenden Wert 0x283b
Dies ist nichts anderes als 0x (idVendor
value). Ersetzen Sie den Wert also durch. Speichern und schließen Sie die Datei.
Geben Sie nun folgenden Befehl ein:Sudo service udev restart
Stecken Sie das Android Gerät aus und schließen Sie es erneut an.
Geben Sie nun folgenden Befehl ein:adb kill-server
adb devices
Es geht los! Ihr Gerät muss aufgelistet sein.
Kopiert von Manuelles Hinzufügen von Android ADB USB-Treiber in Ubuntu 14.04 LTS
Hat für mich gearbeitet.
Verwenden Sie das M0Rf30/Android-udev-rules
Von der GitHub-Community gepflegte udev-Regeln
https://github.com/M0Rf30/Android-udev-rules/blob/master/51-Android.rules
Dies ist die vollständigste udev-Rules-Liste, die ich bisher gesehen habe, sogar mehr als die derzeit empfohlene Sudo apt-get install Android-tools-adb
auf der offiziellen Dokumentation , und es hat dieses Problem für mich gelöst.
Sie sollten den adb
Server NICHT als root ausführen, wie andere Antworten vorschlagen. Wenn Sie Arch Linux verwenden, gehen Sie stattdessen wie folgt vor:
Android-udev
Paket mit PacmanUdev Regeln neu laden:
# udevadm control --reload-rules
Füge dich zur adbusers
Gruppe hinzu und logge dich dann aus und wieder ein:
# usermod -aG adbusers $LOGNAME
Quelle: https://wiki.archlinux.org/index.php/Android#Configuring_adb
Bei allen Antworten wird davon ausgegangen, dass Sie das USB-Kabel abziehen und wieder anschließen können. In Situationen, in denen dies nicht möglich ist (z. B. wenn Sie remote sind), können Sie Folgendes tun, um im Wesentlichen das zu tun, was die vorgeschlagenen udev-Regeln beim erneuten Einstecken tun würden:
lsusb
Suchen Sie das Gerät, das Sie interessiert, z.
Bus 003 Device 005: ID 18d1:4ee4 Google Inc. Nexus
Notieren Sie sich die Busnummer, auf der es sich befindet, und führen Sie dann z. für bus 003
:
Sudo chmod a+w /dev/bus/usb/003/*
Natürlich ist dies möglicherweise freizügiger als gewünscht (es sind möglicherweise mehr Geräte als nur dieses angeschlossen), aber Sie haben die Idee.
Mein Gerät ist POSITIVO und mein Betriebssystem ist Ubuntu 14.04 LTS
Also, mein Problem war im Variablennamen
Ich erstelle die Datei /etc/udev/rules.d/51-Android.rules und setze SUBSYSTEM=="usb", SYSFS{idVendor}=="1662", MODE="0666"
Ich habe das Gerät getrennt und führe Folgendes aus:
$ Sudo udevadm control --reload-rules
$ Sudo service udev restart
danach habe ich das Android Gerät im Entwicklermodus wieder angeschlossen und
$ adb devices
List of devices attached
1A883XB1K device
Wenn Sie udev neu starten, töten Sie den AdB-Server und starten Sie den AdB-Server. Gehen Sie zu Android SDK-Installationspfad und führen Sie alle Schritte in Sudo aus. Führen Sie dann ADB-Geräte aus, um das Berechtigungsproblem zu lösen.
In meinem Fall unter Ubuntu 12.04 LTS musste ich meinen HTC Incredible USB-Modus von Charge auf Media ändern und dann wurde das Gerät unter ADB angezeigt. Natürlich war das Debuggen in beiden Fällen bereits aktiviert.
Versuchen Sie es anstelle von GROUP="plugdev"
Verwenden Sie die Hauptgruppe Ihres Benutzers.
Bitte Folgen Sie NICHT den Lösungsvorschlägen für Sudo
(Sudo adb start-server
)! Dies führe adb als root (Administrator) aus und es sollte NICHT so laufen !!! Es ist eine schlechte Umgehung !
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 ist, Ihr System so einzurichten, dass der BENUTZER die Erlaubnis hat, lesen Sie diese Anleitung i schrieb darüber, wie man es richtig macht.