web-dev-qa-db-fra.com

sans autorisation sur Ubuntu 17.04

Quand j'essaye:

$ adb devices

j'obtiens le résultat:

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

quel est le problème?

essayé sur une machine Ubuntu 16.04 et cela a fonctionné parfaitement. essayé un appareil 7.1.1 et cela a également fonctionné parfaitement.

36
Nadav Tasher

Essayez de redémarrer le serveur Adb.

Sudo adb kill-server

et alors

Sudo adb start-server

puis connectez votre appareil, activez Debugging et tapez

adb devices
55
Sumeet Deshmukh

J'ai eu le même problème. S'assurer que le mode USB de l'appareil est PASchargement uniquement l'a résolu.

49
Ivan Klass

Très probablement, udev ajoute de manière incorrecte votre appareil. Moi aussi j'ai eu ce problème et suis tombé sur une solution relativement simple.

Trouvez votre appareil dans 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

Point d'intérêt dans ce cas:

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

Extraire le fichier de périphérique correspondant

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

Vous verrez probablement quelque chose comme

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

Cela signifie que le fichier de périphérique appartiendra à l'utilisateur root et au groupe root. C'est pourquoi adb peut y accéder en tant que root mais pas en tant qu'utilisateur standard.

Cela peut être résolu en créant une nouvelle règle udev - j'ai utilisé /etc/udev/rules.d/51-Android.rules- pour ajouter le périphérique au groupe plugdev, dont adb suppose déjà que vous êtes membre (vous devriez le faire, vérifiez avec id)

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

** N'oubliez pas de remplacer l'ATTR {idProduct} == "4ee7" par votre propre identifiant de produit que vous avez découvert à la première étape. ** (Si votre fournisseur n'est pas Google Inc., remplacez également l'identifiant du fournisseur par celui qui précède les deux points dans lsusb).

Il suffit maintenant de débrancher votre appareil et de le rebrancher (udev devrait répondre automatiquement au nouveau fichier) et tadaa:

$ adb devices
List of devices attached 
YC873P0G    device

Source: Ajout de règles udev pour le débogage USB Android périphériques - Janos Gyerik

33
Paul

Veuillez NE PAS suivre les solutions suggérant d'utiliser Sudo (Sudo adb start-server)! Cette exécution adb en tant que root (administrateur) et il n'est pas censé fonctionner comme ça !!! C'est une mauvaise solution de contournement !

Tout ce qui fonctionne en tant que root peut faire n'importe quoi sur votre système. S'il crée ou modifie un fichier, il peut changer son autorisation pour être utilisé uniquement par root. Encore une fois, NE PAS!

La bonne chose à faire est configurée sur votre système pour que l'utilisateur puisse obtenir l'autorisation, consultez ce guide j'ai écrit sur comment le faire correctement.

2
Daniele Segato

Pour développer la réponse de Sumeet Deshmukh, son approche fonctionne en général - si vous souhaitez uniquement utiliser la commande adbà partir de la console.

Cependant, Android Studio démarre apparemment son propre serveur publicitaire, tuant le nôtre. Cela signifie qu’après que nous ayons tué/démarré le serveur avec Sudo, Studio le redémarre, ce qui conduit à la situation de départ - pas d’autorisations.

La solution consiste à démarrer d'abord Studio, puis à démarrer/arrêter le serveur. Ce faisant, j'ai réussi à faire en sorte que mon Nexus 5X apparaisse comme une cible d'exécution valide dans Studio.

Ce n'est pas la meilleure situation (avoir à exécuter des commandes chaque fois que vous démarrez Studio), mais cela fait l'affaire d'une manière rapide et sale. Si je trouve une solution plus permanente, je mettrai à jour cette réponse.

2
Shade

Cela n'a pas fonctionné pour moi après m'être ajouté au groupe plugdev et avoir redémarré l'ordinateur juste pour m'assurer que la modification prend effet dans toutes mes sessions Shell. J'ai alors constaté qu'il n'y avait pas de fichier 51-Android.rules dans /etc/udev/rules.d et j'ai dû procéder comme suit pour résoudre le problème:

# 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

J'ai également dû débrancher et rebrancher mon appareil Android.

2
russoue

Vous devez fournir une autorisation sur votre appareil Android. Allez dans Paramètres> Options du développeur. Essayez de désactiver puis de réactiver le débogage USB. Retirez le câble et reconnectez-le. Essayez également de supprimer toutes les autorisations enregistrées des options du développeur. Il devrait maintenant demander l'autorisation de débogage par une invite sur votre téléphone. Accepte-le.

1
Joel G Mathew

Changer le mode USB à partir de Téléphone a fait le tour pour moi. (Je l'ai mis à Transfert de fichier.)

1
NuttLoose

M0Rf30/Android-udev-rules La communauté GitHub a maintenu les règles udev

https://github.com/M0Rf30/Android-udev-rules/blob/master/51-Android.rules

C’est la liste udev-rules la plus complète que j’ai vue jusqu’à présent, bien plus que le Sudo apt-get install Android-tools-adbactuellement recommandé sur la documentation officielle , essayez-le.

Allez dans Paramètres >> Maintenance >> Stockage. Ensuite, vérifiez le menu en haut à gauche et cliquez sur connexion ordinateur USB, puis passez à Périphérique multimédia (MTP).

0

Je ne sais pas pourquoi cela fonctionne, mais c'était la seule solution qui fonctionnait pour moi

Trouvez où adb est en cours d'exécution (si vous êtes comme moi, plusieurs versions sont installées). N'oubliez pas que des outils tels que react native peuvent décider d'utiliser d'autres versions aléatoires afin de vous rendre la vie plus difficile. Pour moi, c'est ~/Android/Sdk/platform-tools/adb. Alors je vais courir:

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

Les outils Android sont super énervants.

0
Bufke