أفضل الممارسات

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

يوضّح هذا الدليل استراتيجيات لإعداد بيئة التطوير وكتابة الطلبات التي تؤدي إلى الحصول على ردود مفيدة وموثوقة. بالنسبة إلى الاستراتيجيات المتعدّدة، قدّمنا أمثلة على الطلبات لحالات استخدام مختلفة. للاطّلاع على المزيد من الأمثلة على الطلبات، يمكنك الانتقال إلى معرض الطلبات.

استخدام "وضع الوكيل"

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

تحديد المشكلة بدقة

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

تنفيذ وظائف جديدة:

كيف يمكنني إضافة إمكانية استخدام الكاميرا إلى تطبيقي باستخدام CameraX؟ احرص على تضمين أي تبعيات وأذونات أحتاج إليها لاستخدام المكتبة.
كيف يمكنني إضافة إمكانية استخدام الكاميرا إلى تطبيقي؟

إنشاء الرمز:

اكتب دالة تعليق في Kotlin تستخدم مكتبة Coil لتنزيل صورة من سلسلة عنوان URL معيّنة.

يجب أن يكون اسم الدالة fetchImageAsBitmap. يجب أن تأخذ هذه الدالة Context وعنوان URL String كمعلَمات وأن تعرض قيمة Bitmap تقبل القيم الفارغة. في حال حدوث أي خطأ في الشبكة أو في فك الترميز، يجب رصد الاستثناء وتسجيله وعرض null.

اكتب دالة لتنزيل صورة.

شرح مفهوم:

أعمل على إنشاء تطبيق لتشغيل الموسيقى وأحتاج إلى مواصلة التشغيل عندما يكون التطبيق في الخلفية.

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

توضيح خدمات Android

وصف بنية الإجابة

يقدّم Gemini الإجابات تلقائيًا بتنسيق حواري يتضمّن فقرات. على الرغم من أنّ هذه الطريقة مفيدة غالبًا في تقديم التفسيرات، يمكنك الحصول على نتائج أكثر فعالية وقابلة للاستخدام على الفور من خلال إخبارها بكيفية تنظيم الردّ. يؤدي تحديد تنسيق الإخراج إلى توجيه النموذج لتنظيم المعلومات بطريقة واضحة ويمكن توقّعها، ما يوفّر عليك الوقت الذي قد تستغرقه في إعادة تنسيقها بنفسك.

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

تنظيم الردّ:

إنشاء كيان "غرفة" لملف مستخدم يجب أن يحتوي على الحقول id وuserName وemail وmemberSince. يجب إنشاء حقل id تلقائيًا. يجب أن يمثّل الحقل memberSince طابعًا زمنيًا.

إنشاء كيان "غرفة" لملف مستخدم

إذا كنت تطرح سؤالاً مفتوحًا أكثر، اطلب منه تقديم x عدد من الخيارات.

حصر الردود:

ما هي الأدوات المتاحة لتحسين أداء التطبيق؟ أريد قائمة بأهم ثلاثة منها.
ما هي الأدوات المتاحة لتحسين أداء التطبيق؟

تقسيم الطلبات المعقّدة إلى مهام أصغر

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

تطبيق الطلبات المتسلسلة:

الطلب 1: نموذج البيانات
أولاً، أنشئ فئة بيانات Kotlin باسم User. يجب أن تتضمّن ثلاث سمات: id (عدد صحيح) وname (سلسلة) وemail (سلسلة).

الطلب 2: طبقة الشبكة
الآن، أنشئ واجهة برمجة تطبيقات Retrofit باسم ApiService. يجب أن يحتوي على دالة واحدة suspend fun باسم getUsers() تعرض List<User>.

الطلب 3: إدارة الحالة
بعد ذلك، اكتب UsersViewModel الذي يستخدم ApiService كعنصر تابع. يجب أن يعرض UsersViewModel StateFlow لفئة UiState محكمة الإغلاق يمكنها تمثيل حالات Loading, Success(users: List) وError(message: String). أنشئ دالة في ViewModel لجلب المستخدمين وتعديل الحالة. كتابة اختبارات الوحدة للوظائف الجديدة

الطلب 4: طبقة واجهة المستخدم
أخيرًا، اكتب دالة Jetpack Compose باسم UserListScreen تقبل UiState كمعلَمة. استخدِم عبارة when لعرض CircularProgressIndicator لحالة التحميل، وLazyColumn لأسماء المستخدمين في حالة النجاح، وعنصر Text مع رسالة الخطأ في حالة الخطأ. أضِف اختبارات تتحقّق من الوظيفة الجديدة.

أنشئ شاشة Jetpack Compose تجلب قائمة بالمستخدمين من واجهة برمجة تطبيقات JSON وتعرضهم في قائمة. يجب أن يحتوي على ViewModel يستخدم Retrofit وcoroutines، ومستودع للتعامل مع منطق البيانات، وفئة بيانات User، ويجب أن يعرض حالات التحميل والخطأ.

إدارة السياق

يتمثّل جزء كبير من العمل مع &quot;Gemini في استوديو Android&quot; في توفير السياق المناسب. قدِّم مقتطفات من الرموز ذات الصلة ومحتوى الملفات ومعلومات حول بنية المشروع للحصول على الردود الأكثر فائدة. قد تحتاج إلى تكرار المحاولات للوصول إلى التوازن الصحيح، لأنّ تقديم الكثير من المعلومات قد يضلّل Gemini، بينما تقديم القليل منها لن يوفّر له السياق الكافي لتقديم المساعدة. استخدِم الميزات المتاحة لمنح Gemini إذن الوصول إلى السياق اللازم:

  • أرفِق صورًا لتقديم عرض مرئي لواجهة المستخدم التي تتصوّرها أو بنية التطبيق التي تحاول فهمها.
  • أرفِق ملفات لتسليط الضوء على الأجزاء ذات الصلة من قاعدة الرموز.
  • استخدِم ملفات .aiexclude لتجاهل Gemini لأجزاء معيّنة من قاعدة الرموز البرمجية.
  • استخدِم ملفات AGENTS.md لتقديم تعليمات خاصة بالمشروع ومشاركتها مع فريقك. عند استخدام ملفات AGENTS.md، استخدِم عناوين وتنسيق Markdown لتوضيح تعليماتك.
  • عند استخدام "وضع الوكيل"، يمكنك إعداد خوادم MCP لتوسيع نطاق معرفة Gemini وقدراته ليشمل البيئة الخارجية.

طلب تفسيرات

إذا لم تفهم ردّ Gemini في &quot;استوديو Android&quot;، يمكنك طلب توضيح. هذه طريقة رائعة للتعرّف على الحل المقترَح والتأكّد من أنّه مناسب لحالة الاستخدام. إذا لم يكن الردّ على قدر توقعاتك، قد يكون Gemini مخطئًا، وطلب توضيح سيتيح له فرصة تصحيح نفسه.

تكرار التعليمات

كما هو الحال عند العمل مع زميل، يتطلّب العمل مع Gemini في Android Studio أحيانًا بعض التواصل ذهابًا وإيابًا لتوضيح المهمة والنتيجة المتوقّعة. إذا لم يكن رد Gemini الأوّلي كافيًا، يمكنك الردّ عليه وتقديم ملاحظات واقتراحات حول كيفية تحسينه. إذا تحسّنت استجابة الروبوت استنادًا إلى اقتراحاتك، يمكنك دمج هذا الاقتراح في الطلب الأصلي من خلال تعديل الإدخال في مكتبة الطلبات أو تعديل ملفات AGENTS.md.