دليل مستويات رحلة الأداء
مرحبًا بك في اليوم الرابع من "أسبوع تسليط الضوء على الأداء". بعد أن تعرّفت على بعض الأدوات الرائعة وأفضل الممارسات التي قدّمناها مؤخرًا، مثل أداة R8 Optimizer وProfile Guided Optimization مع Baseline Profiles و Startup Profiles، قد تتساءل عن الخطوة الأولى في رحلة تحسين الأداء.
لقد أعددنا دليلًا تفصيليًا حول مستويات الأداء لمساعدة فريق تطوير التطبيقات على الأجهزة الجوّالة في أي مرحلة من مراحل التطوير، سواء كنت مطوّرًا واحدًا لتطبيق بسيط وتريد البدء في تحسين الأداء، أو كان لديك فريق كامل مخصّص لتحسين الأداء على Android.
يتضمّن دليل مستويات الأداء 5 مستويات. سنبدأ بالمستوى 1 الذي يقدّم أدوات أداء تتطلّب الحد الأدنى من جهد التكيّف، وسننتقل إلى المستوى 5، وهو المستوى المثالي للتطبيقات التي لديها الموارد اللازمة للحفاظ على إطار عمل مخصّص للأداء.
يمكنك الانتقال إلى المستوى الذي يهمّك أكثر:
- المستوى 1: استخدام ميزة مراقبة الحقول التي توفّرها Play Console
- المستوى 2: اتّبِع بنود العمل في "تقييم أداء التطبيق"
- المستوى 3: الاستفادة من أُطر اختبار الأداء المحلي
- المستوى 4: استخدام أدوات تحليل عمليات التتبُّع، مثل Perfetto
- المستوى 5: إنشاء إطار عمل خاص بك لتتبُّع الأداء
المستوى 1: استخدام ميزة مراقبة الحقول التي توفّرها Play Console
ننصحك أولاً بالاستفادة من "مؤشرات Android الحيوية" في Play Console لعرض بيانات مراقبة الأداء الميداني التي يتم جمعها تلقائيًا، ما يمنحك إحصاءات عن تطبيقك بأقل جهد ممكن.
مؤشرات Android الحيوية هي إحدى مبادرات Google التي تهدف إلى جمع بيانات الحقول هذه وعرضها لك تلقائيًا.
في ما يلي توضيح لطريقة عرض هذه البيانات:
- جمع البيانات: عندما يوافق المستخدم على المشاركة، يسجّل جهاز Android تلقائيًا أحداث الأداء والاستقرار الرئيسية من جميع التطبيقات، بما في ذلك تطبيقك.
- البيانات المجمّعة: يجمع Google Play هذه البيانات ويخفي هويتها من مستخدمي تطبيقك.
- عرض الإحصاءات: يتم عرض البيانات في لوحة بيانات "مؤشرات Android الحيوية" ضمن Google Play Console.
تتتبّع لوحة بيانات "مؤشرات Android الحيوية" العديد من المقاييس، ولكن تم تصنيف بعضها على أنّها مؤشرات حيوية أساسية. وهي الأهم لأنّها يمكن أن تؤثر في ظهور تطبيقك وترتيبه على "متجر Google Play".
مؤشرات الأداء الأساسية
مقاييس الجودة الفنية الأساسية في Google Play لتحقيق أعلى مستوى ظهور ممكن على Google Play، يجب أن يكون تطبيقك أقل من معايير تحديد الأداء السيئ لهذه المقاييس. | |
| نسبة الأعطال التي لاحظها المستخدمون | يشير هذا المقياس إلى النسبة المئوية للمستخدمين النشطين يوميًا الذين واجهوا عُطلاً واحدًا على الأقل من الأعطال التي من المحتمل أن تكون ملحوظة. |
| نسبة أخطاء ANR التي لاحظها المستخدمون | تعرِض هذه البطاقة النسبة المئوية للمستخدمين النشطين يوميًا الذين واجهوا خطأ ANR واحدًا على الأقل من الأخطاء التي من المحتمل أن تكون ملحوظة. |
| استخدام البطارية بشكل زائد | النسبة المئوية لجلسات خلفية شاشة الساعة التي يتجاوز فيها استخدام البطارية 4.44% في الساعة |
| جديد: عمليات قفل التنشيط الجزئي الزائدة عن الحد | النسبة المئوية لجلسات المستخدمين التي يتجاوز فيها الاستخدام التراكمي لقفل التنشيط غير المعفى ساعتين |
تشمل مؤشرات الأداء الأساسية نسبة الأعطال التي لاحظها المستخدمون، ونسبة أخطاء ANR، والاستخدام المفرط للبطارية، والمقياس الذي تم تقديمه حديثًا بشأن عمليات قفل التنشيط الجزئي الزائدة عن الحدّ.
نسبة أخطاء ANR التي لاحظها المستخدمون
يمكنك استخدام لوحة بيانات أخطاء ANR في "مؤشرات Android الحيوية" للاطّلاع على تتبُّعات تسلسل استدعاء الدوال البرمجية للمشاكل التي تحدث في المجال والحصول على إحصاءات واقتراحات حول كيفية حلّ المشكلة.
يمكنك التوغّل في تفاصيل خطأ ANR معيّن حدث، للاطّلاع على تتبُّع تسلسل استدعاء الدوال البرمجية بالإضافة إلى إحصاءات حول الأسباب المحتملة للمشكلة.
يمكنك أيضًا الاطّلاع على إرشادات أخطاء ANR لمساعدتك في تحديد المشاكل الشائعة التي قد تحدث فيها أخطاء ANR وحلّها.
نسبة الأعطال التي لاحظها المستخدمون
استخدِم لوحة بيانات الأعطال في "مؤشرات Android الحيوية" لتحديد المزيد من الأخطاء في الأعطال وعرض عيّنة من عمليات تتبُّع تسلسل استدعاء الدوال البرمجية التي تحدث داخل تطبيقك.
تتضمّن مستنداتنا أيضًا إرشادات حول تحديد المشاكل وحلّها في ما يتعلّق بالأعطال المحدّدة. على سبيل المثال، يناقش دليل تحديد المشاكل المتعلقة بالخدمات التي تعمل في المقدّمة وحلّها طرقًا لتحديد المشاكل الشائعة التي تحدث فيها الأعطال وإصلاحها.
استخدام البطارية بشكل زائد
لتقليل جلسات خلفية شاشة الساعة التي تستخدم البطارية بشكل مفرط على Wear OS، اطّلِع على دليل Wear حول كيفية تحسين البطارية والحفاظ عليها.
[جديد] عمليات قفل التنشيط الجزئي بشكل مفرط
أعلنّا مؤخرًا أنّه قد يتم اتخاذ إجراءات إضافية اعتبارًا من 1 مارس 2026 بشأن التطبيقات التي تتجاوز الحدّ المسموح به لعمليات قفل التنشيط الجزئي الزائدة عن الحدّ.
بالنسبة إلى الأجهزة الجوّالة، ينطبق مقياس "مؤشرات Android الحيوية" على عمليات قفل التنشيط غير المعفاة التي يتم الحصول عليها عندما تكون الشاشة مطفأة ويكون التطبيق مُشغَّلاً في الخلفية أو يشغّل خدمة تعمل في المقدّمة. تعتبر "مؤشرات Android الحيوية" استخدام أقفال التنشيط الجزئي مفرطًا إذا تم الاحتفاظ بأقفال التنشيط لمدة ساعتين على الأقل خلال فترة 24 ساعة وتأثرت أكثر من% 5 من جلسات تطبيقك، وذلك على مدار 28 يومًا.
لتحديد المشاكل المتعلقة بقفل التنشيط المفرط وإصلاحها، يُرجى الاطّلاع على منشور المدونة الفنية.
يمكنك الرجوع إلى مستندات "مؤشرات Android الحيوية" ومواصلة رحلتك للاستفادة بشكل أفضل من هذه المؤشرات.
المستوى 2: اتّبِع بنود العمل في "تقييم أداء التطبيق"
بعد ذلك، انتقِل إلى استخدام نقاط أداء التطبيق للعثور على عناصر الإجراءات التي يمكن الاستفادة منها بشكل كبير للارتقاء بأداء تطبيقك.
مقياس أداء تطبيقات Android هو إطار عمل موحّد لقياس الأداء الفني لتطبيقك. تمنحك هذه الميزة نتيجة تتراوح بين 0 و100، وتشير النتيجة الأقل إلى توفّر فرص أكبر للتحسين.
لتحقيق نتائج سريعة، عليك أولاً البدء بنتيجة الأداء الثابتة. وغالبًا ما تكون هذه التغييرات عبارة عن تغييرات في الإعداد أو تحديثات في الأدوات تؤدي إلى تحسينات كبيرة في الأداء.
الخطوة 1: إجراء التقييم الثابت
يقيّم التقييم الثابت إعدادات مشروعك واستخدام الأدوات. وغالبًا ما تكون هذه الطرق هي الأسرع لتحسين الأداء.
انتقِل إلى قسم "النتيجة الثابتة" في صفحة لوحة النتائج واتّبِع الخطوات التالية:
- تقييم إصدار المكوّن الإضافي لنظام Gradle المتوافق مع Android (AGP)
- استخدِم أداة R8 لتقليص حجم الرموز بشكل تدريجي أو استخدِم أداة R8 في الوضع الكامل لتقليص حجم رموز التطبيق وتحسينها.
- استخدام ملفات Baseline الشخصية التي تعمل على تحسين سرعة تنفيذ الرموز البرمجية منذ التشغيل الأول، ما يؤدي إلى تحسين الأداء عند تثبيت أي تطبيق جديد وعند تحديث التطبيق
- استخدِم ملفات تعريف التطبيقات عند بدء التشغيل لتحسين "تنسيق Dex". يستخدم نظام التصميم "ملفات تعريف بدء التشغيل" لتحسين الفئات والطرق التي تحتوي عليها من خلال تحسين تخطيط الرمز في ملفات DEX الخاصة بحزمة APK.
- الترقية إلى أحدث إصدار من Jetpack Compose
الخطوة 2: إجراء التقييم الديناميكي
بعد تطبيق التحسينات الثابتة السهلة، استخدِم التقييم الديناميكي للتحقّق من التحسينات على جهاز حقيقي. يمكنك أولاً إجراء ذلك يدويًا باستخدام جهاز فعلي وساعة توقّف.
انتقِل إلى قسم "النتيجة الديناميكية" في صفحة لوحة النتائج واتّبِع الخطوات التالية:
- إعداد بيئة الاختبار باستخدام جهاز فعلي ننصحك باستخدام جهاز منخفض المواصفات لتضخيم مشاكل الأداء، ما يسهّل رصدها.
- قياس وقت بدء التشغيل من مشغّل التطبيقات شغِّل تطبيقك على البارد من رمز مشغّل التطبيقات وقِس الوقت المستغرَق إلى أن يصبح تفاعليًا.
- قياس وقت بدء تشغيل التطبيق من إشعار، بهدف تقليل وقت بدء التشغيل من الإشعار إلى أقل من بضع ثوانٍ
- قِس أداء العرض من خلال التنقّل بين شاشاتك الأساسية والصور المتحركة.
بعد إكمال هذه الخطوات، ستتلقّى نتيجة تتراوح بين 1 و100 لكل من النتائج الثابتة والديناميكية، ما يتيح لك فهم أداء تطبيقك وتحديد الجوانب التي يجب التركيز عليها.
المستوى 3: الاستفادة من أُطر اختبار الأداء المحلي
بعد البدء في تقييم الأداء الديناميكي، قد تجد أنّ قياس الأداء يدويًا أمر شاقّ جدًا. ننصحك بأتمتة اختبار الأداء باستخدام أُطر عمل اختبار الأداء، مثل Macrobenchmarks وUiAutomator.
Macrobenchmark 💚 UiAutomator
يمكن اعتبار Macrobenchmark وUiAutomator أداتَين تعملان معًا، حيث إنّ Macrobenchmark هي أداة القياس. وهي تشبه ساعة الإيقاف وعداد عدد اللقطات في الثانية الذي يعمل خارج تطبيقك. وهي مسؤولة عن بدء تشغيل تطبيقك وتسجيل المقاييس (مثل وقت بدء التشغيل أو اللقطات التي تم إسقاطها) وإيقاف التطبيق. وUiAutomator هو المستخدم الآلي. تتيح لك المكتبة كتابة رمز برمجي للتفاعل مع شاشة الجهاز. يمكنه العثور على رمز والنقر على زر والتمرير في قائمة وغير ذلك.
كيفية كتابة اختبار
عند كتابة اختبار، عليك تضمين رمز UiAutomator داخل مجموعة Macrobenchmark.
- تحديد الاختبار: استخدِم
@MacrobenchmarkRule - بدء القياس: انقر على
benchmarkRule.measureRepeated. - التحكّم في واجهة المستخدم: داخل هذا القسم، استخدِم رمز UiAutomator البرمجي لتشغيل تطبيقك والبحث عن عناصر واجهة المستخدم والتفاعل معها.
في ما يلي مثال على مقتطف الرمز الذي يوضّح كيفية اختبار قائمة Compose بحثًا عن إيقاف مؤقت لعرض واجهة المستخدم عند التمرير.
benchmarkRule.measureRepeated(
// ...
metrics = listOf(
FrameTimingMetric(),
),
startupMode = StartupMode.COLD,
iterations = 10,
) {
// 1. Launch the app's main activity
startApp()
// 2. Find the list using its resource ID and scroll down
onElement { viewIdResourceName == "$packageName.my_list" }
.fling(Direction.DOWN)
}4- مراجعة النتائج: يقدّم لك كل تشغيل للاختبار معلومات تم قياسها بدقة لمنحك أفضل البيانات عن أداء تطبيقك.
timeToInitialDisplayMs min 1894.4, median 2847.4, max 3355.6 frameOverrunMs P50 -3.2, P90 6.2, P95 10.4, P99 119.5
حالات الاستخدام الشائعة
توفّر مكتبة Macrobenchmark العديد من المقاييس الأساسية الجاهزة للاستخدام. تتيح لك StartupTimingMetric قياس وقت بدء تشغيل التطبيق بدقة. تتيح لك FrameTimingMetric فهم أداء عرض التطبيق أثناء الاختبار.
للمزيد من المعلومات، يمكنك الاطّلاع على دليل مفصّل وكامل حول استخدام Macrobenchmarks وUiAutomator إلى جانب عينات تعليمات برمجية.
المستوى 4: استخدام أدوات تحليل عمليات التتبُّع، مثل Perfetto
تُستخدَم أدوات تحليل التتبُّع، مثل Perfetto، عندما تحتاج إلى الاطّلاع على ما هو أبعد من الرمز البرمجي لتطبيقك. على عكس أدوات تصحيح الأخطاء أو أدوات تحليل الأداء العادية التي لا ترى سوى عمليتك، تسجّل أداة Perfetto حالة الجهاز بالكامل، بما في ذلك جدولة النواة وتردد وحدة المعالجة المركزية والعمليات الأخرى وخدمات النظام، ما يمنحك سياقًا كاملاً لمشاكل الأداء.
يمكنك الاطّلاع على قائمة تشغيل "تصحيح أخطاء الأداء" على YouTube للحصول على تعليمات فيديو حول تصحيح أخطاء الأداء باستخدام عمليات تتبُّع النظام و"أداة تحليل الأداء في استوديو Android" وPerfetto.
كيفية استخدام Perfetto لتصحيح أخطاء الأداء
تتمثّل سير العمل العام لتحديد المشاكل في الأداء وحلّها باستخدام أدوات تحليل عمليات التتبُّع في تسجيل عملية التتبُّع وتحميلها وتحليلها.
الخطوة 1: تسجيل عملية تتبُّع
يمكنك تسجيل تتبُّع النظام باستخدام عدة طرق:
- تسجيل تتبُّع يدويًا على الجهاز مباشرةً من خيارات المطوّرين
- استخدام أداة تحليل وحدة المعالجة المركزية في "استوديو Android"
- استخدام واجهة مستخدم Perfetto
الخطوة 2: تحميل التتبُّع
بعد الحصول على ملف التتبُّع، عليك تحميله في أداة التحليل.
- افتح Chrome وانتقِل إلى ui.perfetto.dev.
- اسحب ملف
.perfetto-trace(أو.pftrace) وأفلِته مباشرةً في نافذة المتصفّح. - ستعالج واجهة المستخدم الملف وتعرض المخطط الزمني.
الخطوة 3: تحليل التتبُّع
يمكنك استخدام واجهة مستخدم Perfetto أو أداة استوديو Android Profiler للتحقّق من مشاكل الأداء. يمكنك الاطّلاع على هذه الحلقة من سلسلة MAD Skills حول الأداء، حيث تناقش مهندسة الأداء "كارمن جاكسون" أداة Perfetto traceviewer.
سيناريوهات فحص عمليات تتبُّع النظام باستخدام Perfetto
Perfetto هي أداة متخصّصة ويمكنها تقديم معلومات حول كل ما حدث على جهاز Android أثناء تسجيل التتبُّع. يكون ذلك مفيدًا بشكل خاص عندما لا يمكنك تحديد السبب الأساسي لبطء الأداء باستخدام السجلّات العادية أو أدوات تحليل الأداء الأساسية.
تصحيح الأخطاء في Jank (الإطارات التي تم إسقاطها)
إذا كان تطبيقك يتلعثم أثناء التمرير، يمكن أن يوضّح لك Perfetto السبب الدقيق لعدم اكتمال عرض إطار معيّن في الوقت المحدّد.
إذا كان السبب هو التطبيق، قد تلاحظ أنّ سلسلة المحادثات الرئيسية تعمل لمدة طويلة لإجراء تحليل مكثّف، ما يشير إلى سيناريوهات يجب فيها نقل العمل إلى معالجة غير متزامنة.
إذا كان السبب هو النظام، قد ترى سلسلة التعليمات الرئيسية جاهزة للتنفيذ، ولكن منح برنامج جدولة نواة وحدة المعالجة المركزية الأولوية لخدمة تابعة لنظام التشغيل مختلفة، ما يجعل تطبيقك ينتظر (تضارب وحدة المعالجة المركزية). يشير ذلك إلى السيناريوهات التي قد تحتاج فيها إلى تحسين استخدام واجهات برمجة التطبيقات على المنصة.
تحليل مشكلة بطء التطبيق عند بدء تشغيله
تتسم عملية بدء التشغيل بالتعقيد، إذ تتضمّن تهيئة النظام وتفرّع العمليات وتحميل الموارد. تعرض أداة Perfetto هذا المخطط الزمني بدقة.
يمكنك معرفة ما إذا كنت تنتظر مكالمات Binder (الاتصال بين العمليات). إذا onCreate انتظر PackageManager
يمكنك أيضًا معرفة ما إذا كان تطبيقك ينفّذ مهامًا أكثر من اللازم أثناء بدء تشغيله. على سبيل المثال، إذا كنت بصدد إنشاء المزيد من طرق العرض وتصميمها أكثر مما يحتاج التطبيق إلى عرضه، يمكنك الاطّلاع على هذه العمليات في التتبُّع.
التحقيق في استنزاف البطارية واستخدام وحدة المعالجة المركزية
بما أنّ Perfetto يرى النظام بأكمله، فهو مثالي للعثور على استنزافات الطاقة غير المرئية.
يمكنك تحديد العمليات التي تحتفظ بأقفال التنشيط، ما يمنع الجهاز من الدخول في وضع السكون ضمن مسارات "حالة الجهاز". يمكنك الاطّلاع على مزيد من المعلومات في مشاركة المدونة حول عمليات قفل التنشيط. يمكنك أيضًا استخدام Perfetto لمعرفة ما إذا كانت مهام الخلفية تعمل بشكل متكرر جدًا أو توقظ وحدة المعالجة المركزية بدون داعٍ.
المستوى 5: إنشاء إطار عمل خاص بك لتتبُّع الأداء
المستوى الأخير مخصّص للتطبيقات التي لديها فِرق لديها الموارد اللازمة للحفاظ على إطار عمل لتتبُّع الأداء.
يتضمّن إنشاء إطار عمل مخصّص لتتبُّع الأداء على Android الاستفادة من العديد من واجهات برمجة التطبيقات الخاصة بالنظام لتسجيل البيانات طوال دورة حياة التطبيق، بدءًا من بدء التشغيل وحتى الخروج، وأثناء سيناريوهات معيّنة تتضمّن أحمالاً عالية.
باستخدام ApplicationStartInfo وProfilingManager وApplicationExitInfo، يمكنك إنشاء نظام قياس عن بُعد قوي يقدّم تقارير عن كيفية بدء تشغيل تطبيقك، ومعلومات تفصيلية عن الإجراءات التي اتّخذها أثناء التشغيل، وسبب إيقافه.
ApplicationStartInfo: تتبُّع كيفية بدء تشغيل التطبيق
تتوفّر السمة ApplicationStartInfo في الإصدار Android 15 (المستوى 35 من واجهة برمجة التطبيقات)، وتقدّم مقاييس تفصيلية حول بدء تشغيل التطبيق في بيئة الاختبار. وتتضمّن البيانات ما إذا كانت عملية التشغيل على البارد أو البطيء أو السريع، ومدة مراحل التشغيل المختلفة.
يساعدك ذلك في تطوير مقياس أساسي لبدء التشغيل باستخدام بيانات الإنتاج لتحسينه بشكل أكبر، وهو ما قد يصعب إعادة إنتاجه محليًا. يمكنك استخدام هذه المقاييس لإجراء اختبارات A/B لتحسين خطوات بدء التشغيل.
والهدف هو تسجيل مقاييس الإطلاق بدقة بدون إعداد كل مرحلة من مراحل التهيئة يدويًا.
يمكنك طلب هذه البيانات بشكل غير مباشر بعد بعض الوقت من تشغيل التطبيق.
ProfilingManager: تسجيل سبب البطء
تتيح واجهة برمجة التطبيقات ProfilingManager (المستوى 35) لتطبيقك بدء عمليات تتبُّع النظام آليًا على أجهزة المستخدمين. ويُعدّ ذلك مفيدًا في رصد مشاكل الأداء المؤقتة التي لا يمكنك إعادة إنتاجها محليًا.
الهدف هو تسجيل عملية تتبُّع تلقائيًا عند رصد رحلة مستخدم أساسية معيّنة تعمل ببطء أو تواجه مشكلة في الأداء.
يمكنك تسجيل متتبِّع يتم تشغيله عند استيفاء شروط معيّنة أو تشغيله يدويًا عند رصد مشكلة في الأداء، مثل إيقاف مؤقت لعرض واجهة المستخدم أو استخدام الذاكرة بشكل مفرط أو استنزاف البطارية.
راجِع مستنداتنا حول كيفية تسجيل ملف تعريف واسترداد بيانات إنشاء الملفات الشخصية وتحليلها واستخدام أوامر تصحيح الأخطاء.
ApplicationExitInfo: تتبُّع سبب إيقاف التطبيق
تخبرك السمة ApplicationExitInfo (المستوى 30 لواجهة برمجة التطبيقات) عن سبب توقّف عمل العملية السابقة. وهذا أمر بالغ الأهمية للعثور على الأعطال الأصلية أو أخطاء ANR أو عمليات إيقاف النظام بسبب الاستخدام المفرط للذاكرة (OOM). ستتمكّن أيضًا من الحصول على تتبُّع تفصيلي لخطأ Tombstone باستخدام واجهة برمجة التطبيقات getTraceInputStream.
تهدف واجهة برمجة التطبيقات إلى فهم مشاكل الثبات التي لا تؤدي إلى تشغيل أدوات إعداد تقارير الأعطال العادية في Java (مثل عمليات إيقاف التطبيقات بسبب نقص الذاكرة).
يجب تشغيل واجهة برمجة التطبيقات هذه عند تشغيل التطبيق في المرة التالية.
الخطوات التالية
تحسين أداء Android هو رحلة تتضمّن خطوات متعدّدة. نحن متحمّسون لرؤية مستوى أدائكم يتحسّن باستخدام هذه الأدوات.
يمكنك متابعة حلقة جديدة من Ask Android غدًا
لقد قلّصت حجم تطبيقك باستخدام R8 وحسّنت وقت التشغيل باستخدام ميزة "التحسين المستند إلى الملفات الشخصية". وقياس أداء تطبيقك
ندعوك للانضمام إلينا غدًا في جلسة "اسأل Android" المباشرة. اطرح أسئلتك الآن باستخدام #AskAndroid واحصل على إجابات من الخبراء.
متابعة القراءة
-
طرق التنفيذ
إدراكًا منّا أنّ استنزاف البطارية بشكل مفرط هو أوّل ما يخطر في بال مستخدمي Android، اتّخذت Google خطوات مهمة لمساعدة المطوّرين في إنشاء تطبيقات أكثر كفاءة في استهلاك الطاقة.
Alice Yuan • مدة القراءة: 8 دقائق
-
طرق التنفيذ
أردنا أن نقدّم لك أمثلة على الميزات المستندة إلى الذكاء الاصطناعي والتي تستخدم نماذج على الجهاز فقط ونماذج على السحابة الإلكترونية، وأن نلهمك لإنشاء تجارب رائعة للمستخدمين.
Thomas Ezan, Ivy Knight • مدة القراءة: دقيقتان
-
طرق التنفيذ
سنتناول في هذا الفيديو ميزة "التحسين الموجّه حسب الملف الشخصي"، والتحسينات على أداء Jetpack Compose، واعتبارات العمل وراء الكواليس.
Ben Weiss, Breana Tate, Jossi Wolf • مدة القراءة: 8 دقائق
البقاء على اطّلاع على آخر التحديثات
يمكنك تلقّي أحدث الإحصاءات حول تطوير تطبيقات Android في بريدك الوارد أسبوعيًا.