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

fro*_*sis 90 android adb

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

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

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

arb*_*buz 172

adb shell dumpsys package my.package | grep versionName
Run Code Online (Sandbox Code Playgroud)

正如@david@Jeremy Fishman所说.这将比以下快得多:

adb shell dumpsys | grep -A18 "Package \[my.package\]"
Run Code Online (Sandbox Code Playgroud)

  • `adb shell dumpsys package my.package`可以明显更快 (33认同)
  • `dumpsys package my.package | grep versionName`非常适合 (6认同)
  • @david但有时会返回多个结果,例如`adb shell dumpsys package com.google.android.apps.photos | grep versionName`因为`隐藏系统包:`部分.也许一个`头-n1`会解决它... (3认同)

Mon*_*ded 15

Dumpsys包是你的朋友

~/# adb shell
shell@mo:/ dumpsys package tld.comp.app_name | grep version
Run Code Online (Sandbox Code Playgroud)


将返回

versionCode=X targetSdk=YY
versionName=Z.Z
Run Code Online (Sandbox Code Playgroud)


LLL*_*LLL 10

如果有人需要所有应用程序版本进行比较,那么这里是我的 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
Run Code Online (Sandbox Code Playgroud)

也许这对某些人会有所帮助,但请注意,我使用 versionName 并忽略 versionCode,因此请谨慎使用。


Meh*_*dad 6

如果你想获得所有的包版本,试试这个 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 = ""; } }'
Run Code Online (Sandbox Code Playgroud)