Obtenir le nom de la version de l'application à l'aide de adb

94

Existe-t-il un moyen simple d'obtenir le nom de version d'une application sur un appareil Android à l'aide du shell adb?

J'ai trouvé le numéro de version de l'application (pas le nom de la version) dans /data/system/packages.xml.

Ce serait bien s'il y avait un fichier contenant les informations sur l'application.

frognose
la source

Réponses:

184
adb shell dumpsys package my.package | grep versionName

comme mentionné par @david et @Jeremy Fishman . Ce sera beaucoup plus rapide que:

adb shell dumpsys | grep -A18 "Package \[my.package\]"
Arbuz
la source
1
Cela me montre les informations sur le package, mais pour une raison quelconque, il manque les informations de version de tout package que j'ai essayé de rechercher sur ma tablette (Android 2.2). Sur mon téléphone, toutes les informations de version sont là (Android 2.3).
frognosis
1
eh bien si vous insistez pour le faire dans adb, vous pouvez faire: adb shell service call package 1 s16 "my.package" i32 0. le numéro de version sera quelque part près de 0x1F et la chaîne de nom après 0x20 (devrait être la 3e ligne)
arbuz
35
adb shell dumpsys package my.packagepeut être beaucoup plus rapide
Jeremy Fishman
6
dumpsys package my.package | grep versionNamefonctionne parfaitement
david
3
@david mais parfois il renvoie plusieurs résultats, par exemple à adb shell dumpsys package com.google.android.apps.photos | grep versionName cause de la Hidden system packages:section. Peut-être que head -n1ça le résoudrait ...
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功
17

Le paquet Dumpsys est votre ami

~/# adb shell
shell@mo:/ dumpsys package tld.comp.app_name | grep version


Reviendra

versionCode=X targetSdk=YY
versionName=Z.Z
MonoThread
la source
8

Si quelqu'un a besoin de toutes les versions d'applications à des fins de comparaison, voici mon oneliner:

for p in `adb shell pm list package | awk -F"package:" '{print $2}'`; do echo -n "$p: "; adb shell dumpsys package $p | grep -i versionName | awk -F"=" '{print $2}'; done

Peut-être que cela sera utile pour quelqu'un, mais veuillez noter que j'utilise versionName et ignore versionCode, donc utilisez avec précaution.

JE VAIS
la source
5

Si vous souhaitez obtenir toutes les versions de package, essayez ce script awk:

adb shell dumpsys package | awk '/^[ ]*Package \[.*\] (.*)/ { i = index($0, "[") + 1; pkg = substr($0, i, index($0, "]") - i); } /[ ]*versionName=/ { { print pkg "\t" substr($0, index($0, "=") + 1); pkg = ""; } }'
user541686
la source
1
AGRÉABLE! C'est un moyen beaucoup plus rapide que celui de la réponse de @ LLL
MichaelR
1

Si vous ne voulez pas installer * .apk sur l'appareil mais que vous avez besoin d'obtenir la version de l'application, vous pouvez le faire comme suit

$ANDROID_HOME/build-tools/28.0.3/aapt dump badging app/build/outputs/apk/app.app
SergeyUr
la source