نسخه خط فرمان APK Analyzer بینش فوری درباره ترکیب APK شما پس از تکمیل فرآیند ساخت ارائه می دهد و به شما امکان می دهد تفاوت های بین دو APK را مقایسه کنید. استفاده از APK Analyzer زمان صرف مشکلات اشکال زدایی فایلها و منابع DEX در برنامه را کاهش میدهد و اندازه APK شما را کاهش میدهد.
apkanalyzer
در بسته Android SDK Command-Line Tools در android_sdk /cmdline-tools/ version /bin/apkanalyzer
گنجانده شده است. همچنین، میتوانید به ابزار APK Analyzer در Android Studio همانطور که در Analyse your build with APK Analyzer توضیح داده شده است دسترسی داشته باشید.
نحو
سینتکس 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 به ترتیب بسته ها، کلاس ها، متدها و فیلدها را نشان می دهند. و 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 را وارد کنید. |