تطوير التعليمات البرمجية التكرار

بصفتك مطوّر تطبيقات للأجهزة الجوّالة، غالبًا ما تطوّر واجهة مستخدم تطبيقك خطوة بخطوة بدلاً من تطوير كل شيء دفعة واحدة. يتبنّى "استوديو Android" هذا النهج مع Jetpack Compose من خلال توفير أدوات لا تتطلّب عملية إنشاء كاملة لفحص القيم وتعديلها والتحقّق من النتيجة النهائية.

تكرار واجهة المستخدم بمساعدة الذكاء الاصطناعي

يمكنك استخدام وكيل الذكاء الاصطناعي في "استوديو Android" لتحسين واجهة مستخدم Compose وتحويلها بشكل متكرّر من معاينة التصميم مباشرةً. انقر بزر الماوس الأيمن على معاينة Compose واختَر أحد إجراءات الذكاء الاصطناعي التالية:

  • مطابقة واجهة المستخدم مع الصورة المستهدَفة: انقر على هذا الخيار لتحميل نموذج تصميم مرجعي. بعد ذلك، يقترح الوكيل تغييرات في الرمز البرمجي ليتطابق التنفيذ مع التصميم قدر الإمكان.
الشكل 1: تعديل واجهة المستخدم لتتطابق مع صورة مستهدَفة
  • تحويل واجهة المستخدم: استخدِم طلبات بلغة طبيعية (مثل "تغيير لون الزر إلى الأزرق") لوصف تعديلات معيّنة تريد إجراءها على واجهة المستخدم.
الشكل 2. اطلب من الوكيل تحويل واجهة المستخدم.

التعديل في الوقت الفعلي

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

تتضمّن ميزة "التعديل المباشر" ثلاثة أوضاع:

  • يدوي: يتم تطبيق تغييرات الرمز عند إرسالها يدويًا باستخدام Control+' (Command+' على نظام التشغيل macOS)
  • يدويًا عند الحفظ: يتم تطبيق تغييرات الرمز عند حفظها يدويًا باستخدام Control+S (Command+S على نظام التشغيل macOS).
  • تلقائي: يتم تطبيق التغييرات في جهازك أو المحاكي عند تعديل دالة مركّبة.

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

هذه الميزة ليست بديلاً لإنشاء تطبيقك وتشغيله أو لاستخدام ميزة تطبيق التغييرات. بدلاً من ذلك، تم تصميمه لتحسين سير العمل أثناء إنشاء واجهة مستخدم Compose ونشرها وتكرارها.

في ما يلي سير العمل المتّبع كأفضل ممارسة:

  1. اضبط إعدادات تطبيقك ليصبح جاهزًا للتشغيل.
  2. ميزة Live Edit قدر الإمكان إلى أن تحتاج إلى إجراء تغيير لا تتيحه ميزة Live Edit، مثل إضافة طرق جديدة أثناء تشغيل التطبيق.
  3. بعد إجراء تغيير غير متوافق، انقر على تشغيل رمز
التشغيل لإعادة تشغيل تطبيقك واستئناف ميزة "التعديل المباشر".

بدء استخدام ميزة "التعديل المباشر"

للبدء، اتّبِع الخطوات التالية لإنشاء نشاط Compose فارغ وتفعيل ميزة "التعديل المباشر" لمشروعك وإجراء التغييرات باستخدام ميزة "التعديل المباشر".

إعداد مشروعك الجديد

  1. قبل البدء، تأكَّد من تثبيت الإصدار Giraffe من "استوديو Android" أو إصدار أحدث، وأنّ مستوى واجهة برمجة التطبيقات لجهازك الفعلي أو المحاكي هو 30 على الأقل.

  2. افتح "استوديو Android" وانقر على مشروع جديد في مربّع الحوار مرحبًا بك في استوديو Android. إذا كان لديك مشروع مفتوح حاليًا، يمكنك إنشاء مشروع جديد بالانتقال إلى ملف > جديد > مشروع جديد.

  3. اختَر نموذج Empty Compose Activity (نشاط إنشاء فارغ) لـ Phone and Tablet (الهاتف والجهاز اللوحي)، ثم انقر على Next (التالي).

    اختيار النموذج في "استوديو Android"
    الشكل 3: النماذج التي يمكنك الاختيار من بينها بالنسبة إلى ميزة Live Edit، اختَر نشاط إنشاء فارغ.
  4. أكمِل مربّع الحوار مشروع جديد بالمعلومات المطلوبة: الاسم، واسم الحزمة، وموقع الحفظ، والحد الأدنى لحزمة SDK، ولغة إعدادات التصميم.

    مثال على إعدادات المشروع من الخطوة 4 التي تم إدخالها في "استوديو Android"
    الشكل 4: مثال على إعدادات المشروع
  5. انقر على إنهاء.

تفعيل ميزة "التعديل المباشر"

  1. انتقِل إلى الإعدادات لتفعيل ميزة "التعديل المباشر".

    • على نظام التشغيل Windows أو Linux، انتقِل إلى ملف > الإعدادات > المحرر > التعديل المباشر.
    • على نظام التشغيل macOS، انتقِل إلى استوديو Android > الإعدادات > المحرِّر > التعديل المباشر.
  2. انقر على خيار Live Edit والوضع الذي تريد تشغيله من الإعدادات.

    في الوضع اليدوي، يتم إرسال تغييرات الرمز البرمجي في كل مرة تضغط فيها على Control+' (Command+' على نظام التشغيل macOS). في الوضع اليدوي عند الحفظ، يتم تطبيق تغييرات الرمز البرمجي في كل مرة تحفظ فيها يدويًا، باستخدام Control+S (Command+S على نظام التشغيل macOS). في الوضع التلقائي، يتم تطبيق تغييرات الرمز في جهازك أو المحاكي أثناء إجراء التغييرات.

    مربّع اختيار واجهة المستخدم لميزة "التعديل المباشر" في إعدادات "استوديو Android"
    الشكل 5: إعدادات ميزة "التعديل المباشر"
  3. في المحرِّر، افتح ملف MainActivity، وهو نقطة الدخول لتطبيقك.

  4. انقر على تشغيل زر واجهة المستخدم لنشر تطبيقك.

  5. بعد تفعيل ميزة "التعديل المباشر"، تظهر علامة الصح الخضراء محدَّث في أعلى يسار نافذة أداة الأجهزة قيد التشغيل:

    واجهة مستخدم علامة الصح الخضراء في ميزة "التعديل المباشر"

إجراء التغييرات ومراجعتها

أثناء إجراء التغييرات المدعومة في المحرِّر، يتم تحديث جهاز الاختبار الافتراضي أو المادي تلقائيًا.

على سبيل المثال، عدِّل طريقة Greeting الحالية في MainActivity إلى ما يلي:

@Composable
fun Greeting(name: String) {
    Text(
        text = "Hello $name!",
        Modifier
            .padding(80.dp) // Outer padding; outside background
            .background(color = Color.Cyan) // Solid element background color
            .padding(16.dp) // Inner padding; inside background, around text)
    )
}

تظهر التغييرات على الفور على جهاز الاختبار، كما هو موضّح في الشكل 6.

التغييرات التي تم إجراؤها على طريقة الترحيب المطبَّقة على جهاز
الشكل 6. جهاز اختباري يعرض تغييرات ميزة "التعديل في الوقت الفعلي" على طريقة Greeting

تحديد مشاكل ميزة "التعديل المباشر" وحلّها

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

رمز "التعديل في الوقت الفعلي" غير المحدَّث
الشكل 7: مؤشر حالة "التعديل المباشر"

القيود المفروضة على ميزة "التعديل في الوقت الفعلي"

في ما يلي قائمة بالقيود الحالية.

  • [ينطبق ذلك فقط على الإصدار Android Studio Giraffe والإصدارات الأحدث] تتطلّب ميزة "التعديل المباشر" استخدام Compose Runtime الإصدار 1.3.0 أو إصدار أحدث. إذا كان مشروعك يستخدم إصدارًا أقدم من Compose، سيتم إيقاف ميزة "التعديل المباشر".

  • [ينطبق ذلك فقط على الإصدار Giraffe من "استوديو Android" والإصدارات الأحدث] تتطلّب ميزة "التعديل المباشر" الإصدار 8.1.0-alpha05 من AGP أو إصدارًا أحدث. إذا كان مشروعك يستخدم إصدارًا أقدم من AGP، سيتم إيقاف ميزة "التعديل المباشر".

  • تتطلّب ميزة "التعديل المباشر" جهازًا فعليًا أو محاكيًا يعمل بمستوى واجهة برمجة التطبيقات 30 أو مستوى أعلى.

  • تتيح ميزة "التعديل المباشر" تعديل نص الدالة فقط، ما يعني أنّه لا يمكنك تغيير اسم الدالة أو توقيعها أو إضافة دالة أو إزالتها أو تغيير الحقول غير المتعلّقة بالدالة.

  • تعيد ميزة "التعديل في الوقت الفعلي" ضبط حالة التطبيق في المرة الأولى التي تغيّر فيها دالة Compose في ملف. يحدث هذا فقط بعد تغيير الرمز الأول، ولا تتم إعادة ضبط حالة التطبيق من خلال تغييرات الرمز اللاحقة التي تجريها على دوال Compose في هذا الملف.

  • قد تؤدي الفئات المعدَّلة باستخدام ميزة Live Edit إلى انخفاض في الأداء. شغِّل تطبيقك واستخدِم بنية إصدار نظيفة إذا كنت تُقيِّم أداءه.

  • يجب إجراء تشغيل كامل لكي يعمل مصحّح الأخطاء على الفئات التي عدّلتها باستخدام ميزة "التعديل المباشر".

  • قد يتعطّل تطبيق قيد التشغيل عند تعديله باستخدام ميزة "التعديل في الوقت الفعلي". في هذه الحالة، يمكنك إعادة نشر التطبيق باستخدام الزر تشغيل زر
واجهة المستخدم.

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

  • يتم تعديل الدوال غير المركّبة مباشرةً على الجهاز أو المحاكي، ويتم تشغيل إعادة تركيب كاملة. قد لا تؤدي إعادة التركيب الكاملة إلى استدعاء الدالة المعدَّلة. بالنسبة إلى الدوال غير المركّبة، يجب تشغيل الدوال التي تم تحديثها مؤخرًا أو تشغيل التطبيق مرة أخرى.

  • لا يتم استئناف ميزة "التعديل المباشر" عند إعادة تشغيل التطبيق. يجب تشغيل التطبيق مرة أخرى.

  • لا تتوافق ميزة "التعديل المباشر" إلا مع العمليات القابلة للتصحيح.

  • لا تتوافق ميزة Live Edit مع المشاريع التي تستخدم قيمًا مخصّصة لـ moduleName ضمن kotlinOptions في إعدادات التصميم.

  • لا تعمل ميزة "التعديل المباشر" مع عمليات النشر المتعددة. هذا يعني أنه لا يمكنك النشر على جهاز واحد، ثم على جهاز آخر. لا يتم تفعيل ميزة "التعديل المباشر" إلا على آخر مجموعة من الأجهزة التي تم نشر التطبيق عليها.

  • تعمل ميزة Live Edit مع عمليات النشر على أجهزة متعددة (عمليات النشر على أجهزة متعددة تم إنشاؤها من خلال اختيار أجهزة متعددة في القائمة المنسدلة لأجهزة الاختبار). ومع ذلك، لا تتوفّر هذه الميزة رسميًا وقد تحدث مشاكل. إذا واجهت مشاكل، يُرجى الإبلاغ عنها.

  • لا تتوافق ميزتا "تطبيق التغييرات" و"تطبيق تغييرات الرمز" مع ميزة "التعديل في الوقت الفعلي"، وتتطلّبان إعادة تشغيل التطبيق قيد التشغيل.

  • لا تتيح ميزة "التعديل المباشر" حاليًا مشاريع Android Automotive.

الأسئلة الشائعة حول ميزة "التعديل المباشر"

  • ما هي الحالة الحالية لميزة "التعديل المباشر"؟

    تتوفّر ميزة "التعديل المباشر" في الإصدار Giraffe من "استوديو Android". لتفعيلها، انتقِل إلى ملف > الإعدادات > المحرِّر > تعديل مباشر (استوديو Android > الإعدادات > المحرِّر > تعديل مباشر على نظام التشغيل macOS).

  • متى يجب استخدام ميزة "المحرِّر المباشر"؟

    استخدِم ميزة "التعديل المباشر" عندما تريد الاطّلاع بسرعة على تأثير التعديلات على عناصر تجربة المستخدم (مثل تعديلات المُعدِّلات والرسوم المتحركة) في تجربة التطبيق بشكل عام.

  • متى يجب تجنُّب استخدام ميزة "المعدِّل الحيّ"؟

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

  • متى يجب استخدام ميزة "معاينة الإنشاء"؟

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

تطوير الرموز البرمجية بشكل متكرّر باستخدام Compose

"التعديل المباشر" و"إعادة التحميل السريع" في Compose Multiplatform هما ميزتان يمكنهما توفير الوقت وزيادة الإنتاجية أثناء التطوير باستخدام Compose. ومع ذلك، فهي تخدم احتياجات أنواع مختلفة من التطوير:

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

  • تخدم ميزة Compose Hot Reload الغرض نفسه، ولكنها تتيح استخدام تطبيقات الكمبيوتر المكتبي التي تم إنشاؤها باستخدام Compose Multiplatform. تتيح لك هذه الميزة إجراء تغييرات على رمز واجهة المستخدم في تطبيق Compose Multiplatform والاطّلاع على النتائج في الوقت الفعلي من خلال إعادة تحميل الرمز بذكاء كلما تم تغييره.

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

إذا كنت تطوّر تطبيق Android، ننصحك باستخدام ميزة "التعديل المباشر" لتسريع عملية التطوير. إذا كنت تطوّر تطبيقًا لأجهزة الكمبيوتر المكتبي باستخدام Compose Multiplatform، عليك استخدام Compose Hot Reload.

ميزة Live Edit للقيم الحرفية (متوقّفة نهائيًا)

يمكن لـ "استوديو Android" تعديل بعض القيم الثابتة المستخدَمة في الدوال المركّبة في الوقت الفعلي ضمن المعاينات والمحاكي والجهاز الفعلي. في ما يلي بعض الأنواع المتوافقة:

  • Int
  • String
  • Color
  • Dp
  • Boolean

فيديو للمستخدم وهو يغيّر القيم الثابتة في الرمز المصدر، والمعاينة
يتم تعديلها
بشكل ديناميكي

يمكنك عرض القيم الثابتة التي تؤدي إلى إجراء تحديثات في الوقت الفعلي بدون خطوة التجميع من خلال تفعيل زخارف القيم الثابتة من خلال مؤشر واجهة المستخدم "التعديل المباشر للقيم الثابتة":

تفعيل التعديل المباشر
للقيم الحرفية

تطبيق التغييرات

تتيح لك ميزة تطبيق التغييرات تعديل الرموز والموارد بدون الحاجة إلى إعادة نشر تطبيقك على محاكي أو جهاز فعلي (مع بعض القيود).

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

مستخدم ينقر على زر "تطبيق التغييرات"