Adb kullanarak uygulama sürüm adını alın


95

Adb shell kullanan bir Android cihazda bir uygulamanın sürüm adını almanın kolay bir yolu var mı?

Uygulama sürüm numarasını (sürüm adını değil) /data/system/packages.xml'de buldum.

Uygulama Bilgilerini içeren bir dosya olsaydı iyi olurdu.

Yanıtlar:


189
adb shell dumpsys package my.package | grep versionName

@david ve @Jeremy Fishman tarafından belirtildiği gibi . Bu, şunlardan çok daha hızlı olacaktır:

adb shell dumpsys | grep -A18 "Package \[my.package\]"

1
Bu bana paket bilgilerini gösteriyor, ancak bazı nedenlerden dolayı tabletimde (android 2.2) aramaya çalıştığım herhangi bir paketin sürüm bilgisi eksik. Telefonumda tüm sürüm bilgileri var (android 2.3).
frognosis

1
adb'de yapmakta ısrar ediyorsanız, şunları yapabilirsiniz: adb shell service call package 1 s16 "my.package" i32 0. sürüm numarası 0x1F yakınında ve ad dizesi
0x20'den

35
adb shell dumpsys package my.packageönemli ölçüde daha hızlı olabilir
Jeremy Fishman

6
dumpsys package my.package | grep versionNamemükemmel çalışıyor
david

3
@david, ancak bazen, örneğin bölüm adb shell dumpsys package com.google.android.apps.photos | grep versionName nedeniyle birden çok sonuç döndürür Hidden system packages:. Belki bir head -n1çözer ...
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

18

Dumpsys paketi senin arkadaşın

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


Dönecek

versionCode=X targetSdk=YY
versionName=Z.Z

8

Birinin karşılaştırma amacıyla tüm uygulama sürümlerine ihtiyacı olması durumunda işte benim oneliner'ım:

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

Belki birileri için faydalı olabilir, ancak lütfen versionName kullandığımı ve versionCode'u yok saydığımı unutmayın, bu yüzden dikkatli kullanın.


5

Tüm paket sürümlerini almak istiyorsanız, bu awk komut dosyasını deneyin:

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 = ""; } }'

1
GÜZEL! Bu, @
LLL'nin

1

Cihaza * .apk yüklemek istemiyorsanız, ancak uygulamanın sürümünü almanız gerekiyorsa, aşağıdaki gibi yapabilirsiniz

$ANDROID_HOME/build-tools/28.0.3/aapt dump badging app/build/outputs/apk/app.app
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.