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

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

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

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

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

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

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

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

في ما يلي سير العمل الذي يمثّل أفضل الممارسات:

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

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

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

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

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

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

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

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

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

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

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

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

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

    واجهة مستخدم مربّع الاختيار "التعديل المباشر" في إعدادات "استوديو Android"
    الشكل 3. إعدادات "التعديل المباشر"
  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)
    )
}

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

التغييرات التي تم إجراؤها على طريقة الترحيب على أحد الأجهزة
الشكل 4. جهاز الاختبار الذي يعرض التغييرات التي تم إجراؤها باستخدام ميزة "التعديل المباشر" على طريقة Greeting

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

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

رمز "التعديل المباشر" غير متوفّر
الشكل 5. مؤشر حالة "التعديل المباشر"

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • متى يمكنني استخدام ميزة "التعديل المباشر"؟

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

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

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

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

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

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

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

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

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

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

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

التعديل المباشر للقيم الحرفية (ميزة متوقّفة نهائيًا)

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

  • Int
  • String
  • Color
  • Dp
  • Boolean

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

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

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

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

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

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

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