Obtener el nombre de la versión de la aplicación usando adb

94

¿Existe una manera fácil de obtener el nombre de la versión de una aplicación en un dispositivo Android usando adb shell?

Encontré el número de versión de la aplicación (no el nombre de la versión) en /data/system/packages.xml.

Sería bueno si hubiera un archivo que contuviera la información de la aplicación.

rananosis
fuente

Respuestas:

184
adb shell dumpsys package my.package | grep versionName

como lo mencionan @david y @Jeremy Fishman . Esto será mucho más rápido que:

adb shell dumpsys | grep -A18 "Package \[my.package\]"
arbuz
fuente
1
Eso me muestra la información del paquete, pero por alguna razón falta la información de la versión de cualquier paquete que haya intentado buscar en mi tableta (Android 2.2). En mi teléfono está toda la información de la versión (Android 2.3).
frognosis
1
bueno, si insiste en hacerlo en adb, puede hacerlo: adb shell service call package 1 s16 "my.package" i32 0. el número de versión estará cerca de 0x1F y la cadena de nombre después de 0x20 (debería ser la tercera línea)
arbuz
35
adb shell dumpsys package my.packagepuede ser significativamente más rápido
Jeremy Fishman
6
dumpsys package my.package | grep versionNamefunciona perfecto
David
3
@david, pero a veces devuelve varios resultados, por ejemplo, adb shell dumpsys package com.google.android.apps.photos | grep versionName debido a la Hidden system packages:sección. Quizás uno head -n1lo resolvería ...
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功
17

El paquete Dumpsys es tu amigo

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


Volverá

versionCode=X targetSdk=YY
versionName=Z.Z
Mono Roscado
fuente
8

En caso de que alguien necesite todas las versiones de aplicaciones para comparar propósitos, aquí está mi delineador:

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

Tal vez sea útil para alguien, pero tenga en cuenta que utilizo versionName e ignoro versionCode, así que úselo con cuidado.

LLL
fuente
5

Si desea obtener todas las versiones del paquete, pruebe este script 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 = ""; } }'
usuario541686
fuente
1
¡BONITO! Esta es una forma mucho más rápida que la de la respuesta de @ LLL
MichaelR
1

Si no desea instalar * .apk en el dispositivo pero necesita obtener la versión de la aplicación, puede hacerlo de la siguiente manera

$ANDROID_HOME/build-tools/28.0.3/aapt dump badging app/build/outputs/apk/app.app
SergeyUr
fuente