نشرها بن فايس – كبير مهندسي علاقات المطورين

مرحبًا بك في اليوم الأول من أسبوع تسليط الضوء على أداء Android!
نحن نبدأ الأمور بالتغيير الأكثر تأثيرًا والأقل جهدًا الذي يمكنك إجراؤه لتحسين أداء تطبيقك: تمكين مُحسِّن R8 في الوضع الكامل.
من المحتمل أنك تعرف بالفعل R8 كأداة لتقليص حجم تطبيقك. إنه يقوم بعمل رائع في إزالة التعليمات البرمجية والموارد غير المستخدمة، مما يقلل من حجم تطبيقك. لكن قوتها الحقيقية، تلك التي هي في الواقع GR8 في، هو بمثابة محسن.
عند تمكين الوضع الكامل والسماح بالتحسينات، يقوم R8 بإجراء تحسينات عميقة وكاملة للبرنامج، وإعادة كتابة التعليمات البرمجية الخاصة بك لتكون أكثر كفاءة بشكل أساسي. هذا ليس مجرد تعديل بسيط.
بعد قراءة هذه المقالة، اطلع على مقدمة أسبوع تسليط الضوء على الأداء لمُحسِّن R8 على YouTube.
دعونا نسلط الضوء على أكبر الخطوات التي يتخذها مُحسِّن R8 لتحسين أداء التطبيق.
تهتز الشجرة هي الخطوة الأكثر أهمية لتقليل حجم التطبيق. خلال هذه المرحلة، يقوم مُحسِّن R8 بإزالة التعليمات البرمجية غير المستخدمة من المكتبات التي يعتمد عليها تطبيقك بالإضافة إلى التعليمات البرمجية الميتة من قاعدة التعليمات البرمجية الخاصة بك.
طريقة التبطين يستبدل استدعاء الأسلوب بالكود الفعلي، مما يؤدي إلى تحسين أداء وقت التشغيل.
دمج الصف، ويتم تطبيق استراتيجيات أخرى لجعل التعليمات البرمجية أكثر إحكاما. كل ما تبذلونه من التجريدات الجميلة، مثل الواجهات والتسلسلات الهرمية للفئات لا يهم في هذه المرحلة ومن المرجح أن تتم إزالتها.
تصغير الكود يتم استخدامه لتغيير أسماء الفئات والحقول والأساليب إلى أسماء أقصر ولا معنى لها. لذلك بدلا من MyDataModel قد ينتهي بك الأمر بفصل دراسي يسمى
أ. وهذا هو ما يسبب أكبر قدر من الارتباك عند قراءة تتبعات المكدس من تطبيق R8 المُحسّن. (لاحظ أن لدينا تحسين هذا في AGP 9.0!)
تقلص الموارد يقلل أيضًا من حجم التطبيق عن طريق إزالة الموارد غير المستخدمة مثل ملفات XML والمواد القابلة للرسم.
من خلال تطبيق هذه الخطوات، يتحسن محسن R8 أوقات بدء تشغيل التطبيق، تمكن عرض أكثر سلاسة لواجهة المستخدم، مع عدد أقل من الإطارات البطيئة والمجمدة وتحسين الاستخدام الإجمالي للموارد على الجهاز.
وكأحد الأمثلة على تحسينات الأداء التي يمكن أن يحققها R8، دعنا نلقي نظرة على مثال من Reddit. بعد تمكين R8 في الوضع الكامل، شهد تطبيق Reddit لنظام Android تحسينات كبيرة في الأداء في مجالات مختلفة.
التسمية التوضيحية: كيف قام R8 بتحسين أداء تطبيق Reddit
ولاحظ الفريق أ بدء تشغيل بارد أسرع بنسبة 40%، أ انخفاض بنسبة 30% في أخطاء “عدم استجابة التطبيق” (ANR).، أ تحسين بنسبة 25% في عرض الإطار، و أ تخفيض بنسبة 14% في حجم التطبيق
.
تعتبر هذه التحسينات ضرورية لرضا المستخدم. بدء التشغيل الأسرع يعني انتظارًا أقل ووصولاً أسرع إلى المحتوى. يؤدي تقليل حالات ANR إلى تطبيق أكثر استقرارًا وموثوقية، مما يقلل من إحباط المستخدم. يعمل عرض الإطار الأكثر سلاسة على إزالة واجهة المستخدم غير المرغوب فيها، مما يجعل التمرير والرسوم المتحركة يبدو سلسًا وسريع الاستجابة. وكان هذا التأثير الفني الإيجابي واضحًا أيضًا في معنويات المستخدمين.
يمكنك قراءة المزيد عن تحسيناتهم على مدونتنا.
خلال عملنا مع الشركاء، رأينا أن هذه التحسينات التقنية لها تأثير مباشر على رضا المستخدمين ويمكن أن تنعكس في الاحتفاظ بالمستخدمين ومشاركتهم ومدة الجلسة. وقد تأثر أيضًا مدى ثبات المستخدم، والذي يمكن قياسه بالمستخدمين النشطين يوميًا أو أسبوعيًا أو شهريًا، بشكل إيجابي من خلال تحسينات الأداء الفني. وقد شهدنا ارتفاعًا في تقييمات التطبيقات على متجر Play فيما يتعلق باعتماد R8. يمكن أن تساعد مشاركة ذلك مع مالكي منتجاتك ومديري التكنولوجيا التنفيذيين وصناع القرار في تسريع أداء تطبيقك.
لذلك دعونا نسميها كما هي: تحسين الأداء المتعمد هو فضيلة.
لقد سمعنا أن إرشادات المطورين الخاصة بنا لـ R8 بحاجة إلى التحسين. لذلك ذهبنا إلى العمل. ال توجيه المطور أصبح مُحسِّن R8 الآن أكثر قابلية للتنفيذ ويوفر إرشادات شاملة لتمكين R8 وتصحيح أخطائه.
ترشدك الوثائق إلى الإستراتيجية عالية المستوى للاعتماد، مع التركيز على أهمية اختيار المكتبات الملائمة للتحسين، والأهم من ذلك، اعتماد ميزات R8 بشكل تدريجي لضمان الاستقرار. يسمح لك هذا النهج المرحلي بإلغاء قفل فوائد R8 بأمان مع تزويدك بالإرشادات حول المشكلات التي يصعب تصحيحها.
لقد قمنا بتوسيع نطاقنا بشكل كبير إرشادات حول الاحتفاظ بالقواعد، وهي الآلية الأساسية للتحكم في مُحسِّن R8. نقدم الآن قسمًا حول ماهية قواعد Keep وكيفية تطبيقها وإرشادك إلى أفضل الممارسات لكتابتها والحفاظ عليها. نقدم أيضًا حالات وأمثلة استخدام عملية وقابلة للتنفيذ، مما يساعدك على فهم كيفية منع R8 بشكل صحيح من إزالة التعليمات البرمجية المطلوبة في وقت التشغيل، مثل التعليمات البرمجية التي يتم الوصول إليها عبر الانعكاس أو استخدام واجهة JNI الأصلية.
تغطي الوثائق الآن أيضًا خطوات المتابعة الأساسية والسيناريوهات المتقدمة. لقد أضفنا قسمًا عن الاختبار واستكشاف الأخطاء وإصلاحها، حتى تتمكن من التحقق من مكاسب الأداء وتصحيح أي مشكلات محتملة قد تنشأ. ال تكوينات متقدمة
يشرح القسم كيفية استهداف متغيرات بناء معينة، وتخصيص الموارد التي يتم الاحتفاظ بها أو إزالتها، ويقدم تعليمات تحسين خاصة لمؤلفي المكتبات، مما يضمن أنه يمكنك توفير حزمة محسنة وصديقة لـ R8 للمطورين الآخرين لاستخدامها.
يستخدم مُحسِّن R8 افتراضيًا “الوضع الكامل” منذ الإصدار 8.0 من Android Gradle Plugin. إذا تم تطوير مشروعك على مدار سنوات عديدة، فقد لا يزال يتضمن علامة قديمة لتعطيله. تحقق الخاص بك gradle.properties ملف لهذا الخط وإزالته.
android.enableR8.fullMode=false // يمسح هذا خط ل يُمكَِن آر 8 ممتلىء محتمل
تحقق الآن مما إذا كنت قد قمت بتمكين R8 في تطبيقك build.gradle.kts ملف لمتغير الإصدار. يتم تمكينه عن طريق الإعداد isMinifyEnabled و isShrinkResources إلى صحيح. يمكنك أيضًا تمرير ملفات التكوين الافتراضية والمخصصة في هذه الخطوة.
يطلق {
isMinifyEnabled = حقيقي
isShrinkResources = حقيقي
ملفات الحماية(
getDefaultProguardFile(“proguard-android-optimize.txt”)،
“keep-rules.pro”
)
}
المهندسين في ديزني + الاستثمار في أداء التطبيق وتحسين تجربة مستخدم التطبيق. في بعض الأحيان، حتى التغييرات الصغيرة التي تبدو بسيطة يمكن أن يكون لها تأثير كبير. أثناء فحص تكوين R8 الخاص بهم، وجد الفريق أن -دونتوبتيميزي تم استخدام العلم. تم جلبه من خلال ملف التكوين الافتراضي، والذي لا يزال يستخدم في العديد من التطبيقات اليوم.
بعد الاستبدال proguard-android.txt
مع proguard-android-optimize.txt، شهد فريق Disney+ تحسينات كبيرة في أداء تطبيقهم.
وبعد طرح إصدار جديد من التطبيق يحتوي على هذا التغيير للمستخدمين، شهدت Disney+ بدء تشغيل أسرع للتطبيق بنسبة 30% وتقليل أخطاء ANR التي يدركها المستخدم بنسبة 25%.
اليوم لا تزال العديد من التطبيقات تستخدم proguard-android.txt الملف الذي يحتوي على -دونتوبتيميزي علَم. وهنا يأتي دور تحسينات الأدوات لدينا.
بدءا من إسقاط ميزات Android Studio Narwhal 3، سوف ترى تحذيرًا من الوبر عند الاستخدام proguard-android.txt
ومن AGP 9.0 فصاعدًا نحن كذلك إسقاط الدعم بشكل كامل للملف. هذا يعني أنه سيتعين عليك الهجرة إلى proguard-android-optimize.txt.
لقد استثمرنا أيضًا في ميزات Android Studio الجديدة
لجعل تصحيح أخطاء التعليمات البرمجية المُحسّنة لـ R8 أسهل من أي وقت مضى. بدءًا من AGP 9.0، يمكنك الآن إزالة تشويش آثار المكدس تلقائيًا داخل ملف logcat الخاص بـ Android Studio للإصدارات التي تمت معالجتها بواسطة R8، مما يساعدك على تحديد السطر الدقيق من التعليمات البرمجية التي تسبب مشكلة، حتى في تطبيق محسّن بالكامل. سيتم تناول هذا الأمر بمزيد من التعمق في تدوينة الغد في أسبوع تسليط الضوء على أداء Android.
اطلع على مقدمة أسبوع تسليط الضوء على الأداء لمُحسِّن R8 على YouTube.
📣 شارك في تحدي الأداء!
حان الوقت لرؤية الفوائد بنفسك.
نحن نتحداك لتمكين وضع R8 الكامل لتطبيقك اليوم.
-
اتبع أدلة المطورين لدينا للبدء: تمكين تحسين التطبيق.
-
تحقق مما إذا كنت لا تزال تستخدم proguard-android.txt واستبدالها ب proguard-android-optimize.txt.
-
ثم، قياس التأثير. لا تفعل ذلك فقط يشعر الفرق, يؤكد هو – هي. قم بقياس مكاسب أدائك من خلال تعديل التعليمات البرمجية من موقعنا
نموذج تطبيق Macrobenchmark على GitHub لقياس أوقات بدء التشغيل قبل وبعد.
نحن واثقون من أنك ستلاحظ تحسنًا ملموسًا في أداء تطبيقك. استخدم #optimizationEnabled لأية أسئلة حول تمكين R8 أو استكشاف أخطاءه وإصلاحها. نحن هنا للمساعدة.
اطرح أسئلتك لجلسة Ask Android يوم الجمعة
استخدم العلامة الاجتماعية #AskAndroid لطرح أي أسئلة تتعلق بالأداء. نراقب أسئلتك على مدار الأسبوع وسنجيب على العديد منها في جلسة Ask Android حول الأداء يوم الجمعة 21 نوفمبر. ترقبوا الغد، حيث سنتعمق أكثر في تصحيح الأخطاء واستكشاف الأخطاء وإصلاحها. لكن في الوقت الحالي، ابدأ مع R8 واحصل على تطبيقك على المسار السريع.

