Dapatkan nama versi aplikasi menggunakan adb

94

Adakah cara mudah untuk mendapatkan nama versi aplikasi di perangkat Android menggunakan adb shell?

Saya menemukan nomor versi aplikasi (bukan nama versi) di /data/system/packages.xml.

Alangkah baiknya jika ada file yang berisi Info Aplikasi.

frognosis
sumber

Jawaban:

185
adb shell dumpsys package my.package | grep versionName

seperti yang disebutkan oleh @david dan @Jeremy Fishman . Ini akan jauh lebih cepat daripada:

adb shell dumpsys | grep -A18 "Package \[my.package\]"
arbuz
sumber
1
Itu menunjukkan kepada saya info paket tetapi untuk beberapa alasan itu kehilangan informasi versi untuk paket apa pun yang saya coba cari di tablet saya (android 2.2). Di ponsel saya semua informasi versi ada di sana (android 2.3).
frognosis
1
baik jika Anda bersikeras melakukannya di adb, Anda dapat melakukannya: adb shell service call package 1 s16 "my.package" i32 0. nomor versinya akan berada di suatu tempat di dekat 0x1F dan string nama setelah 0x20 (harus baris ke-3)
arbuz
35
adb shell dumpsys package my.packagebisa jauh lebih cepat
Jeremy Fishman
6
dumpsys package my.package | grep versionNamebekerja dengan sempurna
david
3
@david tetapi terkadang mengembalikan beberapa hasil, misalnya adb shell dumpsys package com.google.android.apps.photos | grep versionName karena Hidden system packages:bagian tersebut. Mungkin head -n1akan menyelesaikannya ...
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功
18

Paket Dumpsys adalah teman Anda

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


Akan kembali

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

Jika seseorang membutuhkan semua versi aplikasi untuk membandingkan tujuan maka inilah satu perjalanan saya:

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

Mungkin ini akan membantu seseorang tetapi harap dicatat bahwa saya menggunakan versionName dan mengabaikan versionCode, jadi gunakan dengan hati-hati.

LLL
sumber
5

Jika Anda ingin mendapatkan semua versi paket, coba skrip awk ini:

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 = ""; } }'
pengguna541686
sumber
1
BAGUS! Ini adalah cara yang jauh lebih cepat daripada yang ada di jawaban @ LLL
MichaelR
1

Jika Anda tidak ingin menginstal * .apk pada perangkat tetapi Anda memerlukan versi aplikasinya, Anda dapat melakukannya sebagai berikut

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