it-swarm.com.de

Gerät für die Entwicklung einrichten (???????????? keine Berechtigungen)

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:

  1. in meiner Projektdatei AndroidManifest.xml wurde Android:debuggable="true" zum Element <application> hinzugefügt

  2. Auf dem Gerät unter Einstellungen> Sicherheit aktiviert nbekannte Quellen

  3. Auf dem Gerät unter Einstellungen> Entwickleroptionen aktiviert SB-Debugging

  4. 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" 
    
  5. 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?

270
Leem.fin

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.

441
WarrenFaith

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.

340
grebulon

Geben Sie die folgenden Befehle ein:

adb kill-serverSudo ./adb start-serveradb devices

Das Problem ist, dass Ihr AdB-Server nicht als Root ausgeführt wird.

76
iancrowther

Versucht alle oben, keiner hat funktioniert .. schließlich hat es funktioniert, als ich von MTP auf Camera (PTP) geschaltet habe.

50
Sabeer Mohammed

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 .

28
Alex P.

In Archlinux kann dies gelegentlich vorkommen. Die Reparatur:

$ Sudo -s
# adb kill-server
# adb start-server
16

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.

8
jaga

Ich hatte das gleiche Problem, die Lösung ist wie folgt: (Übrigens müssen Sie Ihr Gerät nicht rooten.)

  1. Tippe "su", um zum Superuser zu wechseln.
  2. your-path/adb kill-server.
  3. dein-pfad/adb start-server.
  4. Wenn kein Fehler auftritt, wird die Geräteliste mit "your-path/adb devices" im Root-Konto angezeigt.
  5. Beenden Sie den Superuser.
  6. Jetzt können Sie "adb devices" in Ihrem Konto ausführen.

Genießen.

5
Jeffrey Yang

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!

4
Ulli

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

Schritte

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ühren
Sudo 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.

4
dc-aoxn

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-adbauf der offiziellen Dokumentation , und es hat dieses Problem für mich gelöst.

  1. Folgen Sie den Anweisungen unter http://developer.Android.com/guide/developing/device.html
  2. Ersetzen Sie die Hersteller-ID von "0bb4" durch "18d1" in /etc/udev/rules.d/51-Android.rules. Oder fügen Sie eine weitere Zeile hinzu, die lautet: SUBSYSTEM == "usb", SYSFS {idVendor} == "18d1", MODE = "0666"
  3. starten Sie den Computer neu oder starten Sie einfach den udev-Dienst neu.
2
krishnendu

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:

  1. Installiere das Android-udev Paket mit Pacman
  2. Udev Regeln neu laden:

    # udevadm control --reload-rules
    
  3. 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

1

Ohne abzustecken

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.

1
Christian Fritz

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
1
luciana

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.

0
Alan

Versuchen Sie es anstelle von GROUP="plugdev" Verwenden Sie die Hauptgruppe Ihres Benutzers.

0
Yury

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.

0
Daniele Segato