Phiên bản dòng lệnh của Công cụ phân tích APK cung cấp thông tin chi tiết ngay lập tức về thành phần APK của bạn sau khi quy trình xây dựng hoàn tất và cho phép bạn so sánh sự khác biệt giữa hai APK. Khi sử dụng Công cụ phân tích APK, bạn sẽ giảm thời gian gỡ lỗi với tệp DEX và tài nguyên trong ứng dụng, đồng thời giảm kích thước APK của bạn.
apkanalyzer
có trong gói Công cụ dòng lệnh SDK Android tại android_sdk/cmdline-tools/version/bin/apkanalyzer
.
Ngoài ra, bạn có thể truy cập Công cụ phân tích APK trong Android Studio như mô tả trong bài viết Phân tích bản dựng bằng Công cụ phân tích APK.
Cú pháp
Cú pháp cho apkanalyzer
là:
apkanalyzer [global-options] subject verb [options] apk-file [apk-file2]
subject
là nội dung bạn muốn truy vấn và có thể là toàn bộ APK hoặc một phần của APK. Chủ đề có thể là bất kỳ nội dung nào sau đây:
apk
: Phân tích các thuộc tính tệp APK, chẳng hạn như ID ứng dụng, mã phiên bản và tên phiên bản.files
: Phân tích các tệp bên trong tệp APK.manifest
: Phân tích nội dung của tệp kê khai bên trong tệp APK.dex
: Phân tích các tệp DEX bên trong tệp APK.resources
: Xem văn bản, hình ảnh và tài nguyên chuỗi.
verb
là những gì bạn muốn biết về chủ đề. Các chủ đề, động từ, và tuỳ chọn của chúng được mô tả trong phần sau đây về lệnh.
Mỗi lệnh yêu cầu bạn chỉ định một tệp APK. Chỉ có lệnh apk compare
yêu cầu bạn chỉ định APK thứ hai.
Bạn có thể rút ngắn mọi tuỳ chọn, miễn là tuỳ chọn không rõ ràng. Ví dụ: có thể rút ngắn tuỳ chọn chung --human-readable
thành -h
.
Ví dụ sau đây phân tích apk
(chủ đề) để lấy file-size
(động từ), sau đó in kích thước tệp ở định dạng có thể đọc được (tuỳ chọn -h
):
apkanalyzer -h apk file-size myapk.apk
Lệnh
Các mô tả lệnh sau đây được sắp xếp theo chủ đề và liệt kê các động từ và tổ hợp tuỳ chọn có sẵn cho mỗi chủ đề:
|
Mô tả |
---|---|
apk summary apk-file
|
In ID ứng dụng, mã phiên bản và tên phiên bản.
Kết quả điểm dữ liệu: com.myapp 5 1.1-beta |
apk file-size apk-file
|
In tổng kích thước tệp của APK. |
apk download-size apk-file
|
In ước tính kích thước tải xuống của APK. |
apk features [--not-required] apk-file
|
Các tính năng in mà APK sử dụng để kích hoạt tính năng lọc Cửa hàng Play. Thêm tuỳ chọn --not-required để bao gồm các tính năng được đánh dấu là không bắt buộc trong kết quả.
Kết quả điểm dữ liệu: android.hardware.type.watch android.hardware.microphone implied: requested android.permission.RECORD_AUDIO permission |
apk compare [options] apk-file
apk-file2
|
So sánh kích thước của apk-file và apk-file2 .
Bạn có thể bao gồm các tuỳ chọn sau:
Kết quả điểm dữ liệu (kích thước cũ/kích thước mới/sự khác biệt về kích thước/đường dẫn): 39086736 48855615 9768879 / 10678448 11039232 360784 /classes.dex 18968956 18968956 0 /lib/ 110576 110100 -476 /AndroidManifest.xml ... |
Xem hệ thống tệp APK | Mô tả |
files list apk-file
|
Liệt kê tất cả các tệp trong APK.
Kết quả điểm dữ liệu: / /classes2.dex /classes.dex /assets/ /assets/asset.data /AndroidManifest.xml /resources.arsc /res/ ... |
files cat --file path apk-file
|
In nội dung tệp. Bạn phải chỉ định một đường dẫn bên trong APK bằng cách sử dụng tuỳ chọn --file path , chẳng hạn như --file
/AndroidManifest.xml
|
Xem thông tin trong tệp kê khai | Mô tả |
manifest print apk-file
|
In tệp kê khai APK ở định dạng XML. |
manifest application-id apk-file
|
In giá trị mã ứng dụng. |
manifest version-name apk-file
|
In giá trị tên phiên bản. |
manifest version-code apk-file
|
In giá trị mã phiên bản. |
manifest min-sdk apk-file
| In phiên bản SDK tối thiểu. |
manifest target-sdk apk-file
|
In phiên bản SDK mục tiêu. |
manifest permissions apk-file
|
In danh sách quyền. |
manifest debuggable apk-file
|
In xem ứng dụng có thể gỡ lỗi hay không. |
Truy cập thông tin tệp DEX | Mô tả |
dex list apk-file
|
In danh sách các tệp DEX trong APK. |
dex references [--files path] [--files path2]
apk-file
|
In số tham chiếu phương thức trong các tệp DEX đã chỉ định.
Tuỳ chọn mặc định là tất cả các tệp DEX. Thêm tuỳ chọn --files để cho biết các tệp cụ thể mà bạn muốn đưa vào.
Kết quả điểm dữ liệu: classes.dex 59598 classes2.dex 8042 |
dex packages [option1 option2 ...] apk-file
|
In cây phả hệ lớp từ DEX. Dữ liệu đầu ra, P , C , M và F cho biết các gói, lớp, phương thức và trường tương ứng. Các mã x , k , r và d cho biết các nút đã bị xoá, được giữ lại, được tham chiếu và được xác định tương ứng.
Hãy thêm các tuỳ chọn sau để tinh chỉnh kết quả:
Ví dụ về dữ liệu đầu ra (loại/trạng thái/phương thức đã xác định/phương thức tham chiếu/kích thước byte/tên): P d 1 1 85 g P d 1 1 85 g.a C d 1 1 85 g.a.a M d 1 1 45 g.a.a java.lang.Object get() C r 0 1 40 byte[] M r 0 1 40 byte[] java.lang.Object clone() |
dex code --class class [--method method]
|
In mã byte của một lớp hoặc phương thức ở định dạng smali. Tên lớp là bắt buộc và in tên lớp đủ điều kiện để biên dịch ngược. Thêm tuỳ chọn --method để chỉ định phương thức biên dịch ngược.
Định dạng của phương thức biên dịch ngược là |
Xem các tài nguyên được lưu trữ ở res/ và resources.arsc | Mô tả |
resources packages
|
In danh sách các gói được xác định trong bảng tài nguyên. |
resources configs --type type [--package package] apk-file
|
In danh sách các cấu hình cho type chỉ định.
type là một loại tài nguyên chẳng hạn như string .
Thêm tuỳ chọn --package nếu bạn muốn chỉ định tên gói của bảng tài nguyên, nếu không gói xác định đầu tiên sẽ được sử dụng.
|
resources value --config config --name name
--type type [--package package] apk-file
|
In giá trị của tài nguyên chỉ định bởi config , name và type . Tuỳ chọn type là loại tài nguyên, chẳng hạn như string .
Thêm tuỳ chọn |
resources names --config config --type type
[--package package] apk-file
|
In danh sách tên tài nguyên cho một cấu hình và loại. Tuỳ chọn type là loại tài nguyên, chẳng hạn như string .
Thêm tuỳ chọn --package nếu bạn muốn chỉ định tên gói của bảng tài nguyên, nếu không gói xác định đầu tiên sẽ được sử dụng.
|
resources xml --file path apk-file
|
In tệp XML nhị phân ở dạng người dùng có thể đọc được.
Thêm tuỳ chọn file để chỉ định đường dẫn đến tệp.
|