Android Debug Bridge - Commandes

Mise à jour : Debian 10 - Android 7/8/9/10 - adb 1.0.39

Ce document décrit les différentes commandes disponibles dans l'environnement ADB (Android Debug Bridge)

Référence : Site de référence Android Debug Bridge - adb

Sommaire 

1 - Préalable

$ adb devices -l
List of devices attached
b36xxxxxx device usb:1-3 product:gts210veltexx model:SM_T819
\ device:gts210velte transport_id:8

Noter le mode de fonctionnement du périphérique :

2 - Commande adb shell

La commande adb shell permet de passer les commandes du shell selon deux modes

$ adb shell <commande 1 shell>
$ adb shell <commande 2 shell>
.....
$ adb shell
a5y17lte:/ $ <commande 1 shell>
a5y17lte:/ $ <commande 2 shell>
....

2.1 - Mode non-interactif

$ adb shell <commande_shell_linux>
<résultat_commande_shell_linux>
$

Exemple : copie de l'écran du périphérique

$ adb shell screencap /sdcard/copie.png
$ adb shell "screencap /sdcard/copie.png; cp /sdcard/copie.png /sdcard/copie.pnb.BU; ls /sdcard/copie.*"
/sdcard/copie.pnb.BU
/sdcard/copie.png
$ adb shell 'echo $PATH'
/sbin:/system/sbin:/product/bin:/apex/com.android.runtime/bin:/system/bin:/system/xbin:/odm/bin:/vendor/bin:/vendor/xbin

2.2 - Mode interactif

$ adb shell
crackling:/ $
crackling:/ $ screencap /sdcard/copie.png
crackling:/ $ exit
$

2.3 - Droits root en mode non interactif

$ adb shell "su -h | grep commande"
-c, --command COMMAND pass COMMAND to the invoked shell
$ adb shell su -c id
uid=0(root) gid=0(root) groups=0(root) context=u:r:magisk:s0

$ adb shell su -c "mount -o remount,rw /system"

2.4  - Droits root en mode interactif

Le mode enraciné étant disponible, su et su -c peuvent être utilisés. Lors de la première passation de commande, une demande d'autorisation pour "Shell"  s'affiche si elle n'a pas encore été accordée, l'accorder (temporairement ou toujours)

a5y17lte:/ $ su
a5y17lte:/ # id
uid=0(root) gid=0(root) groups=0(root) context=u:r:magisk:s0

Pour revenir au mode normal

a5y17lte:/ # exit
a5y17lte:/ $
a5y17lte:/ $ su -c id
uid=0(root) gid=0(root) groups=0(root) context=u:r:magisk:s0
a5y17lte:/ $

3 - Commandes adb spécifiques

Des commandes spécifiques adb permettent
$ adb connect
$ adb devices
$ adb get-state
$ adb reboot
$ adb push ....
$ adb pull ....
$ adb install ...
$ adb backup ...
$ adb root
$ adb remount

3.1 - Gestion du périphérique

$ adb reboot 
$ adb reboot bootloader
$ adb reboot recovery
$ adb get-state
device

3.2 - Échanges de données entre le périphérique et le PC

$ adb push <chemin_vers_fichier_ou_répertoire_PC> <chemin_vers_répertoire_périphérique>

$ # Copier le fichier rom.zip du répertoire courant du PC dans le répertoire /sdcard du périphérique
$ adb push ./rom.zip /sdcard/
$ adb pull <chemin_vers_fichier_ou_répertoire_périphérique> <répertoire_PC>

$ # Copier le répertoire Pictures du périphérique sur le PC
$ adb pull /sdcard/Pictures ./

3.3 - Installation et suppression d'applications

$ wget https://f-droid.org/repo/com.google.android.diskusage_3080.apk
$ adb install com.google.android.diskusage_3080.apk 
Success
$ adb shell cmd package list packages diskusage
package:com.google.android.diskusage

$ adb shell cmd package list packages -f diskusage
package:/data/app/com.google.android.diskusage-l7f0KEC9hZIiqaadbsFk3w==/base.apk=com.google.android.diskusage
$ adb uninstall com.google.android.diskusage         

Remarque : la commande adb uninstall est équivalente à la commande adb shell pm uninstall

$ ls
com.pagesjaunes.20200090.apk
com.pagesjaunes.20200090.config.arm64_v8a.apk
com.pagesjaunes.20200090.config.fr.apk
com.pagesjaunes.20200090.config.xhdpi.apk
$ adb install-multiple com.pagesjaunes.20200090.*
Success
$ adb shell cmd package list packages pagesjaunes
package:com.pagesjaunes

$ adb shell cmd package list packages -f pagesjaunes
package:/data/app/com.pagesjaunes-KIC5Jg7cOMuQRS5DYmLFmQ==/base.apk=com.pagesjaunes
$ adb uninstall com.pagesjaunes 
Success

3.4 - Sauvegarde et restauration

Les commandes adb backup et adb restore sont semble-il en voie d'abandon. Elles ne sont pas décrites ici.

3.5 - adb root - adb remount

Le mode enraciné étant disponible, utiliser la commande adb root pour que le client adb du périphérique obtienne les droits root pendant toute la session en cours.
$ adb root
restarting adbd as root
$ adb shell
a5y17lte:/ #
$ adb remount
remount succeeded

$ adb shell mount -f |grep /dev/block |grep " / "
/dev/block/mmcblk0p19 on / type ext4 (rw,seclabel,nodev,relatime,norecovery)
$ adb unroot

5 - Particularités du mode recovery

$ adb get-state
recovery
$ adb reboot
$ adb reboot recovery
$ adb reboot bootloader
$ adb reboot sideload
$ adb sideload fichier.zip