sans autorisation sur Ubuntu 17.04

48

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.

Nadav Tasher
la source
Essayez sudo adb devices. Si cela fonctionne très bien, mais de mémoire, je n'ai pas eu à être root pour vérifier les périphériques connectés.
Shmink
1
cela ne fonctionnera pas avec sudo mais avec la connexion root, cela fonctionnera. le problème est que android studio préforme seulement adb à partir d’une session non root et que l’exécuter avec jksudo ne reconnaît pas mes fichiers.
Nadav Tasher
J'ai trouvé la même chose avec android studio et généralement tout ce qui est fabriqué par jetbrains. Quand vous avez installé Android Studio, l'avez-vous fait en tant que root?
Shmink
installé en tant que root sur / usr / local / et chmoded vers 777 -R, ne s'exécute pas en tant que root pour qu'il reconnaisse les paramètres et sdk.
Nadav Tasher
Que diriez-vous de l'exécuter en tant que root et de simplement modifier les paramètres et le SDK de manière appropriée.
shmink

Réponses:

64

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
Sumeet Deshmukh
la source
2
Cela fonctionne .. en quelque sorte. Après cela, effectivement, en cours d’exécution, adb devicesaffiche le périphérique (et j’obtiens la boîte de dialogue des empreintes digitales). Cependant, cela ne fonctionne toujours pas avec Android Studio. En outre, lorsque je lance android studio, puis à adb devicespartir d’une console, j’obtiens un "serveur adb obsolète" et que le serveur adb redémarre. Après cela, je reviens à la situation "aucune autorisation".
Ombre
Cela ne fonctionne pas. adb devices ne montre rien et le casque ne demande jamais plus l'autorisation.
Tyguy7
63

J'ai eu le même problème. S'assurer que le mode USB de l'appareil n'est PAS en cours de chargement n'a résolu le problème.

Ivan Klass
la source
5
Idem ici, j'avais modifié les règles Udev sans aucun résultat, changé de clé USB en partage de fichiers et presto. Le périphérique ne nécessitait pas de règles udev ni de modes USB spécifiques dans la version précédente d'ubuntu.
Fco P.
3
Cela devrait être la bonne réponse (pas un serveur de redémarrage adb)
RumburaK
1
Réponse correcte pour moi.
Alvaro Gutierrez Perez le
1
ne devrait pas être la bonne réponse mais travaillé.
Uzumaki D. Ichigo
1
Oui, c'est la bonne réponse.
39

Très probablement, udev ajoute de manière incorrecte votre appareil. Moi aussi j'ai eu ce problème et je 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 déjà utilisé /etc/udev/rules.d/51-android.rules- pour ajouter le périphérique au groupe plugdev, lequel adb suppose déjà que vous êtes membre de (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 de périphériques Android - Janos Gyerik

Paul
la source
1
Cette réponse a résolu mon problème. Parfait merci.
alexmeia
1
Merci @Paul Cela m'a aidé. Bien expliqué avec raison. Je pense que le redémarrage du service udev est également requis.
Gagan
c'est définitivement la solution correcte si vous ne voulez pas utiliser sudo pour des choses pour lesquelles vous ne devriez pas avoir besoin d'utiliser sudo
aholt
Cela devrait être la réponse acceptée, car c'est la bonne réponse. La réponse la mieux notée n’est qu’une solution de contournement.
Joel Cross
Cela a résolu le problème pour moi. Cela fonctionnait hier sans règles, mais après l'installation des mises à jour sur Ubuntu, il a cessé de fonctionner et je devais le faire.
simernes
2

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

Cependant, Android Studio démarre apparemment son propre serveur publicitaire, tuant le nôtre. Cela signifie qu'après que le serveur a été tué / démarré avec sudo, Studio le redémarre, ce qui conduit à la situation de démarrage: aucune autorisation.

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.

Ombre
la source
merci beaucoup, bien que ce soit un bug corrigé par une mise à jour du système (par téléphone) et une mise à jour de studio.
Nadav Tasher
2

Changer le mode USB à partir du téléphone a fait l'affaire pour moi. (Je l'ai défini sur Transfert de fichier .)

NuttLoose
la source
2

Veuillez NE PAS suivre les solutions suggérant d'utilisersudo ( sudo adb start-server)! Cette exécution adb en tant que root (administrateur) et il n'est pas supposé 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 de configurer votre système pour que l'utilisateur reçoive l'autorisation, consultez ce guide que j'ai écrit pour savoir comment le faire correctement.

Daniele Segato
la source
2

Cela ne fonctionnait pas pour moi après que je me suis ajouté au plugdevgroupe et que j'ai redémarré la machine juste pour m'assurer que le changement prend effet dans toutes mes sessions shell. J'ai alors constaté qu'il n'y avait aucun 51-android.rulesfichier /etc/udev/rules.det 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.

russoué
la source
Cela ne fonctionne pas pour moi non plus ...
Tyguy7
1

Vous devez fournir une autorisation sur votre appareil Android. Allez dans Paramètres> Options du développeur. Essayez d’activer et 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.

Joel G Mathew
la source
ne fonctionne pas, je l'ai déjà essayé, si c'est important, j'utilise Android 7.1.2, et sur un autre appareil sous 7.1.1, cela fonctionnait.
Nadav Tasher
Vous avez essayé de supprimer toutes les autorisations d’hôte? Redémarré après ça?
Joel G Mathew
n'a pas redémarré. Je vais essayer et vous dire si cela a fonctionné.
Nadav Tasher
Si cela a fonctionné, vous pouvez accepter la réponse.
Joel G Mathew
chèque plus tard aujourd'hui
Nadav Tasher
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.

Bufke
la source
0

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).

Charloh Maguri Jnr
la source
0

Assurez-vous que vos règles udev sont en place, vérifiez /etc/udev/rules.d

Vous pouvez trouver les règles appropriées ici: https://raw.githubusercontent.com/M0Rf30/android-udev-rules/master/51-android.rules

Il suffit de les placer dans /etc/udev/rules.d/, puis:

sudo udevadm control --reload
sudo udevadm trigger

Maintenant, assurez-vous que le serveur adb n'est pas en cours d'exécution:

sudo adb kill-server

Ajoutez votre utilisateur à adbusers:

sudo usermod -a -G adbusers $USER

Maintenant, utilisez su $USER( référence ) afin que votre utilisateur appartienne réellement à adbusers(vérifier avec groups)

Et puis redémarrez simplement le serveur adb:

adb start-server

Si votre appareil n'apparaît pas adb devices, reconnectez-le.

xdevs23
la source