adb1) est un outil en ligne de commande permettant de communiquer avec des périphériques sous Android. Il permet d'effectuer diverses actions telles que installer/deboguer des applications, ouvrir un shell, copier des fichiers ou des APKs. Fonctionne en client/serveur avec 3 composantes:
adb est contenu dans le paquetage Android SDK Plateform-Tools. Il est disponible en standalone
Lorsque le client est exécuté, il commence par vérifier si un processus serveur existe. Si ce n'est pas le cas, il démarre le processus serveur écoutant sur le port 5037. Tous les clients communiquent leurs commandes au serveur via le port 5037.
Le serveur se charge de mettre en service les connexions vers tous les périphériques Android. Il identifie les émulateurs en scannant la plage de ports 5555-5585. Quand le serveur trouve un daemon adbd, il initie la connexion à celui-ci. A noter que chaque émulateur utilise une paire de ports consécutifs.
Une fois que le serveur a initialisé les connexions vers tous les périphériques, adb peut être utilisé pour accéder à ceux-ci. Puisque le serveur gère les connexions vers tous les périphériques et peut recevoir des commandes depuis de multiples clients, il est possible de contrôler n'importe quel périphérique depuis n'importe quel client.
Pour utiliser adb sur un périphérique physique connecté en USB il faut activer le débogage USB. Cette option est disponible dans les options système sous les options développeur.
adb communique par défaut via l'USB mais depuis une connexion USB initiale et un paramétrage succinct, il sera possible d'y accéder en TCP/IP.
adb tcpip 5555
adb connect device_ip
Pour confirmer que la connexion est bien valide:
adb devices
La liste des périphériques attachés doit contenir un seul élément, le périphérique.
En cas d'anomalies, vérifier les versions adb utilisées sur la machine de dev et côté périphérique. Noter que la compatibilité est cassée pour les versions adb > 1.0.32
Pour vérifier la version d'adb:
$ adb version
# Recupere une valeur
$ adb shell getprop ro.build.version.sdk
# Retourne toutes les propriétés
$ adb shell getprop