يوفر إصدار سطر الأوامر في أداة تحليل APK رؤية مباشرة لتركيب APK بعد اكتمال عملية الإصدار ويتيح لك مقارنة الاختلافات بين حزمتي APK. يؤدي استخدام أداة تحليل APK إلى تقليل الوقت الذي تقضيه في تصحيح أخطاء ملفات DEX والموارد داخل تطبيقك وتقليل حجم حزمة APK.
تم تضمين apkanalyzer
في حزمة أدوات سطر الأوامر لحزمة تطوير البرامج (SDK) لنظام التشغيل Android على android_sdk/cmdline-tools/version/bin/apkanalyzer
.
بدلاً من ذلك، يمكنك الوصول إلى أداة تحليل APK ضمن
Android Studio كما هو موضّح في
تحليل إصدارك باستخدام أداة تحليل APK.
بناء الجملة
بنية apkanalyzer
هي:
apkanalyzer [global-options] subject verb [options] apk-file [apk-file2]
تشير السمة subject
إلى ما تريد طلب البحث عنه، ويمكن أن تكون حزمة APK كاملة أو جزءًا من حزمة APK. يمكن أن يكون الموضوع واحدًا مما يلي:
apk
: تحليل سمات ملف APK، مثل معرّف التطبيق ورمز الإصدار واسم الإصدار.files
: تحليل الملفات داخل ملف APKmanifest
: تحليل محتوى البيان داخل ملف APK.dex
: تحليل ملفات DEX داخل ملف APKresources
: عرض موارد النصوص والصور والسلاسل
وتشير 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 ، فتشير إلى العُقد التي تمت إزالتها والاحتفاظ بها
والرجوع إليها وتحديدها، على التوالي.
أضِف الخيارات التالية لتحسين الناتج:
مثال على الناتج (type/state/identifier الطرق/الطرق المرجعية/حجم البايت/الاسم): 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 لتحديد المسار إلى الملف.
|