web-dev-qa-db-fra.com

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

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

Le problème est que mon téléphone nécessite que adb soit exécuté par root pour obtenir des autorisations, mais en exécutant adb avec Sudo, le message d'erreur suivant s'affiche:

Sudo: adb: commande non trouvée

J'ai essayé d'utiliser simplement Sudo -E adb start-server, mais cela ne fonctionne pas. J'ai essayé d'ajouter la ligne du chemin d'exportation à /root/.bashrc et (après s'être rendu compte que cela n'avait pas aidé) à /etc/bash.bashrc.

Je me souviens que je pouvais le configurer sur mon Arch Linux, mais je suppose que mon problème est maintenant lié au compte root Ubuntu qui ne se comporte pas comme je l’attendais.


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 confus 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 les permissions 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.

38
Martin Fejes

Veuillez lire ce qui suit en premier: 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 pour 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 périphérique. (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 règle /etc/udev/rules.d/51-Android.rules 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 modification de la variable path , je suggérerais d'ajouter un lien symbolique à l'exécutable soit dans ~/bin/ (utilisateur uniquement), soit dans /usr/local/bin/ (à l'échelle du système).

mkdir ~/bin/
ln -s /opt/Android-sdk-linux/platform-tools/adb ~/bin/
48
LiveWireBT

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

En plus du fichier /etc/udev/rules.d/51-Android.rules, je devais également modifier ~/.Android/adb_usb.ini.

Courez ci-dessous sur le terminal;

Sudo gedit ~/.Android/adb_usb.ini

et votre fichier adb_usb.ini devrait ressembler à ceci:

# 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é.

29
Uygar Y

Dans mon cas, au lieu du mode MTP, certains smartphones 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 blesser.

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 également utiliser Dig avec les configurations Unix ADP.

2
George Goodporter

Suivez ces étapes:

  1. Définissez Android vars

    Allez d'abord chez vous et appuyez sur Ctrl + H il vous montrera les fichiers cachés maintenant cherchez le fichier .bashrc, 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. Reboot

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

    Écoutez la connexion:

    adb -a
    

    Connectez votre appareil Android et autorisez-le:

    cordova run Android --device
    
1
Vladimir Tamayo

Configuration de l'accès USB

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

S'il vous plaît tapez dans 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 la prochaine fois qu'un périphérique est branché. Il peut donc être nécessaire de débrancher le périphérique et de le rebrancher à l'ordinateur.

0
Benny