الأحداث والبرامج

استخدِم أداة R8 لتقليص حجم تطبيقك وتحسينه وتسريعه

قراءة لمدة 5 دقائق
Ben Weiss
مهندسة علاقات المطوّرين

استخدِم أداة R8 لتقليص حجم تطبيقك وتحسينه وتسريعه

مرحبًا بك في اليوم الأول من سلسلة "أسبوع تحسين الأداء على Android".

سنبدأ بأكثر التغييرات تأثيرًا وأقلها جهدًا لتحسين أداء تطبيقك، وهو تفعيل أداة التحسين R8 في الوضع الكامل.

من المحتمل أنّك تعرف أداة R8 كأداة لتقليص حجم تطبيقك. وتُحسِن هذه الأداة إزالة الرموز والموارد غير المستخدَمة، ما يقلّل من حجم تطبيقك. ولكنّ قوتها الحقيقية، التي تتفوّق فيها، هي كونها أداة تحسين.

عند تفعيل الوضع الكامل والسماح بالتحسينات، تُجري أداة R8 تحسينات عميقة على البرنامج بأكمله، وتعيد كتابة الرموز البرمجية لتكون أكثر فعالية بشكل أساسي. وهذا ليس مجرد تعديل بسيط.

بعد قراءة هذه المقالة، ننصحك بمشاهدة فيديو مقدمة عن أداة التحسين R8 في سلسلة "أسبوع تحسين الأداء" على YouTube.

كيف تُحسِّن أداة R8 أداء تطبيقك؟

image.png

لنلقِ نظرة على أكبر الخطوات التي تتّخذها أداة التحسين R8 لتحسين أداء التطبيق.

إزالة الرموز غير المستخدَمة هي أهم خطوة لتقليل حجم التطبيق. خلال هذه المرحلة، تُزيل أداة التحسين R8 الرموز غير المستخدَمة من المكتبات التي يعتمد عليها تطبيقك، بالإضافة إلى الرموز غير النشطة من قاعدة الرموز البرمجية الخاصة بك.

تضمين الأساليب يستبدل طلب إجراء بالرمز البرمجي الفعلي، ما يحسّن أداء وقت التشغيل.

دمج الفئات، ويتم تطبيق استراتيجيات أخرى لجعل الرمز البرمجي أكثر إحكامًا. في هذه المرحلة، لا تهمّ جميع التجريدات الرائعة، مثل الواجهات والتسلسلات الهرمية للفئات، ومن المرجّح أن تتم إزالتها.

يتم استخدام تصغير الرموز البرمجية لتغيير أسماء الفئات والحقول والأساليب إلى أسماء أقصر وبلا معنى. بدلاً من MyDataModel، قد ينتهي بك الأمر بفئة تُسمّى a. وهذا ما يسبب أكبر قدر من الارتباك عند قراءة تتبُّع تسلسل استدعاء الدوال من تطبيق تم تحسينه باستخدام أداة R8. (يُرجى العِلم أنّنا قد حسّنّا هذه الميزة في الإصدار 9.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android!).

يقلّل تقليص الموارد حجم التطبيق بشكل أكبر من خلال إزالة الموارد غير المستخدَمة، مثل ملفات XML والرسومات.

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

دراسة حالة: تحسينات الأداء التي حقّقها تطبيق Reddit باستخدام أداة R8

كمثال على تحسينات الأداء التي يمكن أن تحققها أداة R8، لنلقِ نظرة على مثال من Reddit. بعد تفعيل R8 في الوضع الكامل، شهد تطبيق Android Reddit تحسينات كبيرة في الأداء في مجالات مختلفة.

image.png

الشرح: كيف حسّنت أداة R8 أداء تطبيق Reddit؟

لاحظ الفريق تسريع عملية بدء التشغيل على البارد بنسبة% 40، وتقليل أخطاء "التطبيق لا يستجيب" (ANR) بنسبة% 30، وتحسين عرض الإطارات بنسبة% 25، وتقليل حجم التطبيق بنسبة% 14.

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

يمكنك قراءة المزيد عن هذه التحسينات على مدونتنا.

الآثار غير الفنية لاستخدام أداة R8

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

image.png

لنسمِّ الأمور بمسمياتها: إنّ التحسين المتعمد للأداء هو فضيلة.

إرشادك إلى تطبيق أكثر فعالية

علمنا أنّ إرشادات المطوّرين الخاصة بأداة R8 بحاجة إلى تحسين. لذلك بدأنا العمل على ذلك. أصبحت إرشادات المطوّرين الخاصة بأداة التحسين R8 الآن أكثر فعالية وتوفّر إرشادات شاملة لتفعيل أداة R8 وتحديد المشاكل فيها وحلّها.

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

لقد وسّعنا بشكل كبير إرشاداتنا بشأن قواعد الاحتفاظ بالبيانات، وهي الآلية الأساسية للتحكّم في أداة التحسين R8. نقدّم الآن قسمًا عن قواعد الاحتفاظ بالبيانات وكيفية تطبيقها، ونرشدك إلى أفضل الممارسات لكتابتها والحفاظ عليها. نقدّم أيضًا حالات استخدام وأمثلة عملية وفعالة، ما يساعدك في فهم كيفية منع أداة R8 بشكل صحيح من إزالة الرموز البرمجية المطلوبة في وقت التشغيل، مثل الرموز البرمجية التي يتم الوصول إليها من خلال الانعكاس أو استخدام واجهة JNI الأصلية.

يتناول المستند الآن أيضًا خطوات المتابعة الأساسية والسيناريوهات المتقدّمة. أضفنا قسمًا عن الاختبار وتحديد المشاكل وحلّها، حتى تتمكّن من التحقّق من تحسينات الأداء وتحديد أي مشاكل محتملة وحلّها. يوضّح قسم عمليات الضبط المتقدّمة كيفية استهداف صيغ تصميم معيّنة، وتخصيص الموارد التي يتم الاحتفاظ بها أو إزالتها، ويقدّم تعليمات تحسين خاصة لمؤلّفي المكتبات، ما يضمن لك توفير حزمة محسّنة ومتوافقة مع أداة R8 ليستخدمها المطوّرون الآخرون.

فعِّل الإمكانات الكاملة لأداة التحسين R8

تستخدم أداة التحسين R8 "الوضع الكامل" تلقائيًا منذ الإصدار 8.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android. إذا تم تطوير مشروعك على مدار سنوات عديدة، قد يظل يتضمّن علامة قديمة لإيقافها. ابحث عن هذا السطر في ملف gradle.properties وأزِله.

android.enableR8.fullMode=false // delete this line to enable R8's full potential

تحقَّق الآن مما إذا كنت قد فعّلت أداة R8 في ملف `build.gradle.kts` الخاص بتطبيقك لصيغة الإصدار. يتم تفعيلها من خلال ضبط `isMinifyEnabled` و`isShrinkResources` على "صحيح". يمكنك أيضًا تمرير ملفات الضبط التلقائية والمخصّصة في هذه الخطوة.

release {

   isMinifyEnabled = true

   isShrinkResources = true

   proguardFiles(

       getDefaultProguardFile("proguard-android-optimize.txt"),

       "keep-rules.pro"

   )

}

دراسة حالة: تحسينات الأداء في Disney+‎

يستثمر المهندسون في Disney+‎ في أداء التطبيق ويعملون على تحسين تجربة المستخدم في التطبيق. في بعض الأحيان، يمكن أن تُحدث حتى التغييرات الصغيرة على ما يبدو تأثيرًا كبيرًا. أثناء فحص إعدادات أداة R8، وجد الفريق أنّه يتم استخدام العلامة -dontoptimize. تمت إضافة هذه العلامة من خلال ملف ضبط تلقائي، ولا يزال يتم استخدامه في العديد من التطبيقات اليوم.

بعد استبدال proguard-android.txt بـ proguard-android-optimize.txt، لاحظ فريق Disney+‎ تحسينات كبيرة في أداء التطبيق.

image.png

بعد طرح إصدار جديد من التطبيق يحتوي على هذا التغيير للمستخدمين، لاحظت Disney+‎ تسريع عملية بدء تشغيل التطبيق بنسبة% 30 وتقليل أخطاء "التطبيق لا يستجيب" التي يلاحظها المستخدمون بنسبة% 25. 

لا يزال العديد من التطبيقات اليوم يستخدم ملف proguard-android.txt الذي يحتوي على العلامة -dontoptimize. وهنا يأتي دور التحسينات التي نُجريها على أدواتنا.

دعم الأدوات

بدءًا من الإصدار 3 من تحديث Narwhal في "استوديو Android"، سيظهر لك تحذير من أداة Lint عند استخدام proguard-android.txt 

image.png

واعتبارًا من الإصدار 9.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android، سنوقف الدعم تمامًا لهذا الملف. هذا يعني أنّه عليك الانتقال إلى proguard-android-optimize.txt.

لقد استثمرنا أيضًا في ميزات جديدة في "استوديو Android" لنسهّل عليك تحديد المشاكل وحلّها في الرموز البرمجية المحسّنة باستخدام أداة R8 أكثر من أي وقت مضى. بدءًا من الإصدار 9.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android، يمكنك الآن إزالة التعتيم تلقائيًا من تتبُّع تسلسل استدعاء الدوال ضمن logcat في "استوديو Android" للإصدارات التي تمت معالجتها باستخدام أداة R8، ما يساعدك في تحديد سطر الرمز البرمجي الدقيق الذي يسبب مشكلة، حتى في تطبيق تم تحسينه بالكامل. سيتم تناول هذا الموضوع بمزيد من التفصيل في مشاركة المدونة غدًا في سلسلة "أسبوع تحسين الأداء على Android".

الخطوات التالية

ننصحك بمشاهدة فيديو مقدمة عن أداة التحسين R8 في سلسلة "أسبوع تحسين الأداء" على YouTube.

📣 خُض تحدّي الأداء

حان الوقت للاطّلاع على المزايا بنفسك.

ندعوك إلى تفعيل الوضع الكامل لأداة R8 في تطبيقك اليوم.

  1. اتّبِع أدلة المطوّرين للبدء: تفعيل تحسين التطبيق.
  2. تحقَّق مما إذا كنت لا تزال تستخدم proguard-android.txt واستبدِله بـ proguard-android-optimize.txt.
  3. بعد ذلك، قِس التأثير. لا يكفي أن تشعر بالفرق، بل عليك التحقّق منه. قِس تحسينات الأداء من خلال تعديل الرمز البرمجي من نموذج التطبيق Macrobenchmark على GitHub لقياس أوقات بدء التشغيل قبل وبعد ذلك.

نحن على ثقة بأنّك ستلاحظ تحسينًا كبيرًا في أداء تطبيقك. استخدِم الهاشتاغ ‎ #optimizationEnabled لأي أسئلة حول تفعيل أداة R8 أو تحديد المشاكل فيها وحلّها. نحن في الخدمة.

أحضِر أسئلتك لجلسة "اسأل Android" يوم الجمعة

استخدِم الهاشتاغ ‎ #AskAndroid لطرح أي أسئلة حول الأداء. على مدار الأسبوع، نتتبّع أسئلتك وسنجيب عن عدة أسئلة في جلسة "اسأل Android" حول الأداء يوم الجمعة 21 نوفمبر. ترقَّب غدًا، حيث سنتعمّق أكثر في تحديد المشاكل وحلّها. ولكن في الوقت الحالي، ابدأ باستخدام أداة R8 وسرِّع تطبيقك.

تأليف:

متابعة القراءة