APK Analyzer의 명령줄 버전을 통해 빌드 프로세스를 완료한 후 APK의 구성에 관한 정보를 즉시 확인할 수 있으며 두 가지 APK의 차이를 비교할 수 있습니다. APK Analyzer를 사용하면 앱 내의 DEX 파일 및 리소스 관련 문제를 디버그하는 시간과 APK의 크기를 줄일 수 있습니다.
apkanalyzer
는 android_sdk/cmdline-tools/version/bin/apkanalyzer
의 Android SDK 명령줄 도구 패키지에 포함되어 있습니다.
또는 APK Analyzer로 빌드 분석에서 설명한 대로 Android 스튜디오 내에서 APK Analyzer 도구에 액세스할 수 있습니다.
구문
apkanalyzer
의 구문은 다음과 같습니다.
apkanalyzer [global-options] subject verb [options] apk-file [apk-file2]
subject
는 개발자가 쿼리하려는 것이며 전체 APK 또는 APK의 일부일 수 있습니다. subject는 다음 중 하나일 수 있습니다.
apk
: 애플리케이션 ID, 버전 코드, 버전 이름과 같은 APK 파일 속성을 분석합니다.files
: APK 파일 내의 파일을 분석합니다.manifest
: APK 파일 내 매니페스트의 콘텐츠를 분석합니다.dex
: APK 파일 내 DEX 파일을 분석합니다.resources
: 텍스트, 이미지 및 문자열 리소스를 봅니다.
verb
는 subject에 관해 알고 싶은 내용입니다. subject, verb 및 그 옵션은 명령어에 대한 다음 섹션에 설명되어 있습니다.
모든 명령어는 APK 파일을 지정해야 합니다. apk compare
명령어에만 개발자가 두 번째 APK를 지정해야 합니다.
옵션이 명확하다면 모든 옵션을 간단하게 줄일 수 있습니다. 예를 들어 --human-readable
전역 옵션은 -h
로 줄일 수 있습니다.
다음 예에서는 apk
(subject)를 분석하여 그 file-size
(verb)를 가져온 후 파일 크기를 사람이 읽을 수 있는 형식(-h
옵션)으로 출력합니다.
apkanalyzer -h apk file-size myapk.apk
명령어
명령어에 관한 다음 설명은 subject별로 정렬되어 있으며, 각 subject에 사용 가능한 verb와 옵션을 안내합니다.
설명 | |
---|---|
apk summary apk-file
|
애플리케이션 ID, 버전 코드, 버전 이름을 출력합니다.
출력 예: com.myapp 5 1.1-beta |
apk file-size apk-file
|
APK의 총 파일 크기를 출력합니다. |
apk download-size apk-file
|
APK의 예상 다운로드 크기를 출력합니다. |
apk features [--not-required] apk-file
|
APK에서 Play 스토어 필터링을 트리거하는 데 사용하는 기능을 출력합니다. --not-required 옵션을 추가하여 출력에 필요하지 않은 것으로 표시된 기능을 포함합니다.
출력 예: android.hardware.type.watch android.hardware.microphone implied: requested android.permission.RECORD_AUDIO permission |
apk compare [options] apk-file
apk-file2
|
apk-file 및 apk-file2 의 크기를 비교합니다.
다음 옵션을 포함할 수 있습니다.
출력 예 (이전 크기 / 새 크기 / 크기 차이 / 경로): 39086736 48855615 9768879 / 10678448 11039232 360784 /classes.dex 18968956 18968956 0 /lib/ 110576 110100 -476 /AndroidManifest.xml ... |
APK 파일 시스템 보기 | 설명 |
files list apk-file
|
APK의 모든 파일을 표시합니다.
출력 예: / /classes2.dex /classes.dex /assets/ /assets/asset.data /AndroidManifest.xml /resources.arsc /res/ ... |
files cat --file path apk-file
|
파일 콘텐츠를 출력합니다. --file
/AndroidManifest.xml 과 같은 --file path 옵션을 사용하여 APK 내에 경로를 지정해야 합니다.
|
매니페스트의 정보 보기 | 설명 |
manifest print apk-file
|
XML 형식으로 APK 매니페스트를 출력합니다. |
manifest application-id apk-file
|
애플리케이션 ID 값을 출력합니다. |
manifest version-name apk-file
|
버전 이름 값을 출력합니다. |
manifest version-code apk-file
|
버전 코드 값을 출력합니다. |
manifest min-sdk apk-file
| 최소 SDK 버전을 출력합니다. |
manifest target-sdk apk-file
|
대상 SDK 버전을 출력합니다. |
manifest permissions apk-file
|
권한 목록을 출력합니다. |
manifest debuggable apk-file
|
앱의 디버그 가능 여부를 출력합니다. |
DEX 파일 정보 액세스 | 설명 |
dex list apk-file
|
APK의 DEX 파일 목록을 출력합니다. |
dex references [--files path] [--files path2]
apk-file
|
지정된 DEX 파일의 메서드 참조 횟수를 출력합니다.
기본값은 모든 DEX 파일입니다. --files 옵션을 추가하여 포함하려는 특정 파일을 표시합니다.
출력 예: classes.dex 59598 classes2.dex 8042 |
dex packages [option1 option2 ...] apk-file
|
DEX의 클래스 트리를 출력합니다. 출력에서 P , C , M , F 는 각각 패키지, 클래스, 메서드, 필드를 나타냅니다. 그리고 x , k , r , d 는 각각 삭제된 노드, 보관된 노드, 참조된 노드, 정의된 노드를 나타냅니다.
출력을 미세 조정하려면 다음 옵션을 추가합니다.
출력 예 (유형/상태/정의된 메서드/참조된 메서드) /바이트 크기/이름): 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]
|
smali 형식으로 클래스 또는 메서드의 바이트 코드를 출력합니다. 클래스 이름은 필수이며, 디컴파일할 정규화된 클래스 이름을 출력합니다. --method 옵션을 추가하여 디컴파일할 메서드를 지정합니다.
메서드 디컴파일의 형식은 |
res/ 및 resources.arsc에 저장된 리소스 보기 | 설명 |
resources packages
|
리소스 표에 정의된 패키지 목록을 출력합니다. |
resources configs --type type [--package package] apk-file
|
지정된 type 의 구성 목록을 출력합니다.
type 은 string 과 같은 리소스 유형입니다.
리소스 표 패키지 이름을 지정하려면 --package 옵션을 포함하세요. 포함하지 않으면 첫 번째로 정의된 패키지가 사용됩니다.
|
resources value --config config --name name
--type type [--package package] apk-file
|
config , name , type 으로 지정된 리소스 값을 출력합니다. type 옵션은 string 과 같은 리소스 유형입니다.
리소스 표 패키지 이름을 지정하려면 |
resources names --config config --type type
[--package package] apk-file
|
구성 및 유형의 리소스 이름 목록을 출력합니다. type 옵션은 string 과 같은 리소스 유형입니다.
리소스 표 패키지 이름을 지정하려면 --package 옵션을 포함하세요. 포함하지 않으면 첫 번째로 정의된 패키지가 사용됩니다.
|
resources xml --file path apk-file
|
사람이 읽을 수 있는 바이너리 XML 파일 형식을 출력합니다.
file 옵션을 포함하여 파일 경로를 지정합니다.
|