รับชื่อเวอร์ชันแอปพลิเคชันโดยใช้ adb


95

มีวิธีง่ายๆในการรับชื่อเวอร์ชันของแอปพลิเคชันบนอุปกรณ์ Android โดยใช้ adb shell หรือไม่?

ฉันพบหมายเลขเวอร์ชันของแอปพลิเคชัน (ไม่ใช่ชื่อเวอร์ชัน) ใน /data/system/packages.xml

คงจะดีไม่น้อยหากมีไฟล์ที่มีข้อมูลแอปพลิเคชัน

คำตอบ:


191
adb shell dumpsys package my.package | grep versionName

ตามที่@davidและ@Jeremy Fishmanกล่าวไว้ สิ่งนี้จะเร็วกว่า:

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

1
นั่นแสดงข้อมูลแพ็คเกจให้ฉัน แต่ด้วยเหตุผลบางประการข้อมูลเวอร์ชันของแพ็คเกจใด ๆ ที่ฉันพยายามค้นหาบนแท็บเล็ตของฉันหายไป (android 2.2) ด้วยเหตุผลบางประการ ในโทรศัพท์ของฉันมีข้อมูลเวอร์ชันทั้งหมดอยู่ที่นั่น (Android 2.3)
Frognosis

1
ถ้าคุณยืนยันที่จะทำใน adb คุณสามารถทำได้: adb shell service call package 1 s16 "my.package" i32 0 หมายเลขเวอร์ชันจะอยู่ใกล้ 0x1F และสตริงชื่อหลัง 0x20 (ควรเป็นบรรทัดที่ 3)
arbuz

35
adb shell dumpsys package my.packageได้เร็วขึ้นอย่างเห็นได้ชัด
Jeremy Fishman

7
dumpsys package my.package | grep versionNameทำงานได้อย่างสมบูรณ์แบบ
เดวิด

3
@david แต่บางครั้งก็ส่งกลับผลลัพธ์หลายรายการเช่นadb shell dumpsys package com.google.android.apps.photos | grep versionName เนื่องจากHidden system packages:ส่วน อาจhead -n1จะแก้ได้ ...
Ciro Santilli 郝海东郝海东病六四事件法轮功

18

แพ็คเกจ Dumpsys คือเพื่อนของคุณ

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


จะกลับมา

versionCode=X targetSdk=YY
versionName=Z.Z

8

ในกรณีที่มีคนต้องการแอพทุกเวอร์ชันเพื่อเปรียบเทียบจุดประสงค์นี่คือ 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

อาจจะเป็นประโยชน์สำหรับใครบางคน แต่โปรดทราบว่าฉันใช้ versionName และละเว้น versionCode ดังนั้นใช้ด้วยความระมัดระวัง


5

หากคุณต้องการรับเวอร์ชันแพ็คเกจทั้งหมดให้ลองใช้สคริปต์ 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 = ""; } }'

1
ดี! นี่เป็นวิธีที่เร็วกว่ามากคำตอบของ @ LLL
MichaelR

1

หากคุณไม่ต้องการติดตั้ง * .apk บนอุปกรณ์ แต่คุณต้องการแอพเวอร์ชันคุณสามารถทำได้ดังต่อไปนี้

$ANDROID_HOME/build-tools/28.0.3/aapt dump badging app/build/outputs/apk/app.app
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.