Comment configurer l'accès ADB pour les appareils Android?

39

J'utilise Ubuntu 12.10 et j'ai installé Android SDK, défini son chemin d'accès dans mon utilisateur .bashrcet cela fonctionne.

Le problème est que mon téléphone nécessite que adb soit exécuté par root pour les autorisations, mais en exécutant adb avec sudo, j'obtiens le message d'erreur suivant:

sudo: adb: commande introuvable

J'ai essayé d'utiliser simplement sudo -E adb start-server, mais cela ne fonctionne pas. J'ai essayé d'ajouter la ligne de chemin d'exportation à /root/.bashrcet (après avoir réalisé que cela n'a pas aidé) /etc/bash.bashrc.

Je me souviens que je pourrais l’installer sur mon Arch Linux, mais j’imagine que mon problème est maintenant lié au compte racine Ubuntu qui ne se comporte pas comme prévu.


Ce que je ne comprends pas, c'est ce qui suit:

Ceux-ci ne fonctionnent pas:

martin@alyx:~$ sudo adb devices
sudo: adb: command not found

Ceci fait (en tapant le chemin complet):

martin@alyx:~$ sudo /opt/android-sdk-linux/platform-tools/adb devices
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
List of devices attached 
CM7-Blade   device

Cela ne fonctionne pas (avec -E avec sudo):

martin@alyx:~$ sudo -E adb devices
sudo: adb: command not found

Cela fonctionne (en tant que root):

martin@alyx:~$ sudo su
root@alyx:/home/martin# adb devices
List of devices attached 
CM7-Blade   device

Je suis totalement dérouté maintenant et j'apprécierais quelques précisions sur la manière de tracer une voie pour Sudo ou sur la manière dont je pourrais résoudre mon problème.

(Et s'il vous plait, ne dites pas que adb ne devrait pas être lancé en tant que root.)

Merci d'avance!

Edit: En exigeant des autorisations root, je veux dire que j'en ai besoin car sinon, je reçois:

$ adb devices 
List of devices attached 
????????????    no permissions

qui ne se produit pas en tant que superutilisateur. Désolé si c'était un malentendu.

Martin Fejes
la source
J'ai remarqué avec Windows et Ubuntu que les périphériques Android n'apparaissent souvent pas si vous les avez connectés à un port USB 3, ce qui permet de résoudre le problème.
Paul Grégoire
des docs: source.android.com/source/…
Paschalis

Réponses:

48

Veuillez lire d'abord ce qui suit: Comment configurer Android ADB?


Configuration de l'accès USB

Tout d'abord, vous n'avez pas besoin d'autorisations root pour exécuter ADB si vous avez défini les autorisations en conséquence. Le site AOSP fournit des exemples de configuration de l'accès USB pour les périphériques Pixel / Nexus. Vous pouvez utiliser le schéma suivant pour les périphériques non-Nexus:

SUBSYSTEM=="usb", ATTR{idVendor}=="xxxx", ATTR{idProduct}=="xxxx", MODE="0600", OWNER="<username>"

Les identifiants de fournisseur et de produit peuvent être obtenus en utilisant lsusbet en recherchant votre appareil. (Remarque: l'appareil est en fait un Galaxy Nexus.)

$ lsusb | grep -i samsung
Bus 002 Device 103: ID 04e8:6860 Samsung Electronics Co., Ltd GT-I9100 Phone [Galaxy S II]

Donc, ma /etc/udev/rules.d/51-android.rulesrègle udev ressemble à ceci:

# adb protocol on maguro/toro (Galaxy Nexus)
SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", ATTR{idProduct}=="6860", MODE="0600", OWNER="username"

Vous voudrez peut-être répéter cette opération pour les autres états du téléphone, comme Fastboot, si nécessaire. Pour que les modifications prennent effet, rechargez udev ( sudo udevadm control --reload) ou redémarrez (recommandé).

Rendre les programmes disponibles

Au lieu de modifier la variable de chemin, je suggérerais d'ajouter un lien symbolique à l'exécutable soit dans ~/bin/(utilisateur uniquement), soit dans /usr/local/bin/(système entier).

mkdir ~/bin/
ln -s /opt/android-sdk-linux/platform-tools/adb ~/bin/
LiveWireBT
la source
1
J'ai essayé d'ajouter les règles udev à mon téléphone, mais cela ne m'a pas aidé. Je me suis dit que mon problème n'était peut-être pas clair. S'il vous plaît, si vous avez le temps, voir la fin de ma question.
Martin Fejes
Avez-vous ajouté les bons identifiants? modaco.com/topic/329317-guide-ubuntu-and-the-blade Avez-vous redémarré votre ordinateur ? adb devicestravaille pour moi sans privilèges root.
LiveWireBT
4
Yay, ça marche! J'ai ajouté les règles udev à /etc/udev/rules.d/51-android-rules et apparemment c'était une erreur. Après avoir utilisé /lib/udev/rules.d/11-android.rules, tout allait bien! Je n'ai pas besoin de persmissions de racine! Merci beaucoup!
Martin Fejes
Avait le même ???????????? pas de situation des autorisations et votre réponse résolue, merci.
Panthro
pour une raison quelconque, cela ne fonctionnait pas ici, je devais démarrer adb server avec sudo; aucune idée où pourrais-je regarder pour voir pourquoi cela n'a pas fonctionné?
Aquarius Power
29

Je suis tombé sur le même problème avec une tablette en provenance de Chine (un fabricant étrange).

En plus du /etc/udev/rules.d/51-android.rulesfichier, je devais ~/.android/adb_usb.iniaussi changer .

Courez ci-dessous sur le terminal;

sudo gedit ~/.android/adb_usb.ini

et votre adb_usb.inifichier devrait ressembler à:

# ANDROID 3RD PARTY USB VENDOR ID LIST -- DO NOT EDIT.
# USE 'android update adb' TO GENERATE.
# 1 USB VENDOR ID PER LINE.
# ie 0x2207
0x<!!!Your Vendor ID here!!!>

Appareil déconnecté et reconnecté et devant également exécuter des commandes sous le terminal;

adb kill-server

et après

adb start-server

Et l'appareil a été détecté.

Uygar Y
la source
J'ai essayé avec votre astuce aussi mais rien n'a changé, aucune idée où je pourrais regarder pour voir pourquoi cela n'a pas fonctionné ici?
Aquarius Power
Joli. Cela a fonctionné pour moi. Parallèlement à cela, je devais mettre à jour mon adb .
Crazy Peanut de Waffle
Cette solution ne fonctionne pas sur Ubuntu 14.04. La liste des appareils sort toujours vide.
Luís de Sousa
1
Merci beaucoup, Uygar, j'ai enfin trouvé la solution qui me convient.
Dmitry Popov
C'est ce qui me manquait. En fait, 0x2207dans votre exemple, il s'agit du même identifiant de fournisseur que mon appareil utilise.
ssokolow
2

Dans mon cas, au lieu du mode MTP, certains téléphones intelligents devaient simplement être configurés en mode PTP, contrairement à la plupart des appareils qui exigeaient que le mode MTP soit détecté par mon Android Studio (v1.5.1).

Assurez-vous d’abord d’essayer les modes MTP et PTP avant de passer à la configuration ADP plus complexe de Unix et de ne pas les endommager.

Dans les nouveaux appareils, vous pouvez le choisir directement dans les options de développement, tandis que dans les anciens modèles, il s’agit des Options de connexion USB de la barre d’état.

Pourtant, les derniers appareils Sony Xperia à partir de Z5 et des versions ultérieures ne fonctionneront pas, quel que soit le mode USB. Peut-être que mon Android Studio est vieux ou que je dois aussi creuser avec les configurations Unix ADP.

George Goodporter
la source
1

Suivez ces étapes:

  1. Définir les vars android

    Dans un premier temps, allez chez vous et appuyez sur Ctrl+, Hil montrera que les fichiers cachés recherchent maintenant un .bashrcfichier, ouvrez-le avec n’importe quel éditeur de texte, puis placez les lignes ci-dessous à la fin du fichier:

    export ANDROID_HOME=/myPathSdk/android-sdk-linux
    export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools
    
  2. Redémarrage

  3. Utiliser le périphérique pour déboguer

    Écoutez la connexion:

    adb -a
    

    Connectez votre appareil Android et autorisez-le:

    cordova run android --device
    
Vladimir Tamayo
la source
0

Configuration de l'accès USB

L'approche recommandée consiste à créer un fichier à l'adresse /etc/udev/rules.d/51-android.rules.

Veuillez saisir le terminal:

wget -S -O - http://source.android.com/source/51-android.txt | sed "s/<username>/$USER/" | sudo tee >/dev/null /etc/udev/rules.d/51-android.rules; sudo udevadm control --reload-rules

Ces nouvelles règles entrent en vigueur lors du prochain branchement d'un périphérique. Il peut donc être nécessaire de débrancher le périphérique et de le rebrancher à l'ordinateur.

Benny
la source
0

Bien que la réponse acceptée m'aide à faire avancer les choses, j'étais toujours perplexe:

martin@alyx:~$ sudo adb devices
sudo: adb: command not found

et particulièrement

martin@alyx:~$ sudo -E adb devices
sudo: adb: command not found

depuis selon sudo --help:

-E, --preserve-env          preserve user environment when running command

Il s'avère que sur de nombreuses distributions Linux (y compris Debian et Ubuntu) secure_path, les env_resetoptions sont activées par défaut, ce qui réinitialise votre PATHvariable et la définit secure_path. Vous pouvez le changer dans le /etc/sudoersfichier en utilisant visudo.

Sinon, vous pouvez exécuter:

sudo env PATH=$PATH adb devices
Maxnorbi
la source
-1

Essayez cette commande: sudo tools/android update sdk --no-ui

README DU SDK:

Bienvenue sur le SDK Android! L’archive Android SDK ne contient initialement que les outils de base du SDK. Il ne contient pas de plate-forme Android ni de bibliothèques tierces. En fait, il ne dispose même pas de tous les outils nécessaires pour développer une application. Pour commencer à développer des applications, vous devez installer Platform-tools et au moins une version de la plate-forme Android, à l'aide du SDK Manager. Platform-tools contient des outils de construction régulièrement mis à jour pour prendre en charge les nouvelles fonctionnalités de la plateforme Android (ce qui explique pourquoi elles sont distinctes des outils de base du SDK), notamment adb, dexdump et autres. Pour installer Platform-tools, les plates-formes Android et d'autres add-ons, vous devez disposer d'une connexion Internet. Par conséquent, si vous prévoyez d'utiliser le SDK hors connexion, veillez à télécharger les composants nécessaires lorsque vous êtes en ligne. Pour démarrer le gestionnaire de SDK, veuillez exécuter le programme "Android". À partir de la ligne de commande, vous pouvez également déclencher directement une mise à jour en exécutant:tools/android update sdk --no-ui

utilisateur121040
la source
Je ne suis pas sûr que cela réponde à la question initiale ...
landroni