Получить название версии приложения с помощью adb


94

Есть ли простой способ получить название версии приложения на устройстве Android с помощью оболочки adb?

Я нашел номер версии приложения (а не название версии) в /data/system/packages.xml.

Было бы неплохо, если бы был файл, содержащий информацию о приложении.

Ответы:


185
adb shell dumpsys package my.package | grep versionName

как упоминалось @david и @Jeremy Fishman . Это будет намного быстрее, чем:

adb shell dumpsys | grep -A18 "Package \[my.package\]"

1
Это показывает мне информацию о пакете, но по какой-то причине отсутствует информация о версии для любого пакета, который я пытался найти на своем планшете (Android 2.2). На моем телефоне есть вся информация о версии (android 2.3).
frognosis

1
ну, если вы настаиваете на том, чтобы сделать это в adb, вы можете сделать: пакет вызова службы оболочки adb 1 s16 "my.package" i32 0. номер версии будет где-то около 0x1F, а строка имени будет после 0x20 (должна быть 3-я строка)
arbuz

35
adb shell dumpsys package my.packageможет быть значительно быстрее
Джереми Фишман

6
dumpsys package my.package | grep versionNameработает отлично
Дэвид

3
@david, но иногда он возвращает несколько результатов, например, adb shell dumpsys package com.google.android.apps.photos | grep versionName из-за Hidden system packages:раздела. Может быть, head -n1он решит это ...
Чиро Сантилли 郝海东 冠状 病 六四 事件 法轮功

18

Пакет dumpsys - ваш друг

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


Вернется

versionCode=X targetSdk=YY
versionName=Z.Z

8

Если кому-то нужны все версии приложений для сравнения, вот моя единственная подсказка:

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

Возможно, это будет полезно для кого-то, но учтите, что я использую versionName и игнорирую versionCode, поэтому используйте его с осторожностью.


5

Если вы хотите получить все версии пакетов, попробуйте этот сценарий 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 = ""; } }'

1
ОТЛИЧНО! Это гораздо более быстрый способ , то один в @ LLL Ответим
MichaelR

1

Если вы не хотите устанавливать * .apk на устройство, но вам нужна версия приложения, вы можете сделать это следующим образом

$ANDROID_HOME/build-tools/28.0.3/aapt dump badging app/build/outputs/apk/app.app
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.