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.


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

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.


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


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.


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


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.


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.


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.


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.


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


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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.