Android met à la disposition des développeurs un outil ingénieux appelé Android Debug Bridge, ou ADB en abrégé. Il est utilisé dans Android Studio et manuellement par les développeurs Android pour installer et tester des applications sur des smartphones Android et 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 installer une application ou modifier une permission. Mais ce n’est pas tout ce à quoi ADB peut servir. Continuez à lire pour découvrir des conseils et des astuces pour utiliser ADB que vous ne connaissiez peut-être pas.

Remarque : vous devez installer et exécuter ADB sur votre ordinateur. N’hésitez pas à consulter notre article sur l’installation d’ADB si vous avez besoin d’aide.

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 fenêtre de terminal ou d’invite de commande :

adb shell

Vous serez alors accueilli par un symbole $ qui vous permettra d’exécuter des commandes directement sur votre appareil.

Un shell ADB

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

Cette commande renvoie une liste des noms de paquets des applications installées, chacun d’entre eux étant précédé de package : sur sa propre ligne.

Liste des paquets installés par le shell ADB

Options

Il existe également quelques options que vous pouvez utiliser pour obtenir des listes plus spécifiques.

  • f inclura le chemin vers l’APK de base pour chaque application, ainsi que son nom de paquet.
  • a permet de s’assurer que tous les paquets non-APEX connus sont retournés.
  • d permet à la commande de ne renvoyer que les paquets désactivés.
  • e permet à la commande de ne renvoyer que les paquets activés.
  • s renvoie uniquement les paquets système.
  • 3 retournera uniquement les paquets tiers.
  • i inclura le nom du paquet d’installation pour chaque paquet.
  • U inclura l’UID du paquet pour chaque paquet.
  • u inclura les paquets désinstallés.
  • show-versioncode inclura le code de version de chaque paquet.
  • apex-only renverra uniquement les paquets APEX.
  • uid ne montrera que les paquets avec l’UID donné.
  • user ne montrera que les paquets 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 d’être mentionnée. Entre autres, vous pouvez également utiliser ADB pour installer et désinstaller des applications Android sur votre appareil Android.

Installation d’un APK

Si vous disposez d’un APK sur votre ordinateur, vous pouvez l’installer sur votre appareil de la manière suivante :

adb install -r someapk.apk

N’oubliez pas de remplacer someapk.apk par le chemin complet de l’APK que vous souhaitez installer.

Options

Il y a un tas d’options pour installer des APKs à travers ADB.

  • L’option –r permet à ADB d’installer par-dessus une application existante (c’est-à-dire une mise à jour). Sur Android Pie et les versions ultérieures, vous n’avez pas besoin de spécifier cette option.
  • L’option –R, pour Android Pie et les versions ultérieures, fera échouer l’installation si l’application est déjà installée.
  • L’option –i vous permet de spécifier un nom de paquet d’installation. C’est ce qui est renvoyé si Android veut savoir qui a installé l’APK.
  • L’option –t permet d’installer un APK dont le manifeste contient android:testOnly=”true”.
  • L’option –d permet à l’APK spécifié d’être une mise à jour d’une application déjà installée. Cela ne fonctionne que si les deux versions de l’application sont déboguables.
  • L’option –g pour Android Marshmallow et les versions ultérieures accorde automatiquement toutes les autorisations d’exécution à l’application installée.

Ce n’est pas tout. Si vous voulez une liste complète, vous pouvez consulter la documentation intégrée.

APKs et paquets multiples

Si vous avez un tas d’APKs que vous voulez installer en une seule fois, soit à partir de plusieurs applications, soit parce que vous installez un paquet d’applications, vous pouvez utiliser les fonctions install-multiple et install-multi-package d’ADB.

Si tous vos APKs sont pour une seule application, utilisez install-multiple :

adb install-multiple apk1.apk apk2.apk …

Sinon, utilisez install-multi-package :

adb install-multi-package app1.apk app2.apk …

Les options de ces commandes sont similaires à celles de la commande install, mais avec quelques limitations. Consultez la documentation intégrée d’ADB pour savoir quelles options sont disponibles.

Désinstallation d’une application

Pour désinstaller à l’aide d’ADB, vous aurez besoin du nom du paquet de l’application que vous voulez désinstaller. Consultez la section pour lister les applications installées si vous ne l’avez pas déjà fait.

Une fois que vous avez le nom du paquet, la désinstallation est aussi simple que :

adb uninstall

Remarque : vous ne pouvez généralement pas désinstaller les applications système ou préinstallées à l’aide de cette commande. Vous pouvez cependant les désactiver avec ADB. Consultez la section Désactiver et activer presque toutes les applications pour plus de détails.

Extraire les APK avec ADB

Il y a de nombreuses raisons pour lesquelles vous pouvez vouloir extraire le(s) APK(s) d’une application. Peut-être voulez-vous le sauvegarder pour une utilisation future, ou peut-être n’est-il plus disponible en ligne et vous voulez le transférer sur un autre appareil.

L’extraction d’une application à l’aide d’ADB est assez simple. Tout d’abord, vous devez trouver le nom du paquet de l’application que vous voulez extraire. Il existe plusieurs façons de le faire, mais la plus simple est généralement d’utiliser l’application Paramètres de votre appareil pour afficher la liste de toutes les applications installées, de sélectionner celle que vous voulez et de la faire défiler jusqu’à ce que vous trouviez le nom du paquet ou l’ID de l’application.

Une fois que vous avez le nom du paquet, exécutez la commande suivante :

adb shell pm path

Cette commande renverra le chemin de tous les APKs pour ce nom de paquet.

Vous pouvez ensuite utiliser la commande suivante pour tirer chaque APK sur votre ordinateur :

adb pull /path/to/apk.apk

Liste des composants de l’application

Les composants d’une application sont des éléments tels que ses activités, ses récepteurs de diffusion, ses services, etc. Il est parfois utile de connaître les noms de ces composants dans une application spécifique, notamment 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 propre de lister les composants d’une application. Mais c’est possible. Exécutez la commande suivante :

adb shell dumpsys package

Un tas de texte sera retourné.

  • Faites défiler jusqu’à ce que vous trouviez le titre Activity Resolver Table pour voir les activités.
  • Regardez sous Receiver Resolver Table pour trouver BroadcastReceivers.
  • Regardez sous Service Resolver Table pour voir les Services.
  • Et ainsi de suite.

Chaque composant affichera l’action nécessaire pour le lancer, le nom du composant et éventuellement quelques informations supplémentaires.

Alternativement, si vous voulez un moyen plus facile de voir les activités, les services et les récepteurs, vous pouvez utiliser mon application Root Activity Launcher. Elle vous montrera ces composants pour chaque application, ainsi qu’un tas d’autres fonctionnalités pratiques.

Lancement d’activités, de services et de récepteurs de diffusion

ADB peut également être utilisé pour lancer des activités, démarrer des services et notifier des récepteurs de diffusion. Vous pouvez même spécifier des URI de données et des extras Intent si nécessaire.

Pour lancer des composants, vous avez besoin du nom du composant que vous souhaitez lancer. Vous pouvez voir comment l’obtenir dans la section Listing App Components.

La syntaxe de la commande pour lancer une activité est quelque chose comme ceci :

am start -a -n

La syntaxe de la commande pour lancer un Service est quelque chose comme ceci :

am startservice -a -n

La syntaxe de la commande pour notifier un BroadcastReceiver est quelque chose comme ceci :

am broadcast -a -n

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 utilise une action autre que android.intent.action.MAIN.

En plus de la syntaxe de base, voici comment spécifier d’autres 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 une URI de données.
  • e <key> <value> ou â€“es <key> <value> vous permet de spécifier un extra de type String.
  • esn <key> vous permet de spécifier un extra de type String nul.
  • ez <key> <value> permet de spécifier un extra de type booléen.
  • ei <key> <value> permet de spécifier un extra de type integer.
  • el <key> <value> est utilisé pour spécifier un extra long.
  • ef <key> <value> permet de passer un extra de type float.
  • eu <key> <value> permet de passer un extra URI.
  • ecn <key> <value> permet de spécifier un extra de nom de composant.
  • eia <key> <value1>,<value2>,… passera les valeurs comme un Integer[] extra.
  • eial <key> <value1>,<value2>,… passera les valeurs comme une liste.
  • Les mêmes arguments de tableau et de liste fonctionnent également pour les longs, les flottants et les chaînes de caractères. Il suffit de remplacer le i par la lettre appropriée.
  • L’argument –f vous permet de spécifier un drapeau.

Il y a encore plus d’options de comportement que vous pouvez utiliser, alors consultez la documentation du build in pour plus de détails.

Désactivation et activation de presque toutes les applications

Les applications système d’Android ne peuvent pas être désinstallées, et beaucoup d’entre elles ne peuvent pas non plus être désactivées via les paramètres. Bien que 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 paquet de l’application que vous souhaitez désactiver. Ensuite, essayez ces commandes. Si l’une d’elles échoue, essayez l’option suivante.

  • pm disable
    • Pour la réactiver, utilisez pm enable.
  • pm disable-user -user 0
    • Pour le réactiver, utilisez pm enable.
  • pm hide
    • Pour le réactiver, utilisez pm unhide.
  • pm suspend
    • Pour le réactiver, utilisez pm unsuspend.
  • pm uninstall -k -user 0
    • Pour le réactiver, utilisez pm install-existing.
    • Remarque : Cette commande désinstalle effectivement l’application de votre profil utilisateur. Bien que la commande de réactivation doive fonctionner, il n’y a aucune garantie qu’elle le fasse. Vous devrez peut-être effectuer une réinitialisation d’usine pour restaurer l’application.

Si vous utilisez plusieurs profils d’utilisateur sur votre appareil, veillez à remplacer le 0 dans les commandes ci-dessus par l’ID utilisateur réel dont vous disposez.

ADB est un outil incroyablement puissant, et il peut faire beaucoup plus que ce qui est indiqué ci-dessus. Les commandes présentées dans cet article ne sont qu’un point de départ utile. Pour une utilisation plus avancée, consultez des commandes comme cmd -l pour voir les différents services avec lesquels vous pouvez interagir ou ls -l /system/bin pour voir les différents exécutables de commande disponibles.

Categorized in:

Astuces,

Tagged in:

,