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.
Veuillez lire ce qui suit en premier: Comment configurer Android ADB?
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 lsusb
et 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é).
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/
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é.
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.
Suivez ces étapes:
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
Reboot
tiliser le périphérique pour déboguer
Écoutez la connexion:
adb -a
Connectez votre appareil Android et autorisez-le:
cordova run Android --device
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.