Il y a beaucoup de choses sur Android Debug Bridge que vous ne connaissez peut-être pas. Cliquez ici pour quelques trucs et astuces utiles sur l’utilisation d’ADB !
Liens rapides
- Accès au shell
- Connexion à plusieurs appareils
- Transférer des fichiers
- Enregistrement
- Liste des applications installées via ADB
- Installation et désinstallation d'applications via ADB
- Extraire des APK avec ADB
- Sauvegarde et restauration des données de l'application
- Liste des composants de l'application
- Activités de lancement, services et récepteurs de diffusion
- Désactiver et activer presque toutes les applications
- Capturer des captures d'écran
- Transfert de données binaires entre le PC et l'appareil Android
Si vous êtes un passionné d'Android caché dans la scène du modding, ou un développeur d'applications depuis un certain temps, temps, tôt ou tard, vous tomberez sur un outil intéressant appelé Android Debug Bridge, ou ADB pour court. Il est largement utilisé dans Android Studio comme utilitaire compagnon de ligne de commande. Les développeurs Android l'utilisent également comme solution autonome pour installer et tester manuellement des applications sur
Smartphones Android ainsi que des appareils Android émulés.Mais ADB peut faire beaucoup de choses, et la plupart ne sont pas seulement utiles aux développeurs. Même si vous n'êtes pas un développeur et que vous lisez cet article, il y a de fortes chances que vous ayez utilisé ADB une ou deux fois pour charger une application ou modifier une autorisation. Mais ce n’est pas la seule raison pour laquelle ADB peut être utilisée. Continuez à lire pour découvrir quelques trucs et astuces sur l’utilisation d’ADB que vous ne connaissez peut-être pas.
Vous devrez avoir ADB opérationnel sur votre ordinateur. N'oubliez pas de consulter notre article sur comment installer ADB si tu as besoin d'aide. Si vous utilisez Windows, vous devez également installez les pilotes USB OEM appropriés pour votre appareil Android.
Accès au shell
Si vous avez déjà utilisé ADB, vous êtes peut-être habitué à exécuter des commandes sur une seule ligne. Mais vous pouvez également utiliser ADB pour ouvrir un shell de terminal sur votre appareil et exécuter des commandes directement. Et c'est facile !
Dans votre terminal ou dans la fenêtre d'invite de commande :
adb shell
Vous serez ensuite accueilli avec un $
symbole où vous pouvez exécuter des commandes directement sur votre appareil.
Connexion à plusieurs appareils
ADB peut communiquer avec plusieurs appareils en même temps. Cependant, vous devez spécifier le périphérique cible lors de l'émission de commandes ADB dans de tels scénarios.
Pour ce faire, vous aurez besoin de connaître le numéro de série de l’appareil cible. Vous pouvez obtenir le numéro de série en utilisant la commande devices :
adb devices
Maintenant, utilisez le -s
option pour spécifier le numéro de série du périphérique cible. Exemple:
adb -s <serialnumber> shell
Transférer des fichiers
Pour les amateurs de ligne de commande, ADB offre un moyen très simple de transférer des fichiers vers et depuis votre appareil Android. Utilisez simplement le pull
commande pour copier des fichiers et des répertoires de l'appareil et du push
commande pour copier des fichiers et des répertoires sur l'appareil :
Si vous souhaitez copier un fichier ou un répertoire avec ses sous-répertoires sur l'appareil Android :
adb push local_path device_path
- Exemple:
adb push D:\image.png /sdcard
La commande suivante copiera un fichier ou un répertoire avec ses sous-répertoires de l'appareil Android vers le PC hôte :
adb pull device_path local_path
- Exemple:
adb pull /sdcard/backup_April.tar D:\Backup
Enregistrement
Android Studio fournit le Fenêtre Logcat, qui prend en charge l'affichage des journaux de votre appareil en temps réel. Cependant, ce n'est pas vraiment utile pour le traitement par lots. Heureusement, les appareils Android sont livrés avec la commande logcat disponible via ADB, qui peut être utilisée pour vider les messages du journal du système et des applications et les imprimer à l'écran.
La syntaxe de base est la suivante :
adb logcat
Pour en savoir plus, jetez un oeil à notre tutoriel sur comment prendre les logcats système, les journaux du noyau et dmesg sur Android.
œufs de Pâques
Google propose deux astucieux œufs de Pâques liés à la commande logcat.
- Le premier est mdrcat, un clin d'œil au mème mdrcat. Elle donne le même résultat que la commande logcat normale.
adb lolcat
- La seconde est longcat, qui équivaut à la commande logcat -v long. Il affiche tous les champs de métadonnées et les messages séparés avec une ligne vide.
adb longcat
Liste des applications installées via ADB
Pour voir les applications installées sur votre appareil, vous pouvez utiliser la commande suivante :
adb shell pm list packages
Cela renverra une liste des noms de packages des applications installées, chacune sur sa propre ligne précédée de package:
.
Possibilités
Il existe également certaines options que vous pouvez utiliser pour récupérer des listes plus spécifiques.
- -F inclura le chemin d'accès à l'APK de base pour chaque application, ainsi que le nom de son package.
- -un veillera à ce que tous les packages non APEX connus soient renvoyés.
- -d la commande ne renverra que les packages désactivés.
- -e la commande ne renverra que les packages activés.
- -s la commande ne renverra que les packages système.
- -3 la commande ne renverra que les packages tiers.
- -je inclura le nom du package d’installation pour chaque package.
- -U inclura l'UID du package pour chaque package.
- -u inclura les packages désinstallés.
- --show-code de version inclura le code de version pour chaque package.
- --apex uniquement ne renverra que les packages APEX.
- --uid n'affichera que les packages avec l'UID donné.
- --utilisateur n'affichera que les packages appartenant à l'ID utilisateur donné.
Installation et désinstallation d'applications via ADB
Il s’agit d’une utilisation relativement courante d’ADB, mais elle mérite quand même d’être mentionnée. Entre autres moyens, vous pouvez également utiliser ADB pour installer et désinstaller des applications Android sur votre appareil Android.
Installer un APK
Si vous avez un APK sur votre ordinateur, vous pouvez l'installer sur votre appareil avec ce qui suit :
adbinstall-rsomeapk.apk
N'oubliez pas de remplacer someapk.apk
avec le chemin complet vers l’APK que vous souhaitez installer.
Possibilités
Il existe de nombreuses options pour installer des APK via ADB.
- Le -r L'option permet à ADB d'installer sur une application existante (c'est-à-dire une mise à jour). Sur Android Pie et versions ultérieures, vous n'avez pas besoin de spécifier cette option.
- Le -R option, pour Android Pie et versions ultérieures, l'installation échouera si l'application est déjà installée.
- Le -je L'option vous permet de spécifier un nom de package d'installation. C'est ce qui est renvoyé si Android veut savoir ce qui a installé l'APK.
- Le -t l'option permet un APK avec Android: testOnly="vrai" dans son manifeste pour être installé.
- Le -d L’option permet à l’APK spécifié d’être une rétrogradation vers une application déjà installée. Cela ne fonctionne que si les deux versions de l'application sont déboguables.
- Le -g L'option pour Android Marshmallow et versions ultérieures accorde automatiquement toutes les autorisations d'exécution à l'application installée.
Ce n'est pas tous. Si vous souhaitez une liste complète, vous pouvez consulter la documentation intégrée.
Plusieurs APK et bundles
Si vous souhaitez installer plusieurs fichiers APK à la fois, soit à partir de plusieurs applications, soit parce que vous installez un ensemble d'applications, vous pouvez utiliser l'outil ADB. install-multiple
et install-multi-package
caractéristiques.
Si tous vos APK sont destinés à une seule application, utilisez install-multiple
:
adbinstall-multipleapk1.apkapk2.apk ...
Sinon, utilisez install-multi-package
:
adbinstall-multi-packageapp1.apkapp2.apk ...
Les options de ces commandes sont similaires à install
, mais avec quelques limites. Consultez la documentation intégrée d'ADB pour connaître les options disponibles.
Désinstaller une application
Pour désinstaller à l'aide d'ADB, vous aurez besoin du nom du package de l'application que vous souhaitez désinstaller. Consultez la section pour Liste des applications installées si ce n'est pas déjà fait.
Une fois que vous avez le nom du package, la désinstallation est aussi simple que :
adb uninstall <packagename>
Vous ne pouvez généralement pas désinstaller le système ou les applications préinstallées à l'aide de cette commande. Cependant, vous pourrez peut-être les désactiver avec ADB. Consultez la rubrique Désactiver et activer presque toutes les applications pour plus de détails.
Extraire des APK avec ADB
Il existe de nombreuses raisons pour lesquelles vous souhaiterez peut-être extraire le ou les APK d'une application. Peut-être souhaitez-vous le sauvegarder pour une utilisation future, ou peut-être qu'il n'est plus disponible en ligne et que vous souhaitez le transférer sur un autre appareil.
Extraire une application à l’aide d’ADB est assez simple. Tout d’abord, vous souhaiterez trouver le nom du package de l’application que vous souhaitez extraire. Il existe plusieurs façons de procéder, mais la plus simple consiste généralement à utiliser l'application Paramètres de votre appareil pour afficher le liste de toutes les applications installées, sélectionnez celle que vous souhaitez et faites défiler vers le bas jusqu'à ce que vous trouviez le nom du package ou l'application IDENTIFIANT.
Une fois que vous avez le nom du package, exécutez la commande suivante :
adb shell pm path <packagename>
Cette commande renverra le chemin de tous les APK pour ce nom de package.
Vous pouvez ensuite utiliser la commande suivante pour extraire chaque APK sur votre ordinateur :
adb pull /path/to/apk.apk
Sauvegarde et restauration des données de l'application
Bien que Google n'ait pas encore mis au point une méthodologie de sauvegarde en un clic de type iOS, vous pouvez utiliser ADB pour sauvegarder et restaurer les applications installées ainsi que leurs données. Cependant, la fonctionnalité est loin d'être parfaite et Google a déjà a marqué la fonctionnalité comme obsolète.
Sauvegarde
Pour sauvegarder une seule application, avec son APK :
adb backup -apk <packagename> -f package_name_backup.ab
Si vous souhaitez sauvegarder toutes les données de l'application en même temps :
adb backup -f all -all -apk -nosystem
Étant donné que le module de restauration ne peut pas effectuer de restauration spécifique à une application individuelle, il est préférable de créer des sauvegardes spécifiques au package. L'extrait de commande suivant (compatible avec Linux/macOS et le sous-système Windows pour Linux) peut le faire pour vous :
for APP in $(adb shell pm list packages -3)
do
APP=$( echo${APP} | sed "s/^package://")
adb backup -f ${APP}.backup ${APP}
done
Restaurer
Tout d’abord, vous devez installer l’APK enregistré ;
adb install <packagename>.apk
Ensuite vous pouvez restaurer ses données :
adbrestorepackage_name_backup.ab
Pour réitérer, les fonctionnalités de sauvegarde et de restauration d'ADB comportent de multiples mises en garde, notamment des résultats variables en fonction de la ROM.
Liste des composants de l'application
Les composants d'une application sont des éléments tels que ses activités, ses BroadcastReceivers, ses services, etc. Parfois, il est utile de connaître les noms de ces composants dans une application spécifique, surtout si vous souhaitez lancer des activités cachées ou envoyer une diffusion avec des données spécifiques.
Malheureusement, ADB ne dispose pas d'un moyen très simple de répertorier les composants d'une application. Mais c'est possible. Exécutez la commande suivante :
adb shell dumpsys package
Tout un tas de texte sera renvoyé.
- Faites défiler jusqu'à ce que vous trouviez le Tableau de résolution d'activité titre pour voir les activités.
- Regarder sous Tableau de résolution du récepteur pour les BroadcastReceivers.
- Vérifier la Tableau de résolution de service pour les services.
- Et ainsi de suite.
Chaque composant affichera l'action nécessaire pour le lancer, le nom du composant et éventuellement des informations supplémentaires.
Alternativement, si vous souhaitez un moyen plus simple de voir les activités, les services et les récepteurs, vous pouvez utiliser l'application Root Activity Launcher de XDA Recognized Developer. Zacharee1. Il vous montrera ces composants pour chaque application, ainsi qu'un tas d'autres fonctionnalités pratiques.
Prix : 0,99.
Activités de lancement, services et récepteurs de diffusion
ADB peut également être utilisé pour lancer des activités, démarrer des services et notifier les BroadcastReceivers. Vous pouvez même spécifier des URI de données et des extras d'intention si nécessaire.
Pour lancer des composants, vous aurez besoin du nom du composant que vous souhaitez lancer. Vous pouvez voir comment l'obtenir à partir du Liste des composants de l'application section.
La syntaxe de commande pour lancer une activité ressemble à ceci :
am start -a <action> -n <component>
La syntaxe de commande pour démarrer un service ressemble à ceci :
am startservice -a <action> -n <component>
La syntaxe de commande pour notifier un BroadcastReceiver ressemble à ceci :
am broadcast -a <action> -n <component>
Dans la plupart des cas, pour les activités et les services, vous n'avez pas besoin de spécifier explicitement une action. Vous n'en aurez généralement besoin que si le composant en utilise un autre que android.intent.action. PRINCIPAL.
En plus de la syntaxe de base, voici comment spécifier davantage de données à transmettre. En général, toutes les valeurs de données doivent être placées entre guillemets.
- -d vous permet de spécifier un URI de données.
- -e ou --es permet de spécifier une String supplémentaire.
- --français vous permet de spécifier une chaîne nulle supplémentaire.
- --ez est utilisé pour spécifier un extra booléen.
- --ei est utilisé pour spécifier un nombre entier supplémentaire.
- --el est pour spécifier un long extra.
- --ef passera un flotteur supplémentaire.
- --UE passe un URI supplémentaire.
- --ecn peut être utilisé pour spécifier un nom de composant supplémentaire.
-
--eia
transmettra les valeurs sous forme d'Integer[] supplémentaire., ,... -
--eial
transmettra les valeurs sous forme de liste, ,... . - Les mêmes arguments de tableau et de liste fonctionnent également pour les longs, les flottants et les chaînes. Remplacez simplement le je avec la lettre appropriée.
- -F vous permet de spécifier un indicateur.
Il existe encore plus d'options de comportement que vous pouvez utiliser, alors consultez la documentation intégrée pour plus de détails.
Désactiver et activer presque toutes les applications
Les applications système sous Android ne peuvent pas être désinstallées et, malheureusement, beaucoup d'entre elles ne peuvent pas non plus être désactivées via les paramètres. Bien qu'ADB ne vous permette pas de les désinstaller, il peut vous aider à les désactiver.
Tout d’abord, assurez-vous d’obtenir le nom du package de l’application que vous souhaitez désactiver. Ensuite, essayez ces commandes. En cas d'échec, essayez l'option suivante.
-
pm désactiver
- Pour réactiver, utilisez pm activer
-
pm désactiver-utilisateur --user 0
- Pour réactiver, utilisez pm activer
-
MP cacher
- Pour réactiver, utilisez MP afficher
-
pm suspendre
- Pour réactiver, utilisez MP, suspendre la suspension
-
pm désinstaller -k --user 0
- Pour réactiver, utilisez pm installer-existant
- Celui-ci désinstalle effectivement l’application de votre profil utilisateur. Pendant que la commande pour réactiver devrait fonctionnera, il n'y a aucune garantie que cela fonctionnera. Vous devrez peut-être réinitialiser les paramètres d'usine pour restaurer l'application.
- Si vous utilisez plusieurs profils utilisateur sur votre appareil, assurez-vous de remplacer 0 dans les commandes ci-dessus par l'ID utilisateur réel dont vous disposez.
- Pour réactiver, utilisez pm installer-existant
Pour en savoir plus, consultez notre tutoriel sur comment désinstaller les bloatwares de l'opérateur et du OEM sans accès root.
Capturer des captures d'écran
La plupart des ROM Android proposent deux utilitaires shell pratiques - screencap et screenrecord - pour prendre des captures d'écran et enregistrer les activités à l'écran, respectivement. Vous pouvez les appeler directement depuis le shell ADB pour capturer une capture d'écran statique ou un extrait vidéo de l'écran de votre téléphone et l'enregistrer directement sur la mémoire interne de l'appareil.
La syntaxe pour capturer une capture d'écran est assez simple :
adb shell screencap /sdcard/screenshot.png
De même, si vous avez besoin de récupérer une capture d'écran dynamique, procédez comme suit :
adb shell screenrecord /sdcard/recording.mp4
Comme on peut s'y attendre, l'outil screencap est plutôt simple, alors que l'utilitaire screenrecord propose plusieurs paramètres. Les options pour ce dernier sont les suivantes :
-
--size LARGEURxHAUTEUR
- Définissez la résolution du fichier vidéo (par exemple "1280x720"). Par défaut, il essaie de prendre la résolution d'affichage principale du périphérique cible (si pris en charge) et revient à 1280 x 720 dans le cas contraire.
-
--bit-rate TAUX
- Définissez le débit vidéo, en bits par seconde. La valeur peut être spécifiée en bits ou en mégabits, par ex. « 4 000 000 » équivaut à « 4M ».
-
--rapport d'erreur
- Vous pouvez ajouter des informations supplémentaires, telles qu'une superposition d'horodatage, qui peuvent être utiles pour illustrer des bugs.
-
--time-limite TEMPS
- Définissez la durée d'enregistrement maximale, en secondes. La valeur par défaut/maximum est de 180.
-
--display-id ID
- Spécifiez l’ID d’affichage physique à enregistrer. Celui par défaut est défini sur l’affichage principal. Voir « dumpsys SurfaceFlinger --display-id » pour les identifiants d'affichage valides.
-
--verbeux
- Affichez des informations détaillées concernant la session d’enregistrement.
Vous pouvez étendre davantage les capacités des utilitaires de capture d'écran intégrés d'Android en scrcpy. Il s'agit d'une solution de mise en miroir d'écran open source, qui utilise la puissance d'ADB.
Transfert de données binaires entre le PC et l'appareil Android
Si vous ne souhaitez pas créer un shell ADB à part entière, mais souhaitez intégrer un transfert simplifié de données binaires entre le PC hôte et l'appareil Android cible, vous pouvez utiliser le exec-in
et exec-out
commandes.
Malgré leur existence prolongée, les commandes exec-in et exec-out ne sont toujours pas documentées. Ils peuvent entraîner une corruption des fichiers en raison de la manière dont les différents shells gèrent les entrées et les sorties. Utiliser avec précaution.
Le premier vous aide à exécuter une commande sur Android et à alimenter l'entrée non filtrée de la console comme paramètre, tandis que le la seconde fait exactement le contraire, c'est-à-dire exécuter une commande sur Android et capturer sa sortie binaire non filtrée par le système d'exploitation hôte.
Exemple:
adb exec-out "screencap -p" > "D:\screenshot.png"
Cela utilisera le screencap
commande d'Android pour capturer une capture d'écran de l'écran du téléphone, mais l'enregistre directement sous le nom capture d'écran.png dans la partition D: du PC hôte (à condition qu'il exécute Windows). D'autre part,
adb exec-in"cd /sdcard && tar -xf -" < "D:\backup.tar"
Cela extraira le contenu du fichier backup.tar stocké dans la partition D: du PC hôte (exécutant Windows) à la racine du stockage interne de l'appareil Android.
ADB est un outil incroyablement puissant, et il peut faire bien plus que ce qui précède. Les commandes de cet article ne sont qu’un point de départ utile. Pour une utilisation plus avancée, consultez des commandes telles que cmd -l pour voir les différents services avec lesquels vous pourriez interagir et ls -l /système/bin pour voir les différents exécutables de commandes disponibles dans votre ROM Android.
Pour d'autres voyages et tiques Android, consultez nos guides sur comment rooter son smartphone Android, comment installer la récupération TWRP, et comment installer une ROM personnalisée sur votre appareil Android.