Je cherche une possibilité de récupérer les deux , les noms de package et les noms communs des applications installées sur un appareil Android via ADB - ou au moins de récupérer le nom commun si le nom du package est connu. Une recherche rapide sur notre site a soulevé deux questions connexes, mais elles ne résolvent pas mon problème:
- Comment puis-je obtenir le nom commun d'une application portant le nom du package (comme com.android.blabla)? (ligne de commande ou application incluse) ne fonctionne pas via ADB (mais utilise une application avec laquelle vous devez rechercher manuellement), correspondant à la demande de l'OP
- Comment trouver une application basée sur le nom du package? revient simplement à une recherche d'URL sur Google Play , ce qui ne correspond pas toujours (car toutes les applications ne sont pas disponibles là-bas).
Je cherche un moyen de récupérer les informations directement à partir de l'appareil, si possible - pas "de toute façon" (y compris les "recherches sur le Web" ou "via une application") comme ces deux questions l'ont.
Je sais qu'il existe plusieurs outils disponibles pour obtenir les détails du package:
adb dumpsys package
: Bien que cela répertorie tous les packages avec un tas de détails, le "nom commun" n'est pas affichéadb shell pm list
: donne uniquement les noms des packagesaapt
serait en mesure d'obtenir le nom commun, mais nécessiterait d'abord d'extraire le.apk
fichier de l'appareil, ce qui n'est pas vraiment pratique (et sera évidemment assez lent avec de nombreuses et / ou grandes applications installées)
Ai-je oublié quelque chose? Je sais que les informations doivent être sur l'appareil (comment pourrait-il autrement afficher les noms des applications dans l'interface graphique? Je doute qu'Android analyse le .apk
fichier chaque fois que l'interface graphique a besoin du "nom commun"). Alors, y a-t-il un moyen de s'en emparer en utilisant directement ADB?
TL; DR
Contexte (si quelqu'un est curieux): Je veux pouvoir obtenir rapidement une liste d'applications utilisateur à partir de n'importe lequel de mes appareils, sans avoir à revenir à l'acrobatie. Une liste de leurs noms de packages que je peux récupérer en utilisant adb shell pm list -3
, mais comme ce ne sont que des noms de packages, la reconnaissance des applications est une supposition. Donc, s'il y avait une commande ADB pour récupérer le nom commun d'un nom de package donné, je pourrais simplement utiliser une boucle comme for pkg in $(adb shell pm list -3); do echo "- $(adb <whatever_the_command_is> $pkg) ($pkg)"; done
- et obtenir une liste de toutes les applications utilisateur installées dans un "format lisible par l'homme" avec leurs noms de package.
Cas d'utilisation:
- Voir quelles applications "superflous" sont installées (que je pourrais supprimer)
- Croiser les listes de contrôle de plusieurs appareils
- Documentation ;)
- et probablement plus (mais les 3 ci-dessus sont ce dont j'ai besoin)
la source
Réponses:
Ce n'est pas une réponse finale, car ce n'est pas générique (ne fonctionne que sur certains appareils) - mais c'est au moins un début:
Comme nous l'avons compris , au moins les ROM basées sur CM avec Kitkat (Android 4.4) et au-dessus sont livrées avec le
aapt
binaire disponible en/system/bin
1 . Si votre ROM ne l'a pas et que l'installation du binaire sur l'appareil est une option, vous pouvez le trouver ici .L'utilisation
aapt
, la récupération du nom de l'application est possible avecLa sortie sera quelque chose comme
label='Funny App'
, que vous pourrez ensuite facilement analyser pour le nom de l'application, par exemple(pas bon si le nom de l'application contient des guillemets simples, mais cela peut compter comme des cosmétiques - ou vous savez comment améliorer la partie sed pour y faire face).
1: nous n'avons pas trouvé cela dans les ROMs Kitkat et ci-dessus que nous avons vérifiées, il peut donc s'agir uniquement de ROM basées sur CM
la source
aapt
binaire. Vous pouvez très bien télécharger et renommer le binaireaapt
en PC, définir l'autorisation exécutable compatible Linux sur le binaire et le pousser/data/local/tmp
, puis utiliser le chemin absolu/data/local/tmp/aapt
pour utiliser le binaire dans ces commandes.aapt d badging <path to apk> | grep 'package: name' | awk '{print $2}'
Voici ma solution pour un téléphone non rooté qui nécessitait quelques légères modifications par rapport à ce que j'ai exécuté sur un Moto G 2e génération exécutant Android 5.0.2.
Je n'avais pas de binaire aapt dans / system / bin, j'ai donc d'abord essayé de télécharger à partir de: https://android.izzysoft.de/downloads
mais quand j'ai essayé de l'exécuter, j'ai eu une erreur disant:
erreur: seuls les exécutables indépendants de la position (PIE) sont pris en charge.
Alors j'ai cherché une version PIE et j'ai trouvé: https://github.com/Calsign/APDE/blob/master/APDE/src/main/assets/aapt-binaries/aapt-arm-pie
et cela a fonctionné en copiant le binaire dans / data / local / tmp:
Donc alors:
obtient la liste des applications tierces (les applications que vous avez installées, pas les applications système), puis vous pouvez utiliser le package à partir de la commande ci-dessus dans aapt pour obtenir des informations sur le package - exemple:
Voici donc un script (pour un client Linux) pour obtenir juste le nom "commun" pour les applications tierces: ``
Si vous voulez également le package et la version, changez la dernière mais dernière ligne de:
à:
Exemple de sortie:
name='com.ultimarom.launchnavigation' versionName='1.28' 'Navigation' name='com.enhanced.skineditorstudio' versionName='3.3' 'Custom Skin Creator' name='com.mojang.minecraftpe' versionName='1.2.6.60' 'Minecraft' name='org.videolan.vlc' versionName='2.5.13' 'VLC' name='com.jrustonapps.myauroraforecast' versionName='1.7.2' 'My Aurora Forecast' name='de.j4velin.wifiAutoOff' versionName='1.7.6' 'WiFi Automatic' name='com.facebook.katana' versionName='153.0.0.54.88' 'Facebook' name='com.metago.astro' versionName='6.0.5' 'ASTRO File Manager' name='za.co.hardrive.smartinfo.parkrun' versionName='2.0.2' 'My 5krun' name='com.PYOPYO.StarTrackerVR' versionName='1.0.1' 'StarTracker VR' name='cz.aponia.bor3.offlinemaps' versionName='1.1.19' 'Offline Maps' name='com.groupon' versionName='16.11.63973' 'Groupon' name='com.ebay.mobile' versionName='5.16.1.2' 'eBay' name='com.runtastic.android' versionName='8.1.1' 'Runtastic' name='com.google.android.diskusage' versionName='3.8.3' 'DiskUsage'
Mike
la source
aapt
! Va vérifier cela dès que le temps le permet (je suis un peu pressé actuellement). Voté pour l'instant, peut-être accepté après avoir vérifié :)