La commande adb devices ne fonctionne pas

86

J'utilise Ubuntu 10.10 64 bits. J'ai installé ia32-libs avec Android Debug Bridge version 1.0.26.

Mes problèmes):

  1. adb devices>>> ???????????? pas de permissions
  2. sudo adb devices >>>> sudo: adb: commande introuvable
  3. adb shell >>> erreur: autorisations insuffisantes pour l'appareil

Je suppose que tout cela est lié. Voici les informations pertinentes.

$ echo $PATH
/home/me/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/android-sdk-linux_x86/tools:/opt/android-sdk-linux_x86/platform-tools

$ which adb
/opt/android-sdk-linux_x86/platform-tools/adb

$ adb devices
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
List of devices attached 
????????????    no permissions

$ sudo adb devices
sudo: adb: command not found

$ adb shell
error: insufficient permissions for device

J'obtiens les mêmes résultats avec un Moto Droid enraciné exécutant CM6.1 et un G-Tab enraciné exécutant une ROM basée sur CM7.

J'ai examiné les articles connexes suivants:

J'ai essayé la plupart (pas toutes) des suggestions et je n'ai pas été en mesure de résoudre mon problème. Les choses que je n'ai pas essayées me semblaient inappropriées. J'apprécierais quelques conseils supplémentaires et je continuerai à dépanner.

Une chose que je n'ai pas essayée a été de modifier /etc/udev/rules.d/70-android.rules. Est-ce que c'est probablement le problème? Je ne vois pas comment cela provoquerait "sudo: adb: commande non trouvée". Peut-être que mes problèmes ne sont pas tous liés. Quoi qu'il en soit, à ce stade, je pense que j'ai besoin de la contribution d'autres personnes parce que je ne pense pas avoir de problème de chemin ou d'autres problèmes courants abordés dans ces autres messages.

EDIT: RÉSOLU grâce à EboMike et RivieraKid. C'était en fait deux problèmes différents:

  1. L'élément n ° 2 ci-dessus (sudo: adb: commande non trouvée) a été résolu en créant un lien symbolique comme suit:

    $ sudo ln -s /opt/android-sdk-linux_x86/platform-tools/adb /usr/local/sbin/adb
    

    Cela m'a permis de faire ce qu'EboMike a suggéré et d'utiliser cette solution . Cela était nécessaire pour mon Moto Droid. (Cependant, exécuter adb en tant que sudo n'était pas nécessaire pour ma Viewsonic G-Tablet.)

  2. Mes deux autres problèmes ont été résolus en implémentant la règle udev comme le suggérait RivieraKid (à partir de ce lien ).

MountainX
la source
duplication possible d' Ubuntu: débogage de l'appareil Android
EboMike
L'article n ° 1 m'a vraiment aidé. Je ne suis pas sûr de l'élément n ° 2
Francisco Quintero
Copie possible du périphérique configuré pour le développement (?????? aucune autorisation)
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

Réponses:

87

Une chose que je n'ai pas essayée a été de modifier /etc/udev/rules.d/70-android.rules. Est-ce que c'est probablement le problème?

Une raison particulière pour laquelle vous ne l'avez pas fait? Pour répondre à la question - OUI! Les règles udev sont ce qui informe Ubuntu de votre appareil et permet aux outils de l'espace utilisateur d'y accéder.

Vous ne pourrez pas utiliser adb sans suivre correctement les instructions .

Dans cet esprit cependant, vous ne dites pas quelle version d'Ubuntu vous utilisez, mais j'ai eu des problèmes avec 10.10 - faites-moi savoir si vous avez besoin que je publie le contenu de mon fichier de règles.

Ne vous inquiétez pas pour exécuter adb via sudo, vous n'en avez pas besoin. La MODE="0666"règle from the udev vous permet d'accéder à l'appareil comme n'importe quel utilisateur.


ÉDITER:

N'oubliez pas de recharger les règles:

sudo udevadm control --reload-rules

MODIFIER N ° 2:

Comme @Jesse Glick le souligne correctement, si adb est déjà en cours d'exécution en mode démon, vous devrez également le redémarrer pour que cela fonctionne:

sudo adb kill-server

J'ai utilisé sudo ici, car cela garantira que adb sera tué, et c'est la méthode officiellement prise en charge pour arrêter le serveur. Il sera automatiquement redémarré la prochaine fois qu'adb sera utilisé, mais cette fois avec l'environnement correct.

RivieraKid
la source
1
Merci pour le lien . Je ne sais pas comment j'ai raté le fait que ces instructions étaient officielles. Je pensais que les gens faisaient ça pour contourner le problème. J'ai trouvé le code du fournisseur pour mon Viewsonic GTablet et ajouté la règle udev et maintenant cela fonctionne! Merci.
MountainX
1
pour une raison quelconque, je ne parviens pas à faire apparaître le Motorola Droid avec les appareils adb. Maintenant, je peux faire apparaître le GTab et un émulateur, mais pas le Droid.
MountainX
Voir au dessus. L'exécution de adb en tant que root a fait apparaître le Moto Droid.
MountainX
$ cat /etc/udev/rules.d/51-android.rules SUBSYSTEM == "usb", SYSFS {idVendor} == "22b8", MODE = "0666" SUBSYSTEM == "usb", SYSFS {idVendor} = = "0955", MODE = "0666"
MountainX
1
… Et vous devez redémarrer le adbdémon, s'il était déjà en cours d'exécution.
Jesse Glick
22

Vous devez redémarrer le serveur adb en tant que root. Regardez ici .

EboMike
la source
n'a pas fonctionné. Détails: me@desktop:/opt/android-sdk-linux_x86/platform-tools$ sudo adb kill-server sudo: adb: command not found me@desktop:/opt/android-sdk-linux_x86/platform-tools$ adb kill-server me@desktop:/opt/android-sdk-linux_x86/platform-tools$ sudo adb start-server sudo: adb: command not found
MountainX
adbn'est pas sur le chemin de votre superutilisateur. Entrez which adbpour savoir dans quel chemin il se trouve, puis ajoutez-le au chemin de la racine.
EboMike
J'espère que vous pouvez lire ceci. (Je ne sais pas comment formater les commentaires pour inclure des retours à la ligne.) Adb EST dans le chemin de mon utilisateur root. J'ai collé la commande which adb dans mon message d'origine. Le chemin est / opt / android-sdk-linux_x86 / platform-tools / adb. $ sudo -s root @ desktop: # echo $ PATH / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin: / usr / X11R6 / bin: / opt / android-sdk-linux_x86 / tools: / opt / android-sdk-linux_x86 / platform-tools
MountainX
1
Voici une chose étrange. J'obtiens des résultats différents de "quel adb" selon que je l'exécute en tant que root ou que je l'exécute avec sudo. Voici la sortie $ sudo qui adb $
MountainX
Spécifiez ensuite le chemin complet lorsque vous exécutez adb en tant que root.
EboMike
13

Sur mon système Linux Gentoo / Funtoo, j'ai des problèmes similaires:

Je n'ai toujours pas la bonne description de l'appareil et des autorisations insuffisantes:

# sudo ./adb devices
List of devices attached 
????????????    no permissions
# ./adb usb
error: insufficient permissions for device

Pour moi aide le howto de Google. Dans mon cas, j'avais besoin d'ajouter la règle udev:

# cat /etc/udev/rules.d/51-android.rules 
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666", GROUP="plugdev" 

et paramétrer les droits du système de fichiers

# chmod a+r /etc/udev/rules.d/51-android.rules

Après avoir rebranché mon smartphone, l'accès au téléphone a réussi, il apparaît également maintenant dans le sélecteur d'appareils Android d'Eclipse:

# sudo ./adb devices
List of devices attached 
3XXXXXXXXXXXXXC device
# sudo ./adb usb
restarting in USB mode

Vous devez également vérifier l'appartenance de votre utilisateur au groupe plugdev .

alouette
la source
3

Chaque réponse que j'ai lue indique le SUBSYSTEM=="usb". Cependant, mon udev (peut-être ancien) avait besoin que cela soit changé enDRIVER=="usb" . Enfin, je peux exécuter le serveur adb en tant qu'utilisateur non root ... yay.

Il peut être instructif de regarder la sortie de udevmonitor --env, suivie de la sortie de

udevinfo -a -p <DEVICE_PATH_AS_REPORTED_BY-udevmonitor>
anon
la source
Si udevmonitoret udevinfon'existent pas sur votre machine, utilisez udevadm monitoret à la udevadm info -a -p ...place.
Ash
2

Veuillez noter que les IDE comme IntelliJ IDEA ont tendance à démarrer leur propre serveur adb.

Même le fait de tuer manuellement le serveur et d'exécuter une nouvelle instance avec sudo n'aidera pas ici tant que vous n'aurez pas obligé votre IDE à tuer le serveur lui-même.

Sébastianwagner
la source
2

le redémarrage du serveur adb en tant que root a fonctionné pour moi. voir:

derek@zoe:~/Downloads$ adb sideload angler-ota-mtc20f-5a1e93e9.zip 
loading: 'angler-ota-mtc20f-5a1e93e9.zip'
error: insufficient permissions for device
derek@zoe:~/Downloads$ adb devices
List of devices attached
XXXXXXXXXXXXXXXX    no permissions

derek@zoe:~/Downloads$ adb kill-server
derek@zoe:~/Downloads$ sudo adb start-server
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
derek@zoe:~/Downloads$ adb devices
List of devices attached
XXXXXXXXXXXXXXXX    sideload
Keredson
la source
Moi aussi: Linux Mint Serena 18.1 avec HTC Sensation. Alerte Noob: Cela fait 2 jours que je me moque de ça, donc les choses sont presque certainement snafu'd
Aethelbald
0

HTC One m7 exécutant Cyanogenmod 11 frais.

Le téléphone est connecté via USB et relie ma connexion de données.

Ensuite, j'ai cette surprise:

cinder@ultrabook:~/temp/htc_m7/2015-11-11$ adb shell
error: insufficient permissions for device

cinder@ultrabook:~/temp/htc_m7/2015-11-11$ adb devices
List of devices attached
????????????    no permissions

SOLUTION: désactivez le partage de connexion sur le téléphone.

cinder@ultrabook:~/temp/htc_m7/2015-11-11$ adb devices
List of devices attached
HT36AW908858    device
cinderman
la source
-3

Je viens de subir la même situation, la réinitialisation des données d'usine a bien fonctionné pour moi.

Andrii Krokhin
la source
C'est sûrement un commentaire?
Matthew Taylor
ma faute. Je voulais dire que la réinitialisation de l'appareil et le nettoyage des données ont bien fonctionné pour moi.
Andrii Krokhin