analizator apk

Wersja wiersza poleceń Analizatora plików APK zapewnia natychmiastowy wgląd pakietu APK po zakończeniu procesu kompilacji. Pozwala porównać różnice między dwoma pakietami APK. Użycie Analizatora plików APK zmniejsza na debugowanie problemów z plikami i zasobami DEX w aplikacji zmniejsza rozmiar pliku APK.

apkanalyzer znajduje się w Pakiet narzędzi wiersza poleceń dla pakietu Android SDK w android_sdk/cmdline-tools/version/bin/apkanalyzer Możesz też skorzystać z narzędzia Analizator plików APK Android Studio, jak opisano w Przeanalizuj kompilację za pomocą Analizatora plików APK.

Składnia

Składnia instrukcji apkanalyzer:

apkanalyzer [global-options] subject verb [options] apk-file [apk-file2]

Element subject to zapytanie, którego ma dotyczyć zapytanie. Może on być całym plikiem APK. lub jego część. Tematem może być:

  • apk: analizuj atrybuty pliku APK, takie jak identyfikator aplikacji, kod wersji i nazwę wersji.
  • files: analizowanie plików w pliku APK.
  • manifest: przeanalizuj zawartość pliku manifestu w pliku APK.
  • dex: przeanalizuj pliki DEX w pliku APK.
  • resources: wyświetlanie zasobów tekstowych, graficznych i ciągowych.

verb to wszystko, co chcesz wiedzieć na dany temat. Przedmioty, czasowniki oraz ich opcje zostały opisane w sekcji dotyczącej polecenia poniżej.

Każde polecenie wymaga wskazania pliku APK. Tylko Polecenie apk compare wymaga wskazania drugiego pliku APK.

Każdą opcję można skrócić, o ile jest ona jednoznaczna. Przykład: opcję globalną --human-readable można skrócić do -h

Poniższy przykład analizuje apk (temat) aby uzyskać file-size (czasownik), a następnie wydrukuje rozmiar pliku w format zrozumiały dla człowieka (opcja -h):

apkanalyzer -h apk file-size myapk.apk

Polecenia

Te opisy poleceń są uporządkowane według tematu i zawierają listę dostępne kombinacje czasowników i opcji dla każdego tematu:

Wyświetlanie atrybutów pliku APK Opis
apk summary apk-file Wyświetla identyfikator aplikacji, kod i nazwę wersji.

Przykładowe dane wyjściowe:

com.myapp 5 1.1-beta
apk file-size apk-file Wyświetla całkowity rozmiar pliku APK.
apk download-size apk-file Wyświetla szacowany rozmiar pobieranego pliku APK.
apk features [--not-required] apk-file Drukuje funkcje używane przez plik APK, które aktywują Filtrowanie Sklepu Play . Dodaj opcję --not-required , aby uwzględnić w danych wyjściowych funkcje oznaczone jako niewymagane.

Przykładowe dane wyjściowe:

android.hardware.type.watch
android.hardware.microphone implied:
    requested android.permission.RECORD_AUDIO permission
apk compare [options] apk-file apk-file2 Porównuje rozmiary: apk-file i apk-file2 Możesz uwzględnić te opcje:
  • --different-only: drukuje katalogi i pliki za pomocą różnice między nimi.
  • --files-only: nie drukuje wpisów katalogu.
  • --patch-size: pokazuje szacunkową poprawkę dla każdego pliku. a nie nieprzetworzonej różnicy.

Przykładowe dane wyjściowe (stary rozmiar / nowy rozmiar / różnica w rozmiarze / ścieżka):

39086736 48855615 9768879 /
10678448 11039232 360784 /classes.dex
18968956 18968956 0 /lib/
110576 110100 -476 /AndroidManifest.xml
...
Wyświetlanie systemu plików APK Opis
files list apk-file Zawiera listę wszystkich plików w pakiecie APK.

Przykładowe dane wyjściowe:

/
/classes2.dex
/classes.dex
/assets/
/assets/asset.data
/AndroidManifest.xml
/resources.arsc
/res/
...
files cat --file path apk-file Wydrukuje zawartość pliku. Musisz podać ścieżkę w pliku APK za pomocą parametru opcję --file path, na przykład --file /AndroidManifest.xml
Wyświetl informacje w pliku manifestu Opis
manifest print apk-file Powoduje wydrukowanie pliku manifestu APK w formacie XML.
manifest application-id apk-file Drukuje wartość identyfikatora aplikacji.
manifest version-name apk-file Wyświetla wartość nazwy wersji.
manifest version-code apk-file Drukuje wartość kodu wersji.
manifest min-sdk apk-file Drukuje minimalną wersję pakietu SDK.
manifest target-sdk apk-file Drukuje docelową wersję pakietu SDK.
manifest permissions apk-file Drukuje listę uprawnień.
manifest debuggable apk-file Informacja o tym, czy aplikację można debugować.
Dostęp do informacji o pliku DEX Opis
dex list apk-file Wyświetla listę plików DEX w pakiecie APK.
dex references [--files path] [--files path2] apk-file Wypisuje liczbę odwołań do metod w określonych plikach DEX. Domyślnie wszystkie pliki DEX. Dodaj opcję --files do: wskazać konkretne pliki, które chcesz uwzględnić.

Przykładowe dane wyjściowe:

classes.dex 59598
classes2.dex 8042
dex packages [option1 option2 ...] apk-file Drukuje drzewo klas z pliku DEX. W danych wyjściowych P, C, M i F wskazują pakiety, klas, metod i pól. Oraz x, k, r i d wskazują na usunięte, zachowane, węzłów dozwolonych i zdefiniowanych.

Dodaj następujące opcje, aby zawęzić wyniki:

  • --defined-only: zawiera w danych wyjściowych tylko klasy zdefiniowane w pliku APK.
  • --files: określa nazwy plików DEX do uwzględnienia. Domyślnie: wszystkie pliki DEX.
  • --proguard-folder file: określa folder wyjściowy Proguard do wyszukiwania mapowań.
  • --proguard-mappings file: określa plik mapowania Proguard.
  • --proguard-seeds file: określa plik ziarna Proguard.
  • --proguard-usages file: określa plik wykorzystania Proguard.
  • --show-removed: pokazuje zajęcia i członków, którzy zostali usunięci przez Proguard.

Przykładowe dane wyjściowe (typ/stan/zdefiniowane metody/odwołania /rozmiar/nazwa bajtów):

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] Drukuje kod bajtowy klasy lub metody w formacie smali. nazwę zajęć, jest wymagany i wyświetla w pełni kwalifikowaną nazwę klasy do zdekompilowania. Dodaj parametr --method określającą metodę dekompilacji.

Format dla metody dekompilacji to name(params)returnType. Na przykład someMethod(Ljava/lang/String;I)V

Wyświetl zasoby przechowywane w plikach res/ i resource.arsc Opis
resources packages Wyświetla listę pakietów zdefiniowanych w tabeli zasobów.
resources configs --type type [--package package] apk-file Wyświetla listę konfiguracji określonego typu type. type jest typem zasobu, na przykład string. Uwzględnij: --package Jeśli chcesz określić nazwę pakietu tabeli zasobów. W przeciwnym razie zostanie użyty pierwszy zdefiniowany pakiet.
resources value --config config --name name --type type [--package package] apk-file Wyświetla wartość zasobu określonego przez funkcję config. name i type. Opcja type to typ zasobu, taki jak string

Uwzględnij: --package Jeśli chcesz określić nazwę pakietu tabeli zasobów. W przeciwnym razie zostanie użyty pierwszy zdefiniowany pakiet.

resources names --config config --type type [--package package] apk-file Drukuje listę nazw zasobów konfiguracji i typu. Opcja type to typ zasobu, taki jak string Uwzględnij: --package Jeśli chcesz określić nazwę pakietu tabeli zasobów. W przeciwnym razie zostanie użyty pierwszy zdefiniowany pakiet.
resources xml --file path apk-file Drukuje czytelną dla człowieka formę binarnego pliku XML. Dołącz file, aby podać ścieżkę do pliku.