دراسات الحالة
كيف استخدمت Reddit أداة التحسين R8 لإجراء تحسينات كبيرة على الأداء؟
قراءة لمدة 4 دقائق
في عالم التطبيقات للأجهزة الجوّالة اليوم، لم تعُد تجربة المستخدم السلسة ميزة فحسب، بل أصبحت ضرورة. ويمكن أن تشكّل مدّة التحميل الطويلة والواجهات غير المستجيبة وعدم الاستقرار عوائق كبيرة أمام تفاعل المستخدمين والاحتفاظ بهم. أثناء عمل فريق الهندسة في Reddit مع فريق علاقات المطوّرين في Android، استخدموا نتيجة أداء التطبيق لتقييم تطبيقهم. وبعد تقييم أدائهم، حدّدوا إمكانية إجراء تحسينات كبيرة وقرّروا اتّخاذ الخطوات اللازمة لتفعيل الإمكانات الكاملة لأداة التحسين R8، وهي أداة تحسين تطبيقات Android. أدّى هذا الإجراء المركّز إلى تحسينات ملحوظة في أوقات بدء التشغيل، وتقليل عدد اللقطات البطيئة أو المجمّدة وأخطاء ANR، وزيادة التقييمات الإجمالية على "متجر Play". توضّح دراسة الحالة هذه بالتفصيل كيف حقّقت Reddit هذه النتائج المذهلة.
كيف ساعدت أداة التحسين R8 شركة Reddit؟
أداة التحسين R8 هي أداة أساسية لتحسين الأداء على Android. تتّخذ هذه الأداة خطوات مختلفة لتحسين أداء التطبيق.لنلقِ نظرة سريعة على الخطوات الأكثر تأثيرًا.
- إزالة الرموز غير المستخدَمة هي أهم خطوة لتقليل حجم التطبيق. في هذه الخطوة، تتم إزالة الرموز غير المستخدَمة من تبعيات التطبيق والتطبيق نفسه.
- تضمين الأساليب يستبدل استدعاءات الأساليب بالرمز الفعلي، ما يجعل التطبيق أكثر فعالية.
- دمج الفئات، ويتم تطبيق استراتيجيات أخرى لجعل الرمز أكثر إحكامًا. في هذه المرحلة، لا يهمّ أن يكون الرمز المصدر قابلاً للقراءة من قِبل الإنسان، بل أن يعمل الرمز المبرمَج بسرعة. لذلك، لا تهمّ هنا التجريدات، مثل الواجهات أو التسلسلات الهرمية للفئات، وستتم إزالتها.
- تقليل حجم المعرّفات يغيّر أسماء الفئات والحقول والأساليب إلى أسماء أقصر وبلا معنى. لذلك، بدلاً من
MyDataModel، قد ينتهي بك الأمر بفئة تُسمّى a. - تقليل حجم الموارد يزيل الموارد غير المستخدَمة، مثل ملفات XML والرسومات، لتقليل حجم التطبيق بشكل أكبر.
المراحل الرئيسية لتحسين الأداء باستخدام R8
من البيانات الدقيقة إلى رضا المستخدمين: تحديد النجاح في مرحلة الإنتاج
لاحظت Reddit تحسّنًا في نتائج الأداء مباشرةً بعد طرح إصدار جديد من التطبيق للمستخدمين.باستخدام مؤشرات Android الحيوية وCrashlytics، تمكّنت Reddit من جمع مقاييس الأداء على أجهزة حقيقية مع مستخدمين فعليين، ما سمح لها بمقارنة الإصدار الجديد بالإصدارات السابقة.
كيف حسّنت أداة التحسين R8 أداء تطبيق Reddit؟
لاحظ الفريق بدء تشغيل أسرع بنسبة% 40، وانخفاضًا بنسبة% 30 في أخطاء "التطبيق لا يستجيب" (ANR)، وتحسّنًا بنسبة% 25 في عرض اللقطات، وانخفاضًا بنسبة% 14 في حجم التطبيق.
هذه التحسينات ضرورية لرضا المستخدمين. يعني بدء التشغيل الأسرع وقت انتظار أقل ووصولاً أسرع إلى المحتوى. يؤدي انخفاض عدد أخطاء ANR إلى تطبيق أكثر استقرارًا وموثوقية، ما يقلّل من إحباط المستخدمين. تؤدي عملية عرض اللقطات بسلاسة إلى إزالة التشويش في واجهة المستخدم، ما يجعل التمرير والصور المتحرّكة تبدو سلسة وسريعة الاستجابة. كان لهذا التأثير الفني الإيجابي تأثير واضح أيضًا على آراء المستخدمين.
كانت مؤشرات رضا المستخدمين عن نجاح التحسين ظاهرة بوضوح على "متجر Google Play". بعد طرح الإصدار المحسّن باستخدام R8، لاحظ الفريق تحوّلاً كبيرًا وإيجابيًا في آراء المستخدمين وتفاعلهم.
Drew Heavner: "تفعيل الأداة التي تتيح الاستفادة من الإمكانات الكاملة لأداة التحسين R8 في أقل من أسبوعَين"
الأمر الأكثر إثارة للإعجاب هو أنّ هذا الإنجاز تم من خلال جهد مركّز. أشار Drew Heavner، مهندس البرامج الأول في Reddit الذي عمل على هذا الإجراء، إلى أنّ تطبيق التغييرات التي تتيح الاستفادة من الإمكانات الكاملة لأداة التحسين R8 استغرق أقل من أسبوعَين.
تأكيد المكاسب: نظرة متعمّقة باستخدام الاختبارات المعيارية الكلية
بعد ملاحظة التحسينات الكبيرة في العالم الحقيقي، أجرى فريق الهندسة في Reddit وفريق علاقات المطوّرين في Android في Google اختبارات معيارية مفصّلة لتأكيد المكاسب علميًا وتجربة تحسينات إضافية. لإجراء هذا التحليل، قدّم فريق الهندسة في Reddit إصدارَين من تطبيقهم: أحدهما بدون تحسينات والآخر يطبّق أداة التحسين R8 وأداتَين أساسيتَين إضافيتَين لتحسين الأداء: الملفات الشخصية الأساسية و الملفات الشخصية لبدء التشغيل.
تنقل الملفات الشخصية الأساسية بشكل فعّال خطوات التجميع في الوقت المناسب (JIT) من أجهزة المستخدمين إلى أجهزة المطوّرين. لقد ثبت أنّ الرمز المبرمَج الذي تم تجميعه مسبقًا (AOT) يقلّل من وقت بدء التشغيل ومشاكل العرض على حد سواء.
عند تجميع تطبيق، يأخذ برنامج d8 dexer الفئات والأساليب وينشئ ملفات classes.dex لتطبيقك. عندما يفتح المستخدم التطبيق، يتم تحميل ملفات dex هذه واحدًا تلو الآخر إلى أن يتمكّن التطبيق من بدء التشغيل. من خلال تقديم ملف شخصي لبدء التشغيل ، يمكنك إعلام برنامج d8 بالفئات والأساليب التي يجب تضمينها في أول ملفات classes.dex. يسمح هذا الهيكل للتطبيق بتحميل عدد أقل من الملفات، ما يؤدي بدوره إلى تحسين سرعة بدء التشغيل.
Jetpack Macrobenchmark كان الأداة الأساسية لهذه المرحلة، ما يسمح بالقياس الدقيق لتفاعلات المستخدمين في بيئة خاضعة للرقابة. لمحاكاة رحلة مستخدم نموذجية، استخدموا واجهة برمجة التطبيقات UIAutomator API لإنشاء اختبار يفتح التطبيق، ثم يتم التمرير للأسفل ثلاث مرات، ثم التمرير للأعلى مرة أخرى.
في النهاية، كل ما كان مطلوبًا لكتابة الاختبار المعياري هو ما يلي:
uiAutomator {
startApp(REDDIT)
repeat(3) {
onView { isScrollable }.fling(Direction.DOWN) }
repeat(3) {
onView {isScrollable }.fling(Direction.UP)
}
}
أكّدت بيانات الاختبار المعياري الملاحظات الميدانية وقدّمت إحصاءات أكثر تفصيلاً. بدأ تشغيل التطبيق المحسّن بالكامل أسرع بنسبة% 55 وتمكّن المستخدمون من بدء التصفّح قبل% 18 من الوقت. أظهر التطبيق المحسّن أيضًا انخفاضًا بمقدار الثلثَين في عدد مرات تجميع الرموز في الوقت المناسب (JIT) وانخفاضًا بمقدار الثلث في وقت تجميع الرموز في الوقت المناسب (JIT). تحسّن عرض اللقطات، ما أدّى إلى عرض لقطات أكثر بنسبة% 19 خلال رحلة المستخدم التي تم قياسها. أخيرًا، تم تقليل حجم التطبيق بأكثر من الثلث.
التحسينات الإجمالية على أداء تطبيق Reddit
يمكنك قياس وقت تجميع الرموز في الوقت المناسب (JIT) باستخدام مقياس قسم تتبُّع مخصّص في Macrobenchmark، مثل ما يلي:
val jitCompilationMetric = TraceSectionMetric("JIT Compiling %", label = "JIT compilation")
تفعيل التكنولوجيا التي تقف وراء التحوّل: أداة التحسين R8
لتفعيل أداة التحسين R8 في الوضع الكامل، عليك ضبط ملف app/build.gradle.kts من خلال ضبط minifyEnabled وshrinkResources على true في نوع بنية الإصدار.
android {
...
buildTypes {
release {
isMinifyEnabled = true
isShrinkResources = true
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"keep-rules.pro",
)
}
}
}
يجب أن تتبع هذه الخطوة اختبار شامل من البداية إلى النهاية، لأنّ تحسينات الأداء يمكن أن تؤدي إلى سلوك غير مرغوب فيه، ومن الأفضل أن تكتشفه قبل أن يكتشفه المستخدمون.
كما هو موضّح سابقًا في هذه المقالة، تجري أداة التحسين R8 تحسينات شاملة لزيادة مزايا الأداء إلى أقصى حد. تُجري أداة التحسين R8 تعديلات كبيرة على الرمز، بما في ذلك إعادة تسمية الفئات والحقول والأساليب ونقلها وإزالتها. إذا لاحظت أنّ هذه التعديلات تؤدي إلى حدوث أخطاء، عليك تحديد أجزاء الرمز التي يجب ألا تعدّلها أداة التحسين R8 من خلال الإعلان عنها في قواعد الاحتفاظ.
اتّباع مثال Reddit في تطبيقك
يمثّل نجاح Reddit مع أداة التحسين R8 دراسة حالة فعّالة لأي فريق تطوير يتطلّع إلى إحداث تأثير كبير وبأقل جهد على أداء تطبيقه. تؤكّد العلاقة المباشرة بين التحسينات الفنية والارتفاع اللاحق في رضا المستخدمين قيمة تحسين الأداء.
من خلال اتّباع المخطط الموضّح في دراسة الحالة هذه، يمكن للمطوّرين الآخرين تحقيق مكاسب مماثلة، وذلك باستخدام أدوات مثل نتيجة أداء التطبيق لتحديد الفرص، وتفعيل الإمكانات الكاملة لتحسين الأداء باستخدام أداة التحسين R8، ومراقبة البيانات الفعلية، واستخدام الاختبارات المعيارية لتأكيد الفهم وتعميقه.
لبدء استخدام أداة التحسين R8 في تطبيقك، يُرجى الرجوع إلى المستندات والإرشادات الرسمية التي تم تحديثها مؤخرًا بشأن تفعيل أداة التحسين R8 وضبطها وحلّ المشاكل فيها.
متابعة القراءة
-
دراسات الحالة
Monzo هو بنك رقمي في المملكة المتحدة يضم 15 مليون عميل، والعدد في ازدياد. مع توسّع نطاق التطبيق، حدّد فريق الهندسة وقت بدء تشغيل التطبيق كمنطقة مهمة للتحسين، لكنهم كانوا قلقين من أنّ ذلك سيتطلب تغييرات كبيرة في قاعدة الرموز البرمجية.
Ben Weiss, Tracy Agyemang • قراءة لمدة دقيقتَين
-
دراسات الحالة
شهد تطبيق FotMob مؤخرًا أكبر زيادة في يوم واحد على Wear OS بين جمهوره الذي ثبّت التطبيق خلال 5 سنوات، حيث بلغ معدّل الزيادة من ضِعف إلى ثلاثة أضعاف المتوسط اليومي. ما السر؟ إنّه مسار بسيط لتثبيت التطبيق على أجهزة متعددة يساعد المستخدمين في اكتشاف تطبيق Wear OS مباشرةً من هواتفهم.
Garan Jenkin • قراءة لمدة 3 دقائق
-
دراسات الحالة
يشجّع تطبيق Gratitude للتأمل على الثبات من خلال تدوين اليوميات الصغيرة يوميًا، والعبارات التشجيعية، ولوحات الرؤية. تم تنزيل التطبيق أكثر من 6 ملايين مرة، وحصل على 150 ألف تقييم من 5 نجوم، وتم تسجيل 100 مليون إدخال في اليوميات.
Amrit Sanjeev, Ash Nohe • قراءة لمدة 3 دقائق
البقاء على اطّلاع على آخر التحديثات
يمكنك تلقّي أحدث الإحصاءات عن تطوير تطبيقات Android أسبوعيًا في بريدك الوارد.