J'ai un Motorola Defy + enraciné qui exécute une coutume CyanogenMod v11 ROM (version nocturne) créé par Quarx . Sous Android Studio Workspace (ASW) v.1.1.0, lorsque je tente de déboguer sur cet appareil, je reçois
????????????[null]
listés dans la fenêtre Choose Device, avec la fenêtre Logcat montrant
insufficient permissions for device
J'aimerais vraiment utiliser cet appareil et ROM à des fins de débogage.
Quand j'entre lsusb
à partir de la ligne de commande, je reçois,
Bus 002 Device 002: ID 22b8:431d Motorola PCS
C'est le bon identifiant de périphérique pour les unités Motorola. J'ai installé 51-Android.rules et 71-Android.rules dans /etc/udev/rules.d/
avec les identifiants Motorola appropriés dans ces fichiers.
J'ai également essayé Révoquer l'autorité de débogage USB, à partir de Options pour les développeurs sur le périphérique, sans succès.
Je n’ai pas essayé d’exécuter ASW en tant que root en espérant qu’il y aurait une autre option; y a-t-il?
Mise à jour: J'ai pu entrer et accéder à la BAD en
uvachem-gsmith2:/home/greg/Android/Sdk/platform-tools # ./adb
J'ai ensuite fait un serveur kill, fait un SU à l'utilisateur root et redémarré le serveur. J'ai ensuite essayé de me connecter à l'appareil à partir d'Android Studio. Vous avez reçu un message sur le périphérique indiquant l’acceptation de la clé RSA par le PC, vous avez répondu "Oui", puis vous avez pu déployer l’application sur le périphérique. Revenons donc à ma question initiale: existe-t-il un autre moyen d'accéder à ce périphérique sans se connecter en tant que root? Il semble qu'il y ait un problème de permission sur le système de fichiers du téléphone qui empêche cela ...
Mise à jour n ° 2 Le problème principal ici était une question de permission. Même si exécuter ADB en tant que root autorisera l'accès au périphérique Android rooted, une meilleure solution consiste à modifier les autorisations dans le fichier udev pour ce périphérique ... en réinitialisant les valeurs 664 à 666 (voir la réponse ci-dessous). Cela permet au PC d’accéder au système de fichiers sur le périphérique.
Changer les permissions dans cette ligne depuis /etc/udev/rules.d/51-Android.rules,
#Motorola
SUBSYSTEM=="usb", ATTR{idVendor}=="22b8", MODE="0664", GROUP="plugdev"
à,
#Motorola
SUBSYSTEM=="usb", ATTR{idVendor}=="22b8", MODE="0666", GROUP="plugdev"
résout ce problème d'une manière qui n'exige PAS l'exécution de adb en tant que root.
J'avais ceci en utilisant une machine Linux avec un Nexus 4 sous Android 5.1
Le correctif était d'activer à la fois le "débogage via USB" et "se connecter en tant que MTP". Le contraire est également vrai si vous utilisez le même appareil et Android Studio et adb sous OSX: pour permettre à Android Studio de reconnaître le combiné, je dois désactiver la connexion en tant que MTP.
J'ai trouvé une réponse simple qui a fonctionné pour moi:
adb kill-server
Sudo adb start-server
Sudo adb devices
Vous trouverez votre appareil alors. J'espère que cela t'aides.
Référence: http://itsfoss.com/fix-error-insufficient-permissions-device/
C'est simple .. .. Il suffit de changer votre mode USB en mode de transfert de fichier, puis cela fonctionne.
MTP n'est plus disponible. Sur mon Android 8, l'option "Transférer des fichiers" ne fonctionnait pas.
"Transférer des photos PTP" est opérationnel et Studio a indiqué le nom de l'appareil.
mes pas
DANS mon téléphone Symphony W75 , En option Connexion à un ordinateur USB -> sélection Connexion en tant que périphérique multimédia (MTP) a résolu le problème.
J'ai mis à jour mon périphérique (Nvidia Shield) qui se connectait auparavant correctement, donc je savais que la configuration de l'ordinateur était déjà correcte. Les paramètres de développeur semblent avoir une nouvelle disposition sur Android 7.0.
Il se trouve sous Paramètres> Préférences> Options du développeur> Réseau> Sélection de la configuration USB
Ici, je devais sélectionner PTP et tout fonctionne à nouveau correctement:
J'ai eu le même problème avec un Prestigio PMP5570C tablette,
tout ce que vous avez à faire est de confirmer sur votre tablette que vous souhaitez copier des données vers/depuis votre ordinateur (ce que j'ai oublié) et d'ajouter les 2 lignes que @portsample a écrites.
Vous pouvez trouver le idVendor de votre périphérique en tapant
lsusb
dans UBUNTU 12.04, alors vous obtenez:
Bus 001 Appareil 011: ID 2207 : 0010,
où 2207 est votre identifiant de fournisseur . Résumez la question et la réponse ...
J'ai fait un script pour cette erreur. Pour moi, cela fonctionne bien dans Fedora 28, mais cela devrait fonctionner dans de nombreuses distributions Linux. Il suffit de créer un fichier avec le contenu du script autoexpansé. Je l'ai appelé usbDebbugingAndroidStudio.sh
Donnez-lui la permission d'exécution avec: chmod +x usbDebbugingAndroidStudio.sh
Et lancez-le: Sudo ./usbDebbugingAndroidStudio.sh
Après cela, vérifiez la liste affichée par la commande lsusb et introduisez l’ID de Votre appareil . Par exemple: Mon résultat était: Bus 006 Device 002: ID 05c6:9091 Qualcomm, Inc.
Alors j’ai tapé 05c6
et appuyé sur Entrée.
Le scénario:
#!/usr/bin/env bash
#This script configure Android Debug Bridge permissions to solve the following
#error: com.Android.ddmlib.AdbCommandRejectedException: insufficient permissions for device
#This error is produced when you try to install an APK from Android Studio in your device.
#You can check the vendorId here:
#https://developer.Android.com/studio/run/device#setting-up
#If your device's brand isn't listed check the info displayed by the command lsusb
lsusb
#My output was:
#Bus 006 Device 002: ID 05c6:9091 Qualcomm, Inc.
#The id for this line is 05c6
echo -n "Enter the id of your mobile device: "
read usbProviderId
cd /etc/udev/rules.d/
Sudo touch 51-Android.rules
(
Sudo cat << _EOF_
SUBSYSTEM=="usb", ATTR{idVendor}=="$usbProviderId", MODE="0666", GROUP="plugdev"
_EOF_
) | Sudo tee 51-Android.rules
#Give read and write permissions to the file
Sudo chmod a+r /etc/udev/rules.d/51-Android.rules
#Kill the Android Debug Bridge server to restart it
cd $HOME/Android/Sdk/platform-tools
Sudo ./adb kill-server
#If this still doesn't work unplug the usb cable and connect again.
#And repeat the last step Kill the ADB server.
Qu'est-ce que le F ...! Note: Je l'ai vu sur Android 8.1 sur un One + 5t ...
Même si nous faisons tout ce qui précède, il est nécessaire de créer quelque chose sur votre appareil Android .. en plus d’entrer dans le menu des options de développement (débogage usb) (n’hésitez pas à réinitialiser "annuler l’autorisation" version française ;) )
Si certaines personnes rencontrent le même problème que moi, cela pourrait également vous être utile: N'oubliez pas d'autoriser les périphériques de votre téléphone (chaque fois que vous vous connectez à USB sur le périphérique Android si vous ne cochez pas toujours la case ). De plus, vous pouvez supprimer les anciens appareils autorisés sur votre téléphone et commencer par le paramètre approprié pour autoriser clairement votre ordinateur sur votre appareil Android.
Lorsque vous connectez le périphérique Android, une fenêtre contextuelle ou une notification vous invite à autoriser une adresse Mac ou équivalente au périphérique: autorisez-la si vous souhaitez autoriser la connexion entre votre ordinateur Linux et votre périphérique Android.
Il est nécessaire d'obtenir une autorisation sur votre appareil Android lorsque vous utilisez le câble USB (si vous n'acceptez pas tout le temps, mais s'il s'agit de la première fois, ce message apparaîtra sur votre appareil) si vous ne le faites pas. les périphériques adb ne sont pas autorisés, même tous les droits sont valables (666, UDEV, etc.)
Note: merci pour votre aide précieuse ... Une dernière chose, désolée pour mon anglais
Pour moi et peut-être beaucoup d'autres, le problème concerne les droits d'accès aux périphériques de la machine. Maintenant que cela est bien documenté dans la documentation Android, je pense que la meilleure solution est ici
Sur les systèmes basés sur Debian, vous pouvez exécuter lsusb
ou dmesg
pour obtenir l'ID du fournisseur si votre fournisseur n'existe pas dans la liste donnée
Dans ma situation:
cd /etc/udev/rules.d/
Sudo chmod a+r ./*.rules #the name of your rules files.
Ensuite, je peux utiliser adb sans cette erreur.
Comme le message d'erreur l'a dit, c'est un problème de permission insuffisante. D'après mon expérience, cela ne s'est produit que sur ma machine Linux et fonctionne bien sous MacOS et Windows. Le lancement de votre Android Studio avec une autorisation root pourrait éviter ce problème.
$Sudo /your_Android_studio_path/bin/studio.sh
J'ai le même problème et j'ai résolu le problème en ajoutant le chemin de your_Android_sdk_path à la variable d'environnement comme
Sudo export $PATH:/your_Android_sdk_path/platform-tools/adb
vous souhaitez ajouter ceci à votre compte ou à l'ensemble du système en modifiant ces fichiers fichier ~/.bashrc
ou ~/.profile
ou /etc/profile, /etc/bash.bashrc, or /etc/environment
si vous souhaitez ajouter un accès à l'ensemble du système.
puis créer le lien de cela dans bin
Sudo ln -s /your_Android_sdk_path/platform-tools/adb /bin/adb
si vous avez utilisé des périphériques adb ou une commande, commencez par tuer le serveur comme
adb kill-server
puis démarrez le serveur comme
adb start-server
adb devices
vous pouvez maintenant voir que vos appareils sont listés correctement sans problème