Nhận tên phiên bản ứng dụng bằng cách sử dụng adb


94

Có cách nào dễ dàng để lấy tên phiên bản của ứng dụng trên thiết bị Android bằng cách sử dụng adb shell không?

Tôi đã tìm thấy số phiên bản ứng dụng (không phải tên phiên bản) trong /data/system/packages.xml.

Sẽ rất tuyệt nếu có một tệp chứa Thông tin ứng dụng.

Câu trả lời:


184
adb shell dumpsys package my.package | grep versionName

như được đề cập bởi @david@Jeremy Fishman . Điều này sẽ nhanh hơn nhiều so với:

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

1
Điều đó hiển thị cho tôi thông tin gói nhưng vì lý do nào đó mà nó thiếu thông tin phiên bản cho bất kỳ gói nào mà tôi đã cố gắng tra cứu trên máy tính bảng của mình (android 2.2). Trên điện thoại của tôi có tất cả thông tin phiên bản (android 2.3).
frognosis

1
tốt nếu bạn khăng khăng làm điều đó trong adb, bạn có thể làm: adb shell service call package 1 s16 "my.package" i32 0. số phiên bản sẽ ở đâu đó gần 0x1F và chuỗi tên sau 0x20 (phải là dòng thứ 3)
arbuz

35
adb shell dumpsys package my.packagecó thể nhanh hơn đáng kể
Jeremy Fishman

6
dumpsys package my.package | grep versionNamehoạt động hoàn hảo
david

3
@david nhưng đôi khi nó trả về nhiều kết quả, ví dụ như adb shell dumpsys package com.google.android.apps.photos | grep versionName Hidden system packages:phần. Có lẽ a head -n1sẽ giải quyết được nó ...
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

17

Gói Dumpsys là bạn của bạn

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


Sẽ trở lại

versionCode=X targetSdk=YY
versionName=Z.Z

8

Trong trường hợp ai đó cần tất cả các phiên bản ứng dụng cho mục đích so sánh thì đây là oneliner của tôi:

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

Có thể nó sẽ hữu ích cho ai đó nhưng xin lưu ý rằng tôi sử dụng versionName và bỏ qua versionCode, vì vậy hãy sử dụng cẩn thận.


5

Nếu bạn muốn tải tất cả các phiên bản gói, hãy thử tập lệnh awk này:

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
ĐẸP! Đây là cách nhanh hơn nhiều so với cách trong câu trả lời của @ LLL
MichaelR

1

Nếu bạn không muốn cài đặt * .apk trên thiết bị nhưng bạn cần tải phiên bản ứng dụng, bạn có thể thực hiện như sau

$ANDROID_HOME/build-tools/28.0.3/aapt dump badging app/build/outputs/apk/app.app
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.