apkanalyzer

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 của 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. Bằng cách sử dụng Công cụ phân tích APK, bạn có thể giảm thời gian khắc phục các vấn đề 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ụ SDK Android và nằm tại android_sdk/tools/bin/apkanalyzer. Ngoài ra, bạn có thể truy cập Công cụ phân tích APK trong Android Studio như được mô tả trong bài viết Phân tích bản dựng của bạn với Công cụ phân tích APK.

Cú pháp

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 file bên trong tệp APK.
  • manifest: Phân tích nội dung của file 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à tùy chọn của chúng được mô tả trong 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 tùy chọn miễn là tùy chọn không rõ ràng. Ví dụ: tùy chọn chung --human-readable có thể được rút ngắn 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 (tùy chọn -h):

apkanalyzer -h apk file-size myapk.apk

Tùy chọn chung

Tùy chọn Mô tả
--human-readable In các kích thước ở định dạng có thể đọc được.

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 tùy chọn có sẵn cho mỗi chủ đề.

Xem thuộc tính tệp APK 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 lọc Play Store . Thêm tùy 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-fileapk-file2. Bạn có thể bao gồm các tùy chọn sau:
  • --different-only: In các thư mục và file có sự khác biệt.
  • --files-only: Không in các mục trong thư mục.
  • --patch-size: Hiển thị số liệu ước tính về bản vá theo từng tệp thay vì mức chênh lệch thô.

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 tùy 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ị ID ứ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. Tùy chọn mặc định là tất cả tệp DEX. Thêm tùy 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 phân loại từ DEX. Dữ liệu đầu ra, P, C, MF cho biết các gói, loại, phương thức và trường tương ứng. Các mã x, k, rd cho biết các nút đã bị xóa, được giữ lại, được tham chiếu và được xác định tương ứng.

Hãy thêm các tùy chọn sau để tinh chỉnh kết quả:

  • --defined-only: Chỉ đưa vào các loại được xác định trong APK vào kết quả.
  • --files: Chỉ định tên tệp DEX mà bạn muốn đưa vào. Mặc định: tất cả tệp DEX.
  • --proguard-folder file: Chỉ định thư mục đầu ra Proguard để tìm các liên kết.
  • --proguard-mappings file: Chỉ định tệp liên kết Proguard.
  • --proguard-seeds file: Chỉ định tệp nội dung gốc Proguard.
  • --proguard-usages file: Chỉ định tệp sử dụng Proguard.
  • --show-removed: Hiển thị các loại và thành viên đã bị Proguard xóa.

Kết quả điểm dữ liệu (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 loại là bắt buộc và in tên loại đủ điều kiện để biên dịch ngược. Thêm tùy 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à name(params)returnType, ví dụ: someMethod(Ljava/lang/String;I)V.
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. Đưa vào tùy 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, nametype . Tùy chọn type là loại tài nguyên, chẳng hạn như string. Đưa vào tùy 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 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. Tùy chọn type là loại tài nguyên, chẳng hạn như string. Đưa vào tùy 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 biểu mẫu tệp XML nhị phân có thể đọc được. Đưa vào tùy chọn file để chỉ định đường dẫn đến tệp.