Czy istnieje łatwy sposób uzyskania nazwy wersji aplikacji na urządzeniu z systemem Android przy użyciu powłoki adb?
Znalazłem numer wersji aplikacji (nie nazwę wersji) w /data/system/packages.xml.
Byłoby miło, gdyby istniał plik zawierający informacje o aplikacji.
adb shell dumpsys package my.package
może być znacznie szybszydumpsys package my.package | grep versionName
działa idealnieadb shell dumpsys package com.google.android.apps.photos | grep versionName
powoduHidden system packages:
sekcji. Możehead -n1
rozwiązałoby to ...Pakiet Dumpsys to Twój przyjaciel
~/# adb shell shell@mo:/ dumpsys package tld.comp.app_name | grep version
Wróci
versionCode=X targetSdk=YY versionName=Z.Z
źródło
Jeśli ktoś potrzebuje wszystkich wersji aplikacji do celów porównawczych, oto mój 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
Może to będzie pomocne dla kogoś, ale pamiętaj, że używam versionName i ignoruję versionCode, więc używaj ostrożnie.
źródło
Jeśli chcesz uzyskać wszystkie wersje pakietów, wypróbuj ten skrypt 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 = ""; } }'
źródło
Jeśli nie chcesz instalować * .apk na urządzeniu, ale potrzebujesz wersji aplikacji, możesz to zrobić w następujący sposób
$ANDROID_HOME/build-tools/28.0.3/aapt dump badging app/build/outputs/apk/app.app
źródło