גרסת שורת הפקודה של כלי הניתוח של APK מספקת תובנות מיידיות לגבי של ה-APK בסיום תהליך ה-build, ומאפשרת לכם להשוות את ההבדלים בין שתי חבילות APK. השימוש בכלי הניתוח של APK מפחית את העלות הזמן שאתם משקיעים בניפוי באגים בבעיות בקובצי DEX ובמשאבי DEX בתוך האפליקציה, מקטין את ה-APK.
apkanalyzer
כלול ב
חבילת כלי שורת הפקודה ל-Android SDK ב-
android_sdk/cmdline-tools/version/bin/apkanalyzer
לחלופין, ניתן לגשת אל הכלי לניתוח APK דרך
Android Studio כפי שמתואר ב
ניתוח ה-build באמצעות כלי הניתוח של APK.
תחביר
התחביר של apkanalyzer
הוא:
apkanalyzer [global-options] subject verb [options] apk-file [apk-file2]
ה-subject
הוא מה שרצית להריץ עליו שאילתה, והוא יכול להיות כל ה-APK
או חלק מה-APK. נושא יכול להיות כל אחת מהאפשרויות הבאות:
apk
: ניתוח מאפיינים של קובץ APK, כמו מזהה אפליקציה, קוד גרסה, ושם הגרסה.files
: ניתוח הקבצים בתוך קובץ ה-APK.manifest
: ניתוח התוכן של המניפסט בקובץ ה-APK.dex
: ניתוח של קובצי ה-DEX בקובץ ה-APK.resources
: הצגת משאבי טקסט, תמונה ומחרוזות.
verb
הוא מה שרוצים לדעת על הנושא. הנושאים,
פעלים והאפשרויות שלהם מתוארות בקטע הבא בנושא פקודות.
לכל פקודה יש לציין קובץ APK. רק
כדי להשתמש בפקודה apk compare
, צריך לציין APK שני.
אפשר לקצר כל אפשרות, כל עוד האפשרות ברורה. לדוגמה,
ניתן לקצר את האפשרות הגלובלית --human-readable
כך
-h
.
הדוגמה הבאה מנתחת את apk
(הנושא)
כדי לקבל את file-size
(פועל), ואז מדפיסים את גודל הקובץ
פורמט קריא לאנשים (אפשרות -h
):
apkanalyzer -h apk file-size myapk.apk
פקודות
תיאורי הפקודות הבאים מאורגנים לפי נושא ומפרטים שילובים זמינים של פועל ואפשרות לכל נושא:
|
תיאור |
---|---|
apk summary apk-file
|
מדפיסה את מזהה האפליקציה, קוד הגרסה ושם הגרסה.
פלט לדוגמה: 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
|
מדפיס את התוכן של הקובץ. עליך לציין נתיב בתוך ה-APK באמצעות
האפשרות --file path , למשל --file
/AndroidManifest.xml
|
הצגת מידע במניפסט | תיאור |
manifest print apk-file
|
מדפיסה את מניפסט ה-APK בפורמט XML. |
manifest application-id apk-file
|
מדפיסה את ערך מזהה האפליקציה. |
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
|
מדפיסה רשימה של קובצי ה-DEX ב-APK. |
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 מציינים חבילות,
class, methods ושדות, בהתאמה. וגם 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 לציון השיטה לביטול הידור.
הפורמט
ל-method decompiles היא |
הצגת משאבים שמאוחסנים ב-res/ וב-resource.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 לציון הנתיב לקובץ.
|