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 옵션을 포함하여 파일 경로를 지정합니다.
|