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.
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
J'ai eu le même problème. S'assurer que le mode USB de l'appareil est PASchargement uniquement l'a résolu.
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
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.
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.
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.
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.
Changer le mode USB à partir de Téléphone a fait le tour pour moi. (Je l'ai mis à Transfert de fichier.)
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-adb
actuellement 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).
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.