Отримайте назву версії програми за допомогою adb


94

Чи є простий спосіб отримати назву версії програми на пристрої Android за допомогою оболонки adb?

Я знайшов номер версії програми (а не назву версії) у /data/system/packages.xml.

Було б непогано, якби там був файл, який містив інформацію про програму.

Відповіді:


184
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вирішило б ...
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

17

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

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


Повернеться

versionCode=X targetSdk=YY
versionName=Z.Z

8

Якщо комусь потрібні всі версії програм для порівняння, ось мій 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

Можливо, це комусь буде корисно, але зауважте, що я використовую 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
ПРИГОЖНО! Це набагато швидший спосіб, ніж той, що
вказаний

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.