أداة تحليل إعدادات R8 هي أداة مصمّمة لمساعدتك في تحقيق أقصى استفادة من مزايا أداء R8 من خلال تقديم إحصاءات تفصيلية عن جودة إعدادات تطبيقك. تتيح لك هذه الأداة تتبُّع تحسين R8 وتحسينه من خلال مراقبة المقاييس الرئيسية، وتحديدًا نتائج تقليل الحجم والتحسين وإخفاء مفاتيح فك التشفير، التي تشير إلى النسبة المئوية من قاعدة الرموز البرمجية المتاحة للتحسين. من خلال تحديد قواعد الاحتفاظ الواسعة أو غير الضرورية، بما في ذلك تلك التي تم تقديمها من خلال مكتبات خارجية، تساعدك أداة التحليل في تحسين إعداداتك لضمان قدرة R8 على تحسين أكبر عدد ممكن من الفئات والحقول والطرق بشكل فعّال.
إنشاء التقرير
من الإصدار 9.3.0-alpha05 من AGP والإصدارات الأحدث، يتم إنشاء التقرير تلقائيًا في
build/outputs/mapping/release/configanalyzer.html عند تشغيل بنية R8. لإيقاف عملية الإنشاء التلقائي للنتائج، اضبط خاصية Gradle التالية:
android.experimental.r8.enableR8ConfigurationAnalyzer=false
بالنسبة إلى الإصدار 9.2 من AGP والإصدارات الأقدم، اضبط
com.android.tools.r8.dumpkeepradiushtmltodirectory خاصية النظام عند
تشغيل مهمة Gradle باستخدام بنية مفعّلة باستخدام R8.
./gradlew assembleRelease \
-Dcom.android.tools.r8.dumpkeepradiushtmltodirectory=<output_directory>
على سبيل المثال، استخدِم الأمر التالي لإنشاء تقرير HTML في الدليل /tmp/r8analysis:
// To create the /tmp/r8analysis folder.
mkdir -p /tmp/r8analysis
// To generate the report in the /tmp/r8analysis folder.
./gradlew assembleRelease \
-Dcom.android.tools.r8.dumpkeepradiushtmltodirectory=/tmp/r8analysis
فهم التقرير
تقدّم أداة تحليل إعدادات R8 إحصاءات عن إعدادات R8 في تطبيقك وتأثير كل قاعدة احتفاظ في تطبيقك. يساعدك ذلك في تحقيق أقصى قدر من التحسين من R8، ما يؤدي إلى تحسين أداء تطبيقك. استخدِم النتائج التالية لفهم مقدار قاعدة الرموز البرمجية المتاحة للتحسين من خلال R8.
نتيجة تقليل الحجم
عندما يقلّل R8 حجم تطبيقك، يقلّل الحجم الإجمالي لتطبيقك من خلال تحديد الرموز والموارد غير المستخدَمة وإزالتها، ما يضمن أن تكون البنية النهائية صغيرة قدر الإمكان. تتتبّع نتيجة تقليل الحجم النسبة المئوية للفئات والحقول والطرق التي تخضع لعملية تقليل الحجم. على سبيل المثال، تعني نتيجة تقليل الحجم البالغة% 66 أنّ R8 يمكنه إجراء عملية تقليل الحجم في% 66 من قاعدة الرموز البرمجية.
نتيجة التحسين
يُجري R8 عمليات تحسين، مثل تضمين الطرق ودمج الفئات، ما يؤدي إلى تحسين بدء التشغيل والذاكرة في تطبيقك. تتتبّع نتيجة التحسين النسبة المئوية للفئات والحقول والطرق التي تخضع لعمليات تحسين R8. على سبيل المثال، إذا كانت نتيجة التحسين %66، يعني ذلك أنّ R8 يمكنه إجراء عملية التحسين في% 66 فقط من قاعدة الرموز البرمجية.
نتيجة الإخفاء
من خلال إخفاء الفئات والحقول والطرق بأسماء أقصر، يقلّل R8 من حجم بيانات التطبيق الوصفية لتوفير الذاكرة. تقيس نتيجة الإخفاء النسبة المئوية من الرموز البرمجية المتاحة للإخفاء ضمن قاعدة الرموز البرمجية.
تحسين قواعد الاحتفاظ
لتحسين النتائج وتحقيق تحسين أفضل باستخدام R8، عليك تحسين قواعد الاحتفاظ حتى لا تمنع R8 بشكل غير ضروري من تحسين تطبيقك. يجب الاحتفاظ فقط بالفئات أو الطرق أو الحقول التي يتم الوصول إليها باستخدام الانعكاس.
لتحقيق ذلك، استخدِم تحليل قواعد الاحتفاظ.
للاطّلاع على التحليل التفصيلي لقاعدة، انقر عليها لفتح شاشة التفاصيل.
كيفية تحسين قواعد الاحتفاظ
لتحسين قواعد الاحتفاظ وتحقيق الإمكانات الكاملة لعمليات تحسين R8 في تطبيقك، اتّبِع الخطوات التالية:
- بالنسبة إلى كل قاعدة احتفاظ، اطّلِع على النسبة المئوية للفئات والحقول والطرق التي لا يمكن تحسينها باستخدام R8 في أداة تحليل الإعدادات. استخدِم ذلك لتحديد قواعد الاحتفاظ التي تمنع التحسين في عدد كبير من الفئات أو الحقول أو الطرق. يتم أيضًا إدراج خصائص التحسين التي تمنعها كل قاعدة احتفاظ.
- إذا ظهرت لك قاعدة احتفاظ تمنع تحسين عدد كبير من الفئات، عليك التأكّد من الفئات والحقول والطرق التي تمنع قاعدة الاحتفاظ تحسينها لمعرفة ما إذا كانت هذه القاعدة تحتفظ بالعناصر التي لا يتم استدعاؤها ديناميكيًا باستخدام الانعكاس.
- قلّل من التحسين الذي يتم حظره بواسطة قواعد الاحتفاظ من خلال استهداف الفئات أو الحقول أو الطرق الضرورية فقط عن طريق اختيار خيار الاحتفاظ المناسب واتّباع أفضل الممارسات.
- تحقَّق من الاختبارات التي تغطي الفئات والحقول والطرق المتأثرة بقاعدة الاحتفاظ ونفِّذها، وحسِّن قواعد الاحتفاظ.
فحص تحسين المكتبات
عند دمج مكتبات خارجية، غالبًا ما تتضمّن قواعد الاحتفاظ الخاصة بالمستهلك للعمل مع R8. بما أنّ مؤلّف المكتبة لا يمكنه توقُّع عملية التنفيذ المحدّدة، فإنّه يكتب أحيانًا قواعد تحفّظية وواسعة النطاق تمنع التحسين في عدد أكبر من الفئات والحقول والطرق اللازمة. قد يمنع ذلك R8 من تحسين أجزاء من تطبيقك لا علاقة لها بتنفيذ وقت التشغيل الفعلي للمكتبة. يمكنك استخدام أداة تحليل إعدادات R8 لتحديد المكتبات التي تقدّم قواعد تؤثر سلبًا في تحسين تطبيقك.
استخدِم أداة تحليل الإعدادات لفحص التأثير المجمّع لجميع قواعد الاحتفاظ المدمجة الخاصة بالمستهلك. من خلال تحليل تأثير كل قاعدة احتفاظ واردة من مكتبة خارجية، يمكنك تحديد وتتبُّع المكتبات الخارجية المحدّدة التي تمنع قدرًا كبيرًا من التحسين في تطبيقك.
كيفية تحسين المكتبات
- إذا كانت المكتبة تتضمّن قاعدة واسعة جدًا، ننصحك بالتواصل مع المسؤول عن صيانتها باستخدام البيانات من تقريرك لتوضيح كيفية تأثير قواعدها الحالية في نتائج تحسين تطبيقك. إذا كانت مكتبة خارجية، ابحث عن الأخطاء الحالية في المكتبة قبل تسجيل المشاكل.
- إذا لزم الأمر، يمكنك اختبار التحسينات المحتمَلة من خلال فلترة القواعد من مكتبة معيّنة. يمكنك استيراد قواعد المكتبة إلى مشروعك، واستبعاد القواعد الواسعة، وإعادة تشغيل أداة تحليل الإعدادات لقياس المكاسب المحتمَلة في الحجم والأداء.
القواعد المضمّنة
قد تكون هناك حالات تتداخل فيها قواعد احتفاظ متعددة، وقد تمنع إحدى القواعد تحسينًا أكبر من اللازم. إذا كان هناك قاعدتا احتفاظ في قاعدة الرموز البرمجية:
# Prevents optimization in the entire package
# Remove this to improve optimization
-keep class com.example.package.** { *; }
# Prevents optimization to the class inside the package
-keep class com.example.package.Myclass
تضمّن قاعدة الاحتفاظ الأولى التي تمنع التحسين في الحزمة بأكملها قاعدة الاحتفاظ الثانية التي تستهدف فئة داخل الحزمة التي تحتفظ بها قاعدة الاحتفاظ الأولى. عندما تتداخل قواعد الاحتفاظ، قد تمنع إحدى القواعد عمليات تحسين أكثر من اللازم. من خلال تحسين هذه القواعد المتداخلة، يمكنك تحقيق أقصى قدر من التحسين باستخدام R8 وإزالة الديون الفنية. تتضمّن هذه العملية تبسيط إعداداتك لضمان الاحتفاظ بالرموز البرمجية الأساسية فقط مع تحقيق الإمكانات الكاملة لقدرات التحسين في R8.
تحسين القواعد المضمّنة
- ابحث عن قواعد الاحتفاظ المضمّنة باستخدام أداة تحليل إعدادات R8.
- حدِّد الفئات أو الحقول أو الطرق الدقيقة في قاعدة الرموز البرمجية التي تعتمد فعليًا على الانعكاس، والتي يجب الاحتفاظ بها باستخدام قواعد الاحتفاظ. سيساعدك ذلك في تحسين قواعد الاحتفاظ.
- باستخدام أداة تحليل الإعدادات، قارِن تأثير كل قاعدة تستهدف الفئات أو الحقول أو الطرق نفسها. يمكنك استخدام النسبة المئوية للتحسين التي تمنعها كل قاعدة احتفاظ لتحديد القاعدة الأوسع والقاعدة الأضيق.
- إذا كانت القاعدة الأضيق مكتوبة بدقة، أي أنّها تحتفظ فقط بالأعضاء أو الفئات الدقيقة التي يتم الوصول إليها بشكل انعكاسي، أزِل قاعدة الاحتفاظ الأوسع. يؤدي ذلك إلى تفعيل عمليات تحسين R8 بأمان لبقية الحزمة.
- إذا كانت القاعدة الواسعة تستهدف الفئات الصحيحة، احتفِظ بالقاعدة الواسعة واحذف القاعدة الأضيق. القاعدة الأضيق هي مجرد بيانات غير ضرورية. احرِص على تحسين القاعدة الواسعة لاستهداف الفئات أو الحقول أو الطرق التي حدّدتها فقط.
التحقّق من التغييرات واختبارها: أعِد تشغيل أداة تحليل الإعدادات للتأكّد من حلّ التعارض. بعد ذلك، أنشئ بنية إصدار واختبِر التغييرات للتأكّد من أنّ قاعدة الرموز البرمجية تعمل على النحو المتوقّع.
إزالة القواعد غير الضرورية
باستخدام أداة تحليل الإعدادات، يمكنك تدقيق قاعدة الرموز البرمجية بشكل منهجي لتحديد قواعد الاحتفاظ القديمة التي تسبّب فوضى في إعداداتك وإزالتها. تُبرز أداة تحليل إعدادات R8 على وجه التحديد مصدرَين رئيسيَين للقواعد غير الضرورية:
- القواعد غير المستخدَمة: هي القواعد التي لا تتطابق مع أي فئات أو طرق أو حقول في بنيتك الحالية. غالبًا ما تظل هذه القواعد بعد إعادة صياغة الرموز البرمجية أو إزالة التبعيات أو من إعدادات النسخ واللصق التي لم تعُد ذات صلة، ما يؤدي إلى زيادة تعقيد الإعدادات بشكل غير ضروري.
- القواعد المتطابقة: هي قواعد الاحتفاظ المتطابقة التي تستهدف الفئات والحقول والطرق نفسها أو الإعلانات المكرّرة لقاعدة الاحتفاظ في الملف نفسه أو في ملفات قواعد الاحتفاظ المختلفة.
يضيف كلا النوعَين من القواعد فوضى إلى إعداداتك، ما يجعل صيانتها وتصحيح أخطائها أكثر صعوبة. من خلال تحديد هذه القواعد، يمكنك تنظيف إعداداتك.