يوفر إصدار سطر الأوامر من أداة تحليل 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
: تحليل الملفات داخل ملف APKmanifest
: تحليل محتوى ملف البيان داخل ملف APKdex
: تحليل ملفات DEX داخل ملف APKresources
: عرض موارد النصوص والصور والسلاسل
تمثّل "verb
" المعلومات التي تريد معرفتها عن هذا الموضوع. الموضوعات،
والأفعال وخياراتها موضحة في القسم التالي حول command (الأوامر).
يتطلب كل أمر تحديد ملف 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 لتحديد مسار الملف.
|