apkanalyzer

نسخه خط فرمان 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 را مشاهده کنید توضیحات
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 را مقایسه می کند. می توانید گزینه های زیر را در نظر بگیرید:
  • --different-only : فهرست ها و فایل ها را با تفاوت چاپ می کند.
  • --files-only : ورودی های دایرکتوری را چاپ نمی کند.
  • --patch-size : تخمینی از پچ فایل به فایل را به جای تفاوت خام نشان می دهد.

خروجی نمونه (اندازه قدیمی / اندازه جدید / تفاوت اندازه / مسیر):

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 به ترتیب نشان دهنده گره های حذف شده، نگهداری شده، ارجاع شده و تعریف شده هستند.

گزینه های زیر را برای اصلاح خروجی اضافه کنید:

  • --defined-only : فقط شامل کلاس های تعریف شده در APK در خروجی می شود.
  • --files : نام فایل های DEX را مشخص می کند. پیش فرض: همه فایل های DEX.
  • --proguard-folder file : پوشه خروجی Proguard را برای جستجوی نقشه ها مشخص می کند.
  • --proguard-mappings file : فایل نگاشت Proguard را مشخص می کند.
  • --proguard-seeds file : فایل Proguard seeds را مشخص می کند.
  • --proguard-usages file : فایل کاربردهای Proguard را مشخص می کند.
  • --show-removed : کلاس ها و اعضایی را که توسط Proguard حذف شده اند را نشان می دهد.

نمونه خروجی (نوع/حالت/روش های تعریف شده/روش های ارجاع شده/اندازه بایت/نام):

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 را اضافه کنید تا روش دیکامپایل را مشخص کنید.

فرمت کامپایل متد name(params)returnType است، برای مثال someMethod(Ljava/lang/String;I)V .

مشاهده منابع ذخیره شده در 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 .

اگر می خواهید نام بسته جدول منبع را مشخص کنید، گزینه --package را وارد کنید، در غیر این صورت از اولین بسته تعریف شده استفاده می شود.

resources names --config config --type type [--package package ] apk-file فهرستی از نام منابع را برای پیکربندی و نوع چاپ می کند. گزینه type نوع منبع است، مانند string . اگر می خواهید نام بسته جدول منبع را مشخص کنید، گزینه --package را وارد کنید، در غیر این صورت از اولین بسته تعریف شده استفاده می شود.
resources xml --file path apk-file فرم قابل خواندن توسط انسان یک فایل XML باینری را چاپ می کند. برای تعیین مسیر فایل، گزینه file را وارد کنید.