Je développe une application qui utilise ADB Shell pour l’interface avec les périphériques Android) et j’ai besoin d’un moyen d’imprimer le nom ou l’étiquette de l’application d’une application, étant donné peut-être le nom de leur package.
En bref, il me faut un moyen d’obtenir des noms d’applications ("Angry Birds v1.0.0") pour les applications installées par les utilisateurs via adb Shell
.
Une lumière sur le sujet? Toute aide est appréciée à ce sujet.
adb Shell pm list packages
vous donnera une liste de tous les noms de paquets installés.
Vous pouvez alors utiliser dumpsys | grep -A18 "Package \[my.package\]"
pour récupérer les informations sur le paquet telles que les identificateurs de version, etc.
il suffit d'entrer la commande suivante à l'invite de commande après le lancement de l'application:
adb Shell dumpsys window windows | find "mCurrentFocus"
si vous exécutez la commande sur le terminal linux, remplacez find par grep
Si vous connaissez l'identifiant d'application du paquet (comme org.mozilla.firefox), c'est facile. D'abord pour obtenir le chemin du fichier de package actuel de l'appId,
$ adb Shell pm list packages -f com.google.Android.apps.inbox
package:/data/app/com.google.Android.apps.inbox-1/base.apk=com.google.Android.apps.inbox
Vous pouvez maintenant utiliser la magie grep | sed pour extraire le chemin: /data/app/com.google.Android.apps.inbox-1/base.apk
Après, cet outil est utile:
$ adb Shell aapt dump badging /data/app/com.google.Android.apps.inbox-1/base.apk
...
application-label:'Inbox'
application-label-hi:'Inbox'
application-label-ru:'Inbox'
...
Encore une fois de la magie grep pour obtenir le label.
Un script shell pour accomplir ceci:
#!/bin/bash
# Remove whitespace
function remWS {
if [ -z "${1}" ]; then
cat | tr -d '[:space:]'
else
echo "${1}" | tr -d '[:space:]'
fi
}
for pkg in $(adb Shell pm list packages -3 | cut -d':' -f2); do
apk_loc="$(adb Shell pm path $(remWS $pkg) | cut -d':' -f2 | remWS)"
apk_name="$(adb Shell aapt dump badging $apk_loc | pcregrep -o1 $'application-label:\'(.+)\'' | remWS)"
apk_info="$(adb Shell aapt dump badging $apk_loc | pcregrep -o1 '\b(package: .+)')"
echo "$apk_name v$(echo $apk_info | pcregrep -io1 -e $'\\bversionName=\'(.+?)\'')"
done