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

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

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

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

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

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

‫Live Edit هي ميزة تتيح لك تعديل العناصر القابلة للإنشاء في المحاكيات والأجهزة الفعلية في الوقت الفعلي. تساعد هذه الوظيفة في تقليل عمليات تبديل السياق بين كتابة الرمز البرمجي وإنشاء تطبيقك، ما يتيح لك التركيز على كتابة الرمز البرمجي لفترة أطول بدون انقطاع.

تتضمّن ميزة "التعديل في الوقت الفعلي" ثلاثة أوضاع:

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

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

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

في ما يلي سير العمل الخاص بأفضل الممارسات:

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

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

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

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

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

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

  3. اختَر نموذج نشاط الإنشاء الفارغ لكل من الهاتف والجهاز اللوحي، ثم انقر على التالي.

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

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

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

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

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

    في الوضع اليدوي، يتم إرسال التغييرات التي تجريها على الرمز البرمجي في كل مرة تضغط فيها على 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" قد تعذّر عليه تعديلها. تحقَّق مما إذا كان مؤشر "التعديل في الوقت الفعلي" يعرض قديم كما هو موضّح في الشكل 7، ما يشير إلى حدوث خطأ في التجميع. للحصول على معلومات حول الخطأ واقتراحات حول كيفية حلّه، انقر على المؤشر.

رمز التعديل في الوقت الفعلي غير متوافق
الشكل 7. مؤشر حالة "التعديل في الوقت الفعلي"

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

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

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

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

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

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

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

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

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

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

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

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

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

  • لا تتوافق ميزة "التعديل المباشر" إلا مع العمليات التي يمكن تصحيح أخطائها.

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

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

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

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

  • لا يتوافق "التعديل في الوقت الفعلي" حاليًا مع مشاريع Android Automotive.

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

  • ما هي الحالة الحالية لميزة "التعديل في الوقت الفعلي"؟

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

  • متى يجب استخدام ميزة "التعديل في الوقت الفعلي"؟

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

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

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

  • متى يجب استخدام "معاينة Compose"؟

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

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

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

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

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

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

إذا كنت بصدد تطوير تطبيق Android، عليك استخدام ميزة "التعديل في الوقت الفعلي" لتسريع عملية التطوير. إذا كنت بصدد تطوير تطبيق على الكمبيوتر المكتبي باستخدام Compose Multiplatform، عليك استخدام ميزة "إعادة التحميل السريع" في Compose.

التعديل في الوقت الفعلي للقيم الثابتة (متوقّف نهائيًا)

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

  • Int
  • String
  • Color
  • Dp
  • Boolean

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

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

تفعيل ميزة "التعديل المباشر" للنصوص الحرفية

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

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

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

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