108

有没有一种简单的方法可以使用 adb shell 在 Android 设备上获取应用程序的版本名称?

我在 /data/system/packages.xml 中找到了应用程序版本号(不是版本名称)。

如果有一个包含应用程序信息的文件会很好。

4

5 回答 5

227
adb shell dumpsys package my.package | grep versionName

as mentioned by @david and @Jeremy Fishman. This will be much quicker than:

adb shell dumpsys | grep -A18 "Package \[my.package\]"
于 2012-08-13T22:11:55.223 回答
25

Dumpsys 包是你的朋友

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


将返回

versionCode=X targetSdk=YY
versionName=Z.Z
于 2015-02-23T08:17:17.687 回答
11

如果有人需要所有应用程序版本进行比较,那么这里是我的 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,因此请谨慎使用。

于 2017-11-22T18:12:04.360 回答
7

如果你想获得所有的包版本,试试这个 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 = ""; } }'
于 2019-05-26T12:32:13.813 回答
2

如果您不想在设备上安装 *.apk 但您需要获取应用程序的版本,您可以按照以下方式进行操作

$ANDROID_HOME/build-tools/28.0.3/aapt dump badging app/build/outputs/apk/app.app
于 2019-03-05T07:47:34.523 回答