بهترین شیوه ها

جمینی در اندروید استودیو به عنوان همکار کدنویسی شما عمل می‌کند و با تولید کد، خلاصه‌سازی مباحث پیچیده، یافتن منابع خاص و موارد دیگر، گردش کار توسعه شما را تسریع می‌بخشد. ارتباط موثر، کلید آزادسازی پتانسیل کامل جمینی است.

این راهنما، استراتژی‌هایی را برای راه‌اندازی محیط توسعه شما و نوشتن دستورالعمل‌هایی که پاسخ‌های مفید و قابل اعتمادی ارائه می‌دهند، تشریح می‌کند. برای چندین استراتژی، دستورالعمل‌های نمونه برای موارد استفاده مختلف ارائه داده‌ایم. برای دستورالعمل‌های نمونه بیشتر، به گالری دستورالعمل‌ها مراجعه کنید.

از حالت عامل استفاده کنید

Gemini در حالت Agent اندروید استودیو فراتر از چیزی است که می‌توانید فقط با چت کردن با Gemini تجربه کنید. می‌توانید به Agent یک هدف سطح بالا بدهید و Agent مشکل را تجزیه و تحلیل می‌کند و برنامه‌ای برای حل آن ایجاد می‌کند. Agent ابزارها را فراخوانی می‌کند، چندین فایل را ویرایش می‌کند و خطاها را در حین کار برطرف می‌کند. حالت Agent به شما کمک می‌کند تا وظایف پیچیده را با کارایی بیشتری انجام دهید و کل فرآیند توسعه خود را سرعت بخشید.

خاص باشید

Gemini در اندروید استودیو با دستورالعمل‌های واضح و مشخص بهترین عملکرد را دارد. اگر کتابخانه‌ها، APIها یا رویکردهای خاصی وجود دارد که می‌خواهید از آنها استفاده کنید، آنها را در سوال خود بگنجانید - یا آنها را در فایل AGENTS.md ریشه پروژه خود قرار دهید تا در تعاملات مختلف حفظ شوند. به آن مانند ثبت یک گزارش اشکال فکر کنید: هرچه اطلاعات بیشتری ارائه دهید، مشکل سریع‌تر و مؤثرتر حل می‌شود.

پیاده‌سازی قابلیت‌های جدید:

چگونه می‌توانم با استفاده از CameraX پشتیبانی از دوربین را به برنامه‌ام اضافه کنم؟ مطمئن شوید که هرگونه وابستگی و مجوزی که برای استفاده از کتابخانه نیاز دارم را ذکر می‌کنید.
چطور می‌توانم پشتیبانی از دوربین را به برنامه‌ام اضافه کنم؟

تولید کد:

یک تابع suspend در کاتلین بنویسید که از کتابخانه Coil برای دانلود یک تصویر از یک رشته URL مشخص استفاده کند.

این تابع باید fetchImageAsBitmap نام داشته باشد. باید یک Context و یک String URL به عنوان آرگومان دریافت کند و یک Bitmap با قابلیت null شدن را برگرداند. اگر هرگونه خطای شبکه یا رمزگشایی وجود داشته باشد، باید exception را دریافت کند، آن را ثبت کند و null را برگرداند.

تابعی بنویسید که یک تصویر را دانلود کند.

توضیح یک مفهوم:

من در حال ساخت یک برنامه پخش موسیقی هستم و نیاز دارم که وقتی برنامه در پس‌زمینه است، پخش را ادامه دهم.

چه گزینه‌هایی برای اجرای برنامه در حالی که کاربر کارهای دیگری را روی دستگاه انجام می‌دهد، دارم؟ الزامات سطح API و پیامدهای عمر باتری برای هر رویکرد چیست؟

توضیح سرویس‌های اندروید

ساختار پاسخ را شرح دهید

به طور پیش‌فرض، Gemini پاسخ‌ها را در قالبی محاوره‌ای و مبتنی بر پاراگراف ارائه می‌دهد. اگرچه این اغلب برای توضیحات مفید است، اما می‌توانید با تعیین نحوه ساختار پاسخ، نتایج مؤثرتر و قابل استفاده‌تری به دست آورید. مشخص کردن قالب خروجی، مدل را هدایت می‌کند تا اطلاعات را به روشی واضح و قابل پیش‌بینی سازماندهی کند و در زمان شما برای قالب‌بندی مجدد آن صرفه‌جویی شود.

اگر می‌خواهید کد تولید شده توسط Gemini را در برنامه خود وارد کنید و به کد با فرمت خاصی نیاز دارید تا بتوانید فوراً از آن استفاده کنید، به Gemini دستورالعمل‌های واضحی در مورد تولید و قالب‌بندی کد ارائه دهید.

ساختاردهی پاسخ:

یک موجودیت Room برای پروفایل کاربر ایجاد کنید. این موجودیت باید شامل فیلدهای id ، userName ، email و memberSince باشد. فیلد id باید به صورت خودکار تولید شود. فیلد memberSince باید نشان‌دهنده‌ی یک مهر زمانی باشد.

یک موجودیت اتاق (Room) برای پروفایل کاربر ایجاد کنید.

اگر سؤالی با پاسخ بازتر می‌پرسید، تعداد x گزینه برای آن در نظر بگیرید.

محدود کردن پاسخ:

چه ابزارهایی برای بهینه‌سازی عملکرد اپلیکیشن وجود دارد؟ فهرستی از سه مورد برتر را به من بدهید.
چه ابزارهایی برای بهینه‌سازی عملکرد برنامه در دسترس هستند؟

درخواست‌های پیچیده را به وظایف کوچک‌تر تقسیم کنید

برای درخواست‌های پیچیده و چند مرحله‌ای، حتماً حالت عامل (Agent Mode) را امتحان کنید. با این حال، اگر رویکرد عامل آن چیزی نیست که انتظار دارید، ممکن است به شما کمک کند تا Gemini را از طریق مجموعه‌ای از درخواست‌های کوچک‌تر و متوالی هدایت کنید تا اینکه همه چیز را یکجا درخواست کنید. این رویکرد به شما کنترل بیشتری می‌دهد و به شما امکان می‌دهد قبل از رفتن به مرحله بعدی، هر مرحله را تأیید کنید.

اعمال دستورات ترتیبی:

نکته ۱: مدل داده
ابتدا، یک کلاس داده کاتلین به نام User ایجاد کنید. این کلاس باید سه ویژگی داشته باشد: id (یک نوع داده Int)، name (یک نوع داده String) و email (یک نوع داده String).

نکته ۲: لایه شبکه
حالا، یک رابط API از نوع Retrofit به نام ApiService ایجاد کنید. این رابط به یک suspend fun به نام getUsers() نیاز دارد که یک List<User> برمی‌گرداند.

نکته ۳: مدیریت وضعیت
در مرحله بعد، یک UsersViewModel بنویسید که ApiService به عنوان یک وابستگی بپذیرد. UsersViewModel باید یک StateFlow از یک کلاس UiState مهر و موم شده را نمایش دهد که بتواند Loading, Success(users: List ) را نشان دهد. Loading, Success(users: List ) و حالت‌های Error(message: String) ایجاد کنید. یک تابع در ViewModel ایجاد کنید تا کاربران را دریافت کرده و حالت را به‌روزرسانی کند. برای عملکرد جدید، تست‌های واحد بنویسید.

نکته ۴: لایه رابط کاربری
در نهایت، یک تابع Jetpack Compose با نام UserListScreen بنویسید که UiState به عنوان پارامتر بپذیرد. از یک دستور when برای نمایش یک CircularProgressIndicator برای وضعیت بارگذاری، یک LazyColumn از نام‌های کاربری برای وضعیت موفقیت و یک عنصر Text با پیام خطا برای وضعیت خطا استفاده کنید. تست‌هایی اضافه کنید که عملکرد جدید را تأیید کنند.

یک صفحه Jetpack Compose ایجاد کنید که لیستی از کاربران را از یک JSON API دریافت کرده و آنها را در یک لیست نمایش دهد. این صفحه باید دارای یک ViewModel باشد که از Retrofit و Coroutine استفاده می‌کند، یک repository برای مدیریت منطق داده‌ها، یک کلاس داده User و همچنین باید حالت‌های بارگذاری و خطا را نشان دهد.

مدیریت زمینه

بخش عمده‌ای از کار با Gemini در اندروید استودیو، ارائه زمینه مناسب است. برای دریافت مفیدترین پاسخ‌ها، قطعه کدهای مرتبط، محتوای فایل و اطلاعات ساختار پروژه را ارائه دهید. ممکن است مجبور شوید برای رسیدن به تعادل مناسب، مراحل را تکرار کنید: اطلاعات زیاد ممکن است Gemini را گمراه کند، در حالی که اطلاعات کم نیز زمینه کافی برای کمک به آن فراهم نمی‌کند. از ویژگی‌های موجود برای دسترسی Gemini به زمینه لازم استفاده کنید:

  • تصاویری را ضمیمه کنید تا تصویری از رابط کاربری مورد نظرتان یا معماری برنامه‌ای که می‌خواهید درک کنید، ارائه دهید.
  • برای برجسته کردن بخش‌های مرتبط با کدبیس ، فایل‌ها را پیوست کنید .
  • از فایل‌های .aiexclude استفاده کنید تا Gemini بخش‌های خاصی از کدبیس را نادیده بگیرد.
  • از فایل‌های AGENTS.md برای ارائه دستورالعمل‌های خاص پروژه و به اشتراک‌گذاری آنها در تیم خود استفاده کنید. هنگام استفاده از فایل‌های AGENTS.md، از هدرها و قالب‌بندی Markdown برای واضح بودن دستورالعمل‌های خود استفاده کنید.
  • هنگام استفاده از حالت عامل، سرورهای MCP را پیکربندی کنید تا دانش و قابلیت‌های Gemini را با محیط خارجی گسترش دهند.

توضیحات بخواهید

اگر در پاسخ اندروید استودیو، منظور Gemini را متوجه نشدید، درخواست توضیح کنید. این یک روش عالی برای یادگیری و تأیید مناسب بودن راه‌حل پیشنهادی برای مورد استفاده شماست. اگر پاسخ آن چیزی نبود که انتظار داشتید، در واقع می‌تواند به این معنی باشد که Gemini نادرست است و درخواست توضیح، فرصتی را برای Gemini فراهم می‌کند تا خود را اصلاح کند.

دستورالعمل‌های خود را تکرار کنید

مشابه زمانی که با یک همکار کار می‌کنید، کار با Gemini در اندروید استودیو گاهی اوقات نیاز به کمی ارتباط و گفتگو دارد تا در مورد وظیفه و نتیجه مورد انتظار شفاف‌سازی شود. اگر پاسخ اولیه Gemini کافی نیست، با بازخورد و پیشنهادهایی برای بهبود به آن پاسخ دهید. اگر پاسخ آن بر اساس پیشنهادات شما بهبود یافت، آن پیشنهاد را با به‌روزرسانی ورودی در کتابخانه Prompt یا به‌روزرسانی فایل‌های AGENTS.md خود در درخواست اصلی بگنجانید.