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:
dans mon projet fichier AndroidManifest.xml , ajoutez android:debuggable="true"
à l’élément
Sur l’appareil, Paramètres> Activer les sources inconnues
Sur le périphérique, Paramètres> Options de développeur permettent le débogage USB
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”
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.)
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
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
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
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:
android-udev
avec Pacman Rechargez les règles udev:
# udevadm control --reload-rules
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é