أرسلت بواسطة Johan Bay – مهندس البرمجيات

التطبيق الصغير والسريع هو مفتاح تجربة مستخدم رائعة. لهذا السبب قمنا ببناء R8 ، Optimizer الخاص بنا ، والذي يقوم بتبسيط تطبيقك عن طريق إزالة التعليمات البرمجية والموارد غير المستخدمة ، وإعادة كتابة التعليمات البرمجية لتحسين أداء وقت التشغيل ، والمزيد.
مع إصدار الإصدار 8.12.0 من المكون الإضافي Android Gradle (AGP) ، نقدم تقليص الموارد المحسنة ، وهي طريقة أفضل لتقليص تطبيقك باستخدام R8. من خلال الاختيار ، يمكنك جعل تطبيقك أصغر ، مما يعني تنزيلات أصغر ، وتركيبات أسرع ، وذاكرة أقل المستخدمة على أجهزة المستخدمين الخاصة بك. والنتيجة هي بدء تشغيل أسرع ، وتحسين التقديم ، وعدد أقل من ANRs.
كيف تعمل
تم تقليص الموارد لتطبيقات Android لفترة طويلة ، مع إجراء العديد من التحسينات على طول الطريق – على سبيل المثال ، تقليص جدول الموارد (الموارد) هو الآن تحسين افتراضي.
يحسن النهج الجديد تقلص الموارد من خلال دمجه بالكامل مع خط أنابيب تحسين الكود الحالي. في النهج الجديد ، يقوم R8 بتحسين كلاً من المراجع والموارد في نفس الوقت لضمان تحديد جميع الموارد التي يتم الرجوع إليها حصريًا من الكود غير المستخدمة على أنها غير مستخدمة ثم إزالتها. هذا يلغي تمامًا الحاجة إلى قواعد الاحتفاظ غير المشروط التي تم إنشاؤها بواسطة AAPT2 (أداة تغليف الموارد لنظام Android) ويوفر معلومات أكثر دقة ودقيقة لتجاهل الكود والموارد غير المستخدمة
هذا تحسن على خط الأنابيب الحالي حيث يكون الرمز وتحسين الموارد منفصلين. في خط الأنابيب الحالي ، يقوم AAPT2 بإنشاء قواعد لإبقاء الفصول الدراسية المشار إليها من الموارد دون قيد أو شرط. ثم ، يعمل التحسين R8 مع هذه القواعد الاحتفاظ. بعد الانتهاء من R8 لتحسين الكود وتقليصه ، يقوم بمسح الكود المتبقي لإنشاء رسم بياني لجميع الموارد المشار إليها بشكل مباشر أو غير مباشر. ومع ذلك ، غالبًا ما تحتفظ قواعد AAPT2 غير المشروطة في رمز غير مستخدم على خلاف ذلك ، مما يؤدي بدوره إلى الحفاظ على كل من الرمز غير المستخدم والموارد غير المستخدمة المشار إليها.
كيفية استخدامه
أولاً ، قم بتشغيل تحسين R8 مع تقلص الموارد ، باستخدام ما يلي في build.gradle.kts ملف:
android { buildTypes { release { isMinifyEnabled = true isShrinkResources = true … } } }
قم بتشغيل خط أنابيب تقلص الموارد المحسن الجديد عن طريق إضافة ما يلي إلى Gradle.properties ملف:
android.r8.optimizedResourceShrinking=true
فوائد
أظهر خط أنابيب تقلص الموارد الأمثل تحسينات كبيرة على التنفيذ الحالي. بالنسبة للتطبيقات التي تشترك في موارد ورمز كبير عبر العموديات المختلفة لعوامل النموذج ، قمنا بقياس تحسينات تزيد عن 50 ٪ في حجم التطبيق. ترى التطبيقات الأصغر التحسينات أيضًا – على سبيل المثال ، في Androidify نرى المكاسب التالية:

يوضح الجدول التحسينات التدريجية في الحجم حيث يتم تمكين تحسينات إضافية ، من عدم تقلص الموارد المحسنة. الخلايا التي تحمل علامة النجمة تشير إلى أرقام محسّنة مقارنة بالصف السابق. تمكين R8 يزخر بحجم DEX الخاص بك ، مع تمكين تقلص الموارد يزيل الموارد غير المستخدمة في كل من الدقة
المجلد وفي جدول الموارد ، ولكنه لا يغير حجم DEX ، وأخيراً ، يقلل الموارد المحسنة من تقليص الحجم عن طريق إزالة كل من الموارد ورمز DEX لأنه يمكن تتبع المراجع عبر DEX وحدود الموارد.
الخطوات التالية
بدءًا من AGP 9.0.0 ، يصبح تقليص الموارد المحسّنة هو السلوك القياسي لأي مشروع تم تشغيله في تشغيل الموارد.
تحقق من الوثائق المحدثة حديثًا لتجربة تقلص الموارد المحسنة وإخبارنا إذا واجهت أي مشاكل في تعقب المشكلات.

