Rufen Sie den Namen der Anwendungsversion mit adb ab

94

Gibt es eine einfache Möglichkeit, den Versionsnamen einer Anwendung auf einem Android-Gerät mithilfe der ADB-Shell abzurufen?

Ich habe die Versionsnummer der Anwendung (nicht den Versionsnamen) in /data/system/packages.xml gefunden.

Es wäre schön, wenn es eine Datei gäbe, die die Anwendungsinformationen enthält.

Frognose
quelle

Antworten:

182
adb shell dumpsys package my.package | grep versionName

wie von @david und @Jeremy Fishman erwähnt . Dies geht viel schneller als:

adb shell dumpsys | grep -A18 "Package \[my.package\]"
arbuz
quelle
1
Das zeigt mir zwar die Paketinformationen, aber aus irgendeinem Grund fehlen die Versionsinformationen für jedes Paket, das ich auf meinem Tablet (Android 2.2) nachschlagen wollte. Auf meinem Handy sind alle Versionsinformationen vorhanden (Android 2.3).
Frognose
1
Nun, wenn Sie darauf bestehen, dies in adb zu tun, können Sie Folgendes tun: adb shell service call package 1 s16 "my.package" i32 0. Die Versionsnummer liegt irgendwo in der Nähe von 0x1F und die Namenszeichenfolge nach 0x20 (sollte 3. Zeile sein)
arbuz
35
adb shell dumpsys package my.packagekann deutlich schneller sein
Jeremy Fishman
6
dumpsys package my.package | grep versionNamefunktioniert perfekt
David
3
@david, aber manchmal werden mehrere Ergebnisse zurückgegeben, z. B. adb shell dumpsys package com.google.android.apps.photos | grep versionName aufgrund des Hidden system packages:Abschnitts. Vielleicht head -n1würde ein es lösen ...
Ciro Santilli 法轮功 冠状 病 六四 事件 23
17

Dumpsys Paket ist dein Freund

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


Wird zurückkehren

versionCode=X targetSdk=YY
versionName=Z.Z
MonoThreaded
quelle
8

Falls jemand alle Apps-Versionen zum Vergleichen benötigt, ist hier mein 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

Vielleicht ist es für jemanden hilfreich, aber bitte beachten Sie, dass ich versionName verwende und versionCode ignoriere. Gehen Sie also vorsichtig vor.

LLL
quelle
5

Wenn Sie alle Paketversionen erhalten möchten, versuchen Sie dieses awk-Skript:

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 = ""; } }'
user541686
quelle
1
NETT! Dies ist ein viel schnellerer Weg als der in der Antwort von @ LLL
MichaelR
1

Wenn Sie * .apk nicht auf dem Gerät installieren möchten, aber eine Version der App benötigen, können Sie dies wie folgt tun

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