Ответ 1
adb shell dumpsys package my.package | grep versionName
как указано @david и @Jeremy Fishman. Это будет намного быстрее, чем:
adb shell dumpsys | grep -A18 "Package \[my.package\]"
Есть ли простой способ получить имя версии приложения на устройстве Android с помощью оболочки adb?
Я нашел номер версии приложения (не имя версии) в файле /data/system/packages.xml.
Было бы неплохо, если бы был файл, содержащий информацию о приложении.
adb shell dumpsys package my.package | grep versionName
как указано @david и @Jeremy Fishman. Это будет намного быстрее, чем:
adb shell dumpsys | grep -A18 "Package \[my.package\]"
Пакет Dumpsys - ваш друг
~/# adb shell
[email protected]:/ dumpsys package tld.comp.app_name | grep version
Вернется
versionCode=X targetSdk=YY
versionName=Z.Z
Если кому-то нужны все версии приложений для сравнения целей, то вот мой 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 и игнорирую версиюCode, поэтому используйте с осторожностью.
Если вы не хотите устанавливать *.apk на устройство, но вам нужна версия приложения, вы можете сделать это следующим образом
$ANDROID_HOME/build-tools/28.0.3/aapt dump badging app/build/outputs/apk/app.app
Если вы хотите получить все версии пакетов, попробуйте этот сценарий 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 = ""; } }'