使用adb获取应用程序版本名称


94

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

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

如果有一个包含应用程序信息的文件,那就太好了。

Answers:


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 shell服务调用程序包1 s16“ my.package” i320。版本号将接近0x1F,名称字符串应位于0x20之后(应为第3行)
arbuz

35
adb shell dumpsys package my.package可以更快
Jeremy Fishman 2014年

6
dumpsys package my.package | grep versionName工作完美
大卫2014年

3
@david,但有时会返回多个结果,例如adb shell dumpsys package com.google.android.apps.photos | grep versionName 由于该Hidden system packages:节。也许head -n1会解决...
Ciro Santilli郝海东冠状病六四事件法轮功

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

1

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

$ANDROID_HOME/build-tools/28.0.3/aapt dump badging app/build/outputs/apk/app.app
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.