Mise à jour : Debian 10 - Android 7/8/9/10 - adb 1.0.39
Référence : Site de référence Android Debug Bridge - adb
Sommaire
$ 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 :
device correspond au mode de fonctionnement système (mode normal, aussi appelé Android ou device)
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>
....
Une commande"adb shell" suivie d'une commande exécute la commande dans le shell Android, affiche son résultat et redonne la main à la console linux.
$ 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
Pour éviter que le shell linux interprète la commande, utiliser les apostrophes
$ adb shell 'echo $PATH'
/sbin:/system/sbin:/product/bin:/apex/com.android.runtime/bin:/system/bin:/system/xbin:/odm/bin:/vendor/bin:/vendor/xbin
La commande "adb shell" non suivie d'une commande, ouvre une session shell Android. L'utilisation devient alors identique à celle d'une connexion locale
$ adb shell
crackling:/ $
crackling:/ $ screencap /sdcard/copie.png
Pour clore la session et retourner à la console linux :
crackling:/ $ exit
$
$ adb shell "su -h | grep commande"
-c, --command COMMAND pass COMMAND to the invoked shell
Exemple de passation de commandes avec les droits root
$ 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"
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:/ $
$ adb connect
$ adb devices
$ adb get-state
$ adb reboot
$ adb push ....
$ adb pull ....
$ adb install ...
$ adb backup ...
$ adb root
$ adb remount
$ adb reboot
$ adb reboot bootloader
$ adb reboot recovery
Afficher le mode de fonctionnement (device, recovery, ..) du périphérique
$ adb get-state
device
Copier un fichier ou un répertoire du PC vers un répertoire du périphérique
$ 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/
Copier un fichier ou un répertoire depuis le périphérique dans un répertoire du PC
$ 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 ./
$ wget https://f-droid.org/repo/com.google.android.diskusage_3080.apk
Installation
$ adb install com.google.android.diskusage_3080.apk
Success
Vérification
$ 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
Les commandes adb backup et adb restore sont semble-il en voie d'abandon. Elles ne sont pas décrites ici.
$ 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)
Pour interrompre le mode adb root et revenir en mode utilisateur non privilégié
$ adb unroot
Vérification du mode
$ adb get-state
recovery
Redémarrage
$ adb reboot
$ adb reboot recovery
$ adb reboot bootloader
$ adb reboot sideload
Flashage d'un fichier zip en mode sideload : depuis l'interface du mode Recovery sur le périphérique, sélectionner le mode "apply update from ADB" s'il existe, puis depuis le PC, lancer la commande
$ adb sideload fichier.zip