configurer le périphérique pour le développement (???????????? sans permissions)

J’utilise un téléphone Samsung Galaxy ( plate- forme Android 4.0 ).

Je développe une application Android sur Ubuntu Linux OS. Je voudrais exécuter mon application directement sur le téléphone portable Samsung, alors j’ai effectué les étapes de configuration suivantes:

  1. dans mon projet fichier AndroidManifest.xml , ajoutez android:debuggable="true" à l’élément

  2. Sur l’appareil, Paramètres> Activer les sources inconnues

  3. Sur le périphérique, Paramètres> Options de développeur permettent le débogage USB

  4. Sur mon ordinateur, créez le fichier /etc/udev/rules.d/51-android.rules , le contenu du fichier est le suivant:

    SUBSYSTEM == “usb”, ATTR {idVendor} == “04E8”, MODE = “0666”, GROUP = “plugdev”

  5. Sur mon ordinateur, exécutez la commande chmod a+r /etc/udev/rules.d/51-android.rules

Ensuite, j’ouvre un terminal et adb devices commande adb devices sur mon ordinateur, j’ai:

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

Depuis que je n’ai pas vu mon appareil mais seulement ???????????? no permissions ???????????? no permissions , je lance alors les commandes suivantes:

  adb kill-server adb start-server adb devices 

Mais j’ai toujours:

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

Pourquoi? Qu’est-ce que je rate?

Ce qui fonctionne pour moi, c’est de tuer et de redémarrer le serveur ADB. Sous Linux: sudo adb kill-server puis sudo adb start-server . Ensuite, il détectera presque tous les périphériques hors de la boîte.

Rien n’a fonctionné pour moi jusqu’à ce que je trouve enfin la réponse ici: http://ptspts.blogspot.co.il/2011/10/how-to-fix-adb-no-permissions-error-on.html

Je copie le texte ici au cas où il disparaîtrait dans le futur.

Créez un fichier nommé /tmp/android.rules avec le contenu suivant (les numéros de fournisseur hexadécimaux proviennent de la page de liste des fournisseurs):

 SUBSYSTEM=="usb", ATTRS{idVendor}=="0bb4", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="0e79", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="0502", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="0b05", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="413c", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="0489", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="091e", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="18d1", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="0bb4", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="12d1", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="24e3", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="2116", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="0482", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="17ef", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="1004", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="22b8", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="0409", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="2080", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="0955", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="2257", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="10a9", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="1d4d", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="0471", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="04da", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="05c6", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="1f53", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="04e8", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="04dd", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="0fce", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="0930", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="19d2", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="1bbb", MODE="0666" 

Exécutez les commandes suivantes:

 sudo cp /tmp/android.rules /etc/udev/rules.d/51-android.rules sudo chmod 644 /etc/udev/rules.d/51-android.rules sudo chown root. /etc/udev/rules.d/51-android.rules sudo service udev restart sudo killall adb 

Déconnectez le câble USB entre le téléphone et l’ordinateur.

Reconnectez le téléphone.

Exécutez les adb devices pour confirmer que maintenant il est autorisé à accéder au téléphone.

Veuillez noter qu’il est possible d’utiliser , USER="$LOGINNAME" au lieu de , MODE="0666" dans le fichier .rules , en remplaçant $LOGINNAME par votre nom de connexion, c’est-à-dire ce que id -nu imprime.

Dans certains cas, il peut être nécessaire de donner au fichier de règles udev un nom proche de la fin, tel que z51-android.rules .

Entrez les commandes suivantes:

adb kill-server sudo ./adb start-server

Le problème est que vous n’exécutez pas le serveur adb en tant que root.

Essayé tout ce qui précède, aucun n’a fonctionné .. finalement travaillé lorsque je passe de connecté à partir de MTP à la caméra (PTP).

Il y a beaucoup de mauvaises réponses à cette question allant de l’insistance à exécuter adb tant que root (qui ne devrait pas être présentée comme la solution unique ou même recommandée) pour résoudre des problèmes totalement indépendants.

Voici la recette la plus courte et la plus universelle pour prendre en charge les permissions pour tous les adb et fastboot à la fois:

 echo 'ACTION=="add", SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ENV{ID_USB_INTERFACES}=="*:ff420?:*", MODE="0666"' | sudo tee /etc/udev/rules.d/99-android.rules sudo udevadm control --reload-rules sudo udevadm sortinggger --verbose --action=add --subsystem-match=usb 

Ou vous pouvez utiliser une version légèrement plus longue que celle que j’ai postée dans cet aperçu .

Quant à la chose spécifique que OP a faite de mal dans sa question – elle ne rechargeait pas les règles udev après avoir édité le fichier .rules .

En outre, OP n’a pas indiqué quelle version d’Android (alias ROM) il avait sur son téléphone. La valeur idVendor est définie dans le logiciel et dépend donc de la ROM. La valeur de 04E8 qu’il utilisait dans sa règle d’origine n’aurait donc fonctionné que pour les appareils équipés de ROM de stock Samsung. Mais ce n’est pas un problème pour cette règle udev – elle correspond à tous les périphériques avec interfaces adb ou fastboot indépendamment de leur VendorID .

Dans Archlinux, cela peut arriver occasionnellement. Le correctif:

 $ sudo -s # adb kill-server # adb start-server 

Pour ceux qui utilisent debian, le guide pour configurer un périphérique sous Ubuntu pour créer le fichier “/etc/udev/rules.d/51-android.rules” ne fonctionne pas. J’ai suivi les instructions d’ ici . La même chose ici pour référence.

Editez ce fichier en tant que superutilisateur

 sudo nano /lib/udev/rules.d/91-permissions.rules 

Trouver le texte similaire à celui-ci

 # usbfs-like devices SUBSYSTEM==”usb”, ENV{DEVTYPE}==”usb_device”, \ MODE=”0664″ 

Puis changez le mode pour 0666 comme ci-dessous

 # usbfs-like devices SUBSYSTEM==”usb”, ENV{DEVTYPE}==”usb_device”, \ MODE=”0666″ 

Cela permet à adb de fonctionner, mais nous devons néanmoins configurer le périphérique pour qu’il soit reconnu. Nous devons créer ce fichier en tant que superutilisateur,

 sudo nano /lib/udev/rules.d/99-android.rules 

et entrez

 SUBSYSTEM==”usb”, ENV{DEVTYPE}==”usb_device”, ATTRS{idVendor}==”0bb4″, MODE=”0666″ 

la ligne ci-dessus est pour HTC, suivez le post de @ grebulon pour la liste complète.

Enregistrez le fichier, puis redémarrez udev en tant que super utilisateur

 sudo /etc/init.d/udev restart 

Connectez le téléphone via USB et il doit être détecté lorsque vous comstackz et exécutez un projet.

J’ai eu le même problème, la solution est aussi simple: (en passant, vous n’avez pas besoin de rooter votre appareil.)

  1. Tapez “su” pour passer en super utilisateur.
  2. your-path / adb kill-server.
  3. votre serveur de démarrage ad-path / adb.
  4. Si aucune erreur ne se produit, vous pouvez voir la liste des périphériques avec “your-path / adb devices” dans le compte root.
  5. Quittez le super utilisateur.
  6. Maintenant, vous pouvez effectuer des “périphériques adb” dans votre compte.

Prendre plaisir.

J’ai eu le même problème avec mon Galaxy S3. Mon problème était que la valeur 04E8 n’était pas la bonne. Pour trouver le bon, connectez votre smartphone à l’ordinateur et lancez lsusb dans le terminal. Il listera votre smartphone comme ceci:

 Bus 002 Device 010: ID 18d1:d002 Google Inc. 

La valeur 18d1 est donc 18d1 . Et la ligne dans /etc/udev/rules.d/51-android.rules doit être:

 SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666", GROUP="plugdev" 

Puis je lance sudo udevadm control --reload-rules et tout a fonctionné!

Je sais que cela pourrait être un peu tard mais voici un très bon article sur la façon d’append manuellement Android ADB USB Driver. Ajout manuel du pilote USB ADB Android dans Ubuntu 14.04 LTS

Édité pour append un contenu de lien

Pas

Remarque: assurez-vous d’avoir connecté votre appareil Android en mode de débogage USB

Ouvrez le terminal ( CTRL + ALT + T ) et entrez la commande: lsusb

Maintenant, vous pouvez obtenir une réponse similaire à ceci:
Bus 002 Device 013: ID 283b:1024

Note: En référence à ce Bus 002 Device 008: ID 283b:1024
{idVendor}==”283b” {idProduct}==”1024″

Maintenant, entrez la commande suivante: sudo gedit /etc/udev/rules.d/51-android.rules
Cela crée le fichier de règles Android ( 51-android.rules ) ou ouvre le fichier existant à l’emplacement spécifié ( /etc/udev/rules.d )

Ajoutez une nouvelle ligne à ce fichier:
SUBSYSTEM==”usb”, ATTRS{idVendor}==”283b”, ATTRS{idProduct}==”1024″, MODE=”0666″

Remarque Modifiez les valeurs idVendor & idProduct avec les valeurs de votre appareil. Sauver et fermer.

Entrez maintenant la commande suivante:
sudo chmod a+rx /etc/udev/rules.d/51-android.rules – accorde un droit de lecture / exécution
sudo service udev restart – Redémarrez le service udev

Maintenant, nous devons append idVendor à adb_usb.ini . Entrez les commandes suivantes:
cd ~/.android
gedit adb_usb.ini

Ajoutez la valeur suivante 0x283b

Ce n’est rien mais 0x (valeur idVendor ). Alors remplacez la valeur par. respect de la valeur de votre appareil Enregistrez et fermez le fichier.

Entrez maintenant la commande suivante:
sudo service udev restart

Branchez l’appareil Android et reconnectez-le.
Entrez maintenant la commande suivante:
adb kill-server
adb devices

Voilà! Votre appareil doit être répertorié.

Copié à partir de l’ ajout manuel du pilote Android ADB USB dans Ubuntu 14.04 LTS

Travaillé pour moi

  1. Suivez les instructions sur http://developer.android.com/guide/developing/device.html
  2. Remplacez l’ID de fournisseur de “0bb4” par “18d1” dans /etc/udev/rules.d/51-android.rules. Ou ajoutez une autre ligne indiquant: SUBSYSTEM == “usb”, SYSFS {idVendor} == “18d1”, MODE = “0666”
  3. redémarrez l’ordinateur ou redémarrez simplement le service udev.

Lorsque vous redémarrez udev, tuez le serveur adb et démarrez le serveur adb par le chemin d’installation de Android sdk et faites tout sur sudo. puis lancez les périphériques adb, il résoudra le problème de permission.

Mon appareil est POSITIVO et mon système opérationnel est Ubuntu 14.04 LTS Donc, mon problème était en nom de variable

Je crée le fichier /etc/udev/rules.d/51-android.rules et mets SUBSYSTEM=="usb", SYSFS{idVendor}=="1662", MODE="0666"

J’ai déconnecté le périphérique et exécuté:

 $ sudo udevadm control --reload-rules $ sudo service udev restart 

après cela, j’ai connecté l’appareil Android en mode développeur à nouveau et

 $ adb devices List of devices attached 1A883XB1K device 

Sans détwigr

Toutes les réponses fournies supposent que vous pouvez détwigr et reconnecter le câble USB. Dans les cas où cela n’est pas possible (par exemple, lorsque vous êtes à distance), vous pouvez faire ce qui suit essentiellement pour faire ce que les règles udev suggérées feraient lors de la re-connexion:

 lsusb 

Trouvez l’appareil qui vous intéresse, par exemple:

 Bus 003 Device 005: ID 18d1:4ee4 Google Inc. Nexus 

Prenez note du numéro de bus sur lequel il est allumé et exécutez-le, par exemple pour le bus 003 :

 sudo chmod a+w /dev/bus/usb/003/* 

Clairement, cela peut être plus permissif que vous ne le souhaitez (il peut y avoir plus de périphériques que celui-ci), mais vous avez l’idée.

Essayez à la place de GROUP="plugdev" utilisez le groupe principal de votre utilisateur.

La communauté GitHub maintient les règles udev

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

C’est la liste de règles udev la plus complète que j’ai vue jusqu’à présent, bien plus que la version recommandée par sudo apt-get install android-tools-adb dans la documentation officielle , essayez-la.

Vous ne devez PAS exécuter le serveur adb en tant que root, adb autres réponses. Au lieu de cela, si vous utilisez Arch Linux, procédez comme suit:

  1. Installez le paquet android-udev avec Pacman
  2. Rechargez les règles udev:

     # udevadm control --reload-rules 
  3. Ajoutez-vous au groupe adbusers , puis déconnectez-vous et connectez-vous:

     # usermod -aG adbusers $LOGNAME 

Source: https://wiki.archlinux.org/index.php/android#Configuring_adb

Veuillez NE PAS suivre les solutions suggérant d’utiliser sudo ( sudo adb start-server )! Cela fonctionne adb en tant que root (administrateur) et il n’est pas censé fonctionner comme ça !!! C’est une solution de contournement !

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

La bonne chose à faire est de configurer votre système pour que l’utilisateur ait la permission, consultez ce guide que j’ai écrit sur la façon de le faire correctement.

Dans mon cas sur Ubuntu 12.04 LTS, je devais changer mon mode USB Incredible HTC de charge en média, puis l’appareil apparait sous adb. Bien sûr, le débogage était déjà effectué dans les deux cas.

J’ai utilisé su et ça a commencé à fonctionner. Lorsque j’utilise Jetbrains avec un utilisateur régulier, je vois ce problème mais après le redémarrage de Jetbrains en mode su, je peux voir mon appareil sans rien faire.

J’utilise Ubuntu 13.04 et Jetbrains 12.1.4

Vous pouvez également essayer de modifier le fichier adb_usb.ini , situé dans /home/username/.android/ . Ce fichier contient la liste des fournisseurs d’ID que vous souhaitez connecter. Vous ajoutez simplement le fournisseur de l’ID de votre appareil dans une nouvelle ligne (il s’agit d’un identifiant par ligne). Puis redémarrez le serveur adb et retwigz votre appareil.

Cela a fonctionné pour moi sur Ubuntu 12.10.

Si quelqu’un fait face au message d’erreur suivant lorsqu’il utilise des adb devices

 no permissions (verify udev rules); see [http://developer.android.com/tools/device.html] 

Exécuter le suivant

 sudo -s adb kill-server adb start-server 

Cela a résolu le problème pour moi sur un appareil Android personnalisé