GNU/Linux >> Tutoriels Linux >  >> Linux

Android - Comment faire détecter mon appareil par ADB sous Linux ?

Activer le débogage USB sur l'appareil

Cela se fait dans Paramètres > Développement . Si vous n'avez pas cette entrée dans votre menu de paramètres, allez dans Paramètres > À propos , faites défiler jusqu'au "Numéro de build" et martelez-le comme un singe jusqu'à ce que votre appareil vous félicite d'être devenu développeur. Retournez à la page principale des Paramètres menu, et près du bas, vous devriez maintenant voir les paramètres "Développement" (ou "Développeurs"). Saisissez-le et activez le débogage USB ici.

Identifier l'appareil

Nous devons d'abord savoir comment l'appareil s'identifie sur le bus USB. Pour cela, avec l'appareil Android PAS connecté, prenez un shell et exécutez la commande lsusb . Connectez ensuite l'appareil et exécutez à nouveau la commande. Repérez la nouvelle ligne. Pour le Wileyfox Swift ceci est un "appareil sans nom":

Bus 004 Device 003: ID 2970:2282

Configuration des règles pour ADB

Nous avons maintenant besoin des chiffres à la fin de la ligne ci-dessus :2970:2282 . Ceux-ci spécifient le fournisseur (2970) et l'appareil lui-même (2282). Ayant ces détails, nous avons besoin d'une racine shell sur notre machine Linux pour éditer (ou créer, s'il n'existe pas encore) le /etc/udev/rules.d/51-android.rules dossier. Là, ajoutez une ligne pour votre appareil. La ligne d'exemple suivante montre à quoi elle ressemble pour le Wileyfox Swift :¹

SUBSYSTEMS=="usb", ATTRS{idVendor}=="2970", ATTRS{idProduct}=="2282", MODE="0666" GROUP="androiddev", SYMLINK+="android%n"

Si vous avez un appareil différent, remplacez les ID de fournisseur et de produit par ce que vous avez trouvé ci-dessus lors de l'exécution de lsusb . Une courte explication de la ligne :

  • SUBSYSTEMS=="usb" :évidemment cette règle est pour l'USB uniquement;)
  • ATTRS{idVendor}=="2970"  :l'identifiant du fournisseur de l'appareil auquel cette règle est destinée
  • ATTRS{idProduct}=="2282"  :l'ID de l'appareil
  • MODE="0666" :autorisations que le nœud de périphérique doit obtenir. 0666 est assez laxiste, donnant à chaque utilisateur de votre système une autorisation de lecture et d'écriture - donc si vous êtes inquiet, vous pouvez essayer de le remplacer par un 0660 (ne donnant qu'un accès en lecture-écriture au propriétaire et au groupe, et refusant tout aux autres).
  • GROUP="androiddev" :à quel groupe le nœud de périphérique doit appartenir. Il doit s'agir d'un groupe auquel appartiennent les utilisateurs destinés à travailler avec l'appareil.
  • SYMLINK+="android%n"  :juste pour donner un joli nom au nœud, afin que vous puissiez le trouver plus facilement dans /dev (dans mon cas, il est apparu plus tard comme /dev/android5 )

Cette règle est entrée dans /etc/udev/rules.d/51-android.rules , il faut dire udev pour s'en servir. Le moyen le plus sûr (à côté d'un redémarrage;) est de redémarrer le udev service. Selon votre distribution Linux, cela peut être fait via service udev restart ou /etc/init.d/udev restart .

Cela fait, quittez le shell racine. Déconnectez et reconnectez votre appareil Android, essayez adb devices encore. La plupart des appareils sont apparus maintenant, mais pas le Wileyfox Swift – qui veut évidemment des câlins supplémentaires. Si vous êtes dans cette situation, ouvrez (ou créez s'il n'existe pas) le fichier ~/.android/adb_usb.ini et ajoutez-y une seule ligne, en nommant le fournisseur que vous avez trouvé avec lsusb au dessus; pour le Swift ce serait 0x2970 (yupp, ici vous devez le préfixer par 0x pour souligner qu'il s'agit d'un nombre hexadécimal). Redémarrez ensuite le serveur ADB :adb kill-server && adb start-server . Déconnectez et reconnectez l'appareil à nouveau. Maintenant adb devices devrait le voir.

Connexion de l'appareil

Vous avez peut-être remarqué adb devices vous a dit quelque chose comme 0123456789ABCDEF unauthorized . Ce n'est pas grave et pour votre sécurité (appareils):votre ordinateur doit d'abord être autorisé à pouvoir accéder à l'appareil. Alors lancez simplement adb shell maintenant - qui sera quitté avec un error: device unauthorized. Please check the confirmation dialog on your device. Suivez ce conseil (cochez éventuellement la case pour autoriser votre ordinateur de manière permanente), et vous avez terminé :vous pouvez maintenant utiliser adb pour accéder à votre appareil.

Mises à jour :

¹ Notez que dans les versions ultérieures de Linux, la syntaxe des règles UDEV a légèrement changé, comme par ex. jcomeau_ictx l'a souligné dans son commentaire. Pour les valeurs que nous avons trouvées ci-dessus, ce serait :

SUBSYSTEM=="usb", ATTR{idVendor}=="2970", ATTR{idProduct}=="2282", MODE="0666", GROUP="plugdev", SYMLINK+="android%n"

Deux différences :c'est maintenant SUBSYSTEM (pas de pluriel), et le groupe est passé de androiddev à plugdev (le premier n'existe pas sur les systèmes récents, le second existe et est généralement attribué au moins au premier utilisateur).

De plus, vous devrez peut-être ajouter le vendorID à votre ~/.android/adb_usb.ini (un identifiant par ligne, en notation hexadécimale) :

# ANDROID 3RD PARTY USB VENDOR ID LIST
# 1 USB VENDOR ID PER LINE.
0x2970

Quelques commentaires d'une distribution Linux plus récente. Fedora 29 avec un Nexus 5X ou le téléphone Nokia 7.1 (Android One).

Déconnectez d'abord le téléphone, s'il est déjà connecté.

  1. Installez les outils Android qui fourniront ADB (sudo dnf install android-tools )
  2. Copier les règles udev (sudo cp /usr/share/doc/android-tools/51-android.rules /etc/udev/rules.d )
  3. Recharger les règles udev (sudo udevadm control --reload-rules )
  4. Redémarrez ADB pour être sûr (sudo systemctl restart adb )

Connectez maintenant le téléphone et exécutez adb devices depuis la ligne de commande. Vous verrez probablement un appareil répertorié avec "aucune autorisation". C'est bon.
SI il n'est pas répertorié, vous devrez ajouter votre appareil au fichier de règles udev, mais pour moi, les appareils testés ont juste fonctionné avec les règles prédéfinies.

Exécutez adb shell et j'espère que vous recevrez une notification de sécurité sur le téléphone vous demandant si vous voulez faire confiance à l'ordinateur, sélectionnez oui.
SI à la place, votre ordinateur indique "erreur :autorisations insuffisantes pour l'appareil", vous devez vous assurer que sur le téléphone, vous avez défini votre port USB sur le mode "Transférer des fichiers", et non sur "Charger cet appareil". Sur Android 8.1, cela se trouve dans les paramètres sous "Appareils connectés"> "USB".

J'ai remarqué que même si tout fonctionnait aujourd'hui, cela pourrait se casser soudainement demain sans raison apparente. Si cela se produit, vérifiez d'abord le paramètre du port USB sur l'appareil, qui est peut-être revenu en mode de charge, et si cela échoue, révoquez les autorisations de débogage USB sur l'appareil (dans les paramètres sous les options du développeur), et vous devriez, espérons-le, obtenir le pop -up à nouveau lorsque vous exécutez adb shell .

Avec cela, je peux exécuter Android Studio et exécuter sur l'appareil connecté.


Linux
  1. Comment installer un pilote de périphérique sous Linux

  2. Comment créer un périphérique de bloc virtuel (périphérique de boucle/système de fichiers) sous Linux

  3. Comment obtenir des informations sur le fournisseur et le produit USB par programmation sous Linux ?

  4. Comment obtenir le nom d'hôte de l'IP (Linux) ?

  5. Comment obtenir un masque de réseau à partir de bash ?

Comment utiliser le terminal Linux dans Android

Comment installer Kali Linux sur un téléphone Android

Comment obtenir votre adresse IP sous Linux

Comment démarrer avec Arch Linux

Comment obtenir une liste de liens symboliques sous Linux

Comment démarrer un émulateur Android dans Ubuntu 16.04 ?