محلِّل ملفات APK

يوفر إصدار سطر الأوامر من أداة تحليل APK إحصاءات فورية حول تكوين APK بعد اكتمال عملية التصميم ويتيح لك والمقارنة بين أوجه الاختلاف بين ملفي APK. يحد استخدام أداة تحليل APK من الوقت الذي تقضيه في تصحيح الأخطاء المرتبطة بملفات DEX ومواردها داخل تطبيقك يقلل من حجم حزمة APK.

تشمل بطاقة "apkanalyzer" حزمة أدوات سطر الأوامر لحزمة تطوير البرامج (SDK) لنظام التشغيل Android على android_sdk/cmdline-tools/version/bin/apkanalyzer وبدلاً من ذلك، يمكنك الوصول إلى أداة "تحليل APK" من خلال "استوديو Android" كما هو موضّح في تحليل الإصدار باستخدام أداة تحليل حِزم 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" المعلومات التي تريد معرفتها عن هذا الموضوع. الموضوعات، والأفعال وخياراتها موضحة في القسم التالي حول command (الأوامر).

يتطلب كل أمر تحديد ملف 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.
  • --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 لتحديد مسار الملف.