يمكنك التأكّد من أنّ "ملفات تعريف بدء التشغيل" تعمل إما باستخدام "استوديو Android" أو من خلال الاطّلاع على بيانات وصفية لإنشاء R8.
التأكيد باستخدام "استوديو Android"
للتأكّد من تحسين تنسيق DEX، استخدِم Android Studio لفتح حزمة APK والتحقّق من الفئات في ملفات DEX. تأكَّد من أنّ classes.dex الأساسي ليس ممتلئًا تمامًا. إذا كان تطبيقك يتألف من ملف DEX واحد، يمكنك التحقّق مما إذا كان التطبيق يحتوي على ملفَي DEX بعد تفعيل "ملف بدء التشغيل".
يُصدر استوديو Android تحذيرًا إذا لم تتناسب فئات بدء التشغيل مع ملف DEX واحد.
للحصول على معلومات تشخيصية تتضمّن عدد الطرق غير المستخدَمة عند بدء التشغيل في فئات بدء التشغيل، تأكَّد من تعديل برنامج الترجمة البرمجية R8 إلى الإصدار 8.3.21 على الأقل من خلال إجراء التغييرات التالية على ملف settings.gradle عند تطبيق "ملف بدء التشغيل":
Kotlin
pluginManagement { buildscript { repositories { mavenCentral() maven { url = uri("https://storage.googleapis.com/r8-releases/raw") } } dependencies { classpath("com.android.tools:r8:8.3.21") } } }
أنيق
pluginManagement { buildscript { repositories { mavenCentral() maven { url uri('https://storage.googleapis.com/r8-releases/raw') } } dependencies { classpath 'com.android.tools:r8:8.3.6-dev" } } }
تأكَّد من إضافة --info بعد assembleRelease في الأمر التالي عند الإنشاء باستخدام Gradle.
./gradlew assembleRelease --info
بعد ذلك، تتم طباعة بيانات التشخيص على الجهاز.
إذا كان تطبيقك أو أي من المكتبات يشير إلى أي واجهات برمجة تطبيقات تم إلغاء تشويشها، سيتم دائمًا تضمين عمليات التنفيذ المتوافقة المجمّعة لهذه الفئات في آخر ملف DEX. لا يشارك ملف DEX الأخير الذي تمت إزالة التشويش منه في عمليات تحسين تنسيق DEX.
التأكيد باستخدام البيانات الوصفية للحزمة
بدءًا من الإصدار 8.8 من AGP، يخرج R8 بيانات وصفية في مجموعة حزمات تطبيق Android (AAB) يمكنك استخدامها للتحقّق مما إذا كانت عملية تحسين تنسيق DEX قد تمت بنجاح. للتأكّد من نجاح عملية التحسين، اتّبِع الخطوات التالية:
إنشاء حِزمة AAB لتطبيقك:
./gradlew app:bundleReleaseتأكَّد من وجود ملف DEX واحد على الأقل يحتوي على النص
"startup": true.افتح البيانات الوصفية:
unzip -j -o path-to-aab BUNDLE-METADATA/com.android.tools/r8.json && jq .dexFiles r8.jsonقد يكون مسار ملف AAB مشابهًا لما يلي
app/build/outputs/bundle/release/app-release.aab.تحقَّق من الناتج الذي من المفترض أن يظهر على النحو التالي:
inflating: r8.json [ { "checksum": "f0b4b0ddb295812607f44efe03cf7a830056ccfddbdb81db3760d2281940e951", "startup": true } ]
إذا رأيت
"startup": falseفقط في البيانات الوصفية، عليك تفعيل ملفات تعريف بدء التشغيل والتأكّد من أنّ ملف تعريف بدء التشغيل غير مشوّش.تأكَّد من أنّ قيم SHA-256 من البيانات الوصفية تتطابق مع تلك الموجودة في حِزمة AAB. للحصول على قيم SHA-256 لجميع ملفات DEX، نفِّذ ما يلي:
unzip -o path-to-aab */dex/*.dex && sha256sum */dex/*يجب أن تبدو المخرجات على النحو التالي:
Archive: app/build/outputs/bundle/release/myapp-release.aab inflating: base/dex/classes.dex f0b4b0ddb295812607f44efe03cf7a830056ccfddbdb81db3760d2281940e951 base/dex/classes.dexقارِن قيم التجزئة بقيم "المجموع الاختباري" من الخطوة 1. إذا لم تتطابق قيم SHA-256، قد تكون هناك خطوة تجميع تتداخل مع قدرة R8 على إخراج ملفات DEX.