توسعه تکرارشونده کد

به‌عنوان توسعه‌دهنده تلفن همراه، اغلب رابط کاربری برنامه‌تان را گام‌به‌گام توسعه می‌دهید تا اینکه همه چیز را یک‌باره توسعه دهید. ‫Android Studio با ارائه ابزارهایی که برای بازرسی، اصلاح مقادیر، و درستی‌سنجی نتیجه نهایی به ساخت کامل نیاز ندارند، از این رویکرد با Jetpack Compose استقبال می‌کند.

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

می‌توانید از کارگزار هوش مصنوعی در Android Studio برای پالایش و تبدیل تکرارشونده «میانای کاربر Compose» مستقیماً از پیش‌نمایش طراحی استفاده کنید. روی «پیش‌نویس» «پیش‌نمایش» کلیک‌راست کنید و یکی از کنش‌های هوش مصنوعی زیر را انتخاب کنید:

  • مطابقت دادن واسط کاربر با تصویر هدف: برای بارگذاری کردن طرح ساختگی مرجع انتخاب کنید. سپس نماینده تغییرات کد را پیشنهاد می‌دهد تا پیاده‌سازی شما تا حد امکان با طراحی مطابقت داشته باشد.
شکل ۱. میانای کاربری را به‌روز کنید تا با تصویر هدف مطابقت داشته باشد.
  • تبدیل میانای کاربری: از پیام‌واره‌های زبان طبیعی (برای نمونه، «رنگ دکمه را به آبی تغییر بده») برای توصیف اصلاحات خاصی که می‌خواهید در میانای کاربری‌تان انجام دهید استفاده کنید.
شکل ۲. از عامل بخواهید میانای کاربر را تبدیل کند.

ویرایش زنده

«ویرایش زنده» ویژگی‌ای است که به شما امکان می‌دهد عناصر ترکیبی را در شبیه‌سازها و دستگاه‌های فیزیکی به‌طور هم‌زمان به‌روز کنید. این عملکرد جابه‌جایی بین نوشتن و ساختن برنامه را به‌حداقل می‌رساند و به شما امکان می‌دهد بدون وقفه روی نوشتن کد تمرکز کنید.

«ویرایش زنده» سه حالت دارد:

  • دستی: تغییرات کد زمانی اعمال می‌شود که بااستفاده از Control+' (Command+' در macOS) به‌صورت دستی انتقال داده شود
  • دستی در «ذخیره کردن»: تغییرات کد زمانی اعمال می‌شود که بااستفاده از Control+S (Command+S در macOS) به‌صورت دستی ذخیره شود.
  • خودکار: وقتی تابع ترکیبی را به‌روزرسانی می‌کنید، تغییرات در دستگاه یا شبیه‌ساز اعمال می‌شود.

«ویرایش زنده» بر تغییرات کد مربوط به میانای کاربر و تجربه کاربر تمرکز دارد. «ویرایش زنده» از تغییراتی مثل به‌روزرسانی امضای روش، افزودن روش‌های جدید، یا تغییرات سلسله‌مراتب کلاس پشتیبانی نمی‌کند. برای اطلاعات بیشتر، فهرست محدودیت‌های ویرایش زنده را ببینید.

این ویژگی جایگزینی برای ساختن و اجرای برنامه شما یا برای اعمال تغییرات نیست. درعوض، این ویژگی برای بهینه‌سازی گردش کار شما درحین ساختن، پیاده‌سازی، و تکرار برای توسعه «میانای کاربر Compose» طراحی شده است.

گردش کار روال مطلوب به این صورت است:

  1. برنامه‌تان را طوری راه‌اندازی کنید که بتواند اجرا شود.
  2. تا جایی که ممکن است از «ویرایش زنده» استفاده کنید تا زمانی که نیاز به ایجاد تغییری داشته باشید که «ویرایش زنده» از آن پشتیبانی نمی‌کند، مانند افزودن روش‌های جدید درحالی‌که برنامه درحال اجرا است.
  3. پس‌از انجام تغییرات پشتیبانی‌نشده، روی اجرا نماد
اجرا کلیک کنید تا برنامه بازراه‌اندازی شود و «ویرایش زنده» ازسر گرفته شود.

شروع کار با «ویرایش زنده»

برای شروع، این مراحل را دنبال کنید تا «فعالیت نوشتن» خالی ایجاد کنید، «ویرایش زنده» را برای پروژه‌تان فعال کنید، و با «ویرایش زنده» تغییرات ایجاد کنید.

راه‌اندازی پروژه جدید

  1. قبل‌از شروع، مطمئن شوید که Android Studio Giraffe یا بالاتر نصب شده باشد و سطح API دستگاه فیزیکی یا شبیه‌ساز حداقل ۳۰ باشد.

  2. «استودیو Android» را باز کنید و پروژه جدید را در چارگوش به «استودیو Android» خوش آمدید انتخاب کنید. اگر ازقبل پروژه‌ای باز دارید، می‌توانید با پیمایش به فایل > جدید > پروژه جدید، پروژه جدیدی ایجاد کنید.

  3. الگوی فعالیت نوشتن خالی را برای تلفن و رایانه لوحی انتخاب کنید، و سپس روی بعدی کلیک کنید.

    انتخاب الگو در «استودیو Android»
    شکل ۳. الگوهایی که می‌توانید از بین آن‌ها انتخاب کنید. برای «ویرایش زنده»، فعالیت نوشتن خالی را انتخاب کنید.
  4. گفتگوی پروژه جدید را با اطلاعات موردنیاز تکمیل کنید: نام، نام بسته، مکان ذخیره، حداقل کیت توسعه نرم‌افزار، و زبان پیکربندی ساخت.

    تنظیمات پروژه نمونه از «مرحله ۴» که در «استودیو Android» وارد شده است
    شکل ۴. تنظیمات پروژه نمونه.
  5. روی پایان کلیک کنید.

فعال کردن «ویرایش زنده»

  1. برای فعال کردن «ویرایش زنده»، به تنظیمات بروید.

    • در Windows یا Linux، به File (فایل) > Settings (تنظیمات) > Editor (ویرایشگر) > Live Edit (ویرایش زنده) بروید.
    • در macOS، به Android Studio > تنظیمات > ویرایشگر > ویرایش زنده پیمایش کنید.
  2. گزینه ویرایش زنده و حالت موردنظرتان را از تنظیمات انتخاب کنید.

    در حالت دستی، هر بار که Control+' (Command+' در macOS) را فشار می‌دهید، تغییرات کد شما ارسال می‌شود. در حالت دستی در ذخیره، تغییرات کد شما هر بار که به‌صورت دستی ذخیره می‌کنید، بااستفاده از Control+S (Command+S در macOS) اعمال می‌شود. در حالت خودکار، تغییرات کد شما هم‌زمان با ایجاد تغییرات در دستگاه یا شبیه‌ساز اعمال می‌شود.

    واسط کاربر چارگوش انتخاب «ویرایش زنده» در تنظیمات «استودیو Android»
    شکل ۵. تنظیمات «ویرایش زنده».
  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)
    )
}

تغییرات شما بلافاصله در دستگاه آزمایشی نشان داده می‌شود، همان‌طور که در «شکل ۶» نشان داده شده است.

تغییرات روش «سلام» در دستگاه اعمال شد
شکل ۶. دستگاه آزمایشی تغییرات «ویرایش زنده» را در روش Greeting نمایش می‌دهد.

عیب‌یابی «ویرایش زنده»

اگر ویرایش‌هایتان را در دستگاه آزمایشی نمی‌بینید، ممکن است Android Studio نتوانسته باشد ویرایش‌هایتان را به‌روز کند. بررسی کنید که آیا نشانگر «ویرایش زنده» عبارت قدیمی را نشان می‌دهد یا نه، همان‌طور که در «شکل ۷» نشان داده شده است، که نشان‌دهنده خطای گردآوری است. برای اطلاعات درباره خطا و پیشنهادهایی برای نحوه رفع آن، روی نشانگر کلیک کنید.

نماد «ویرایش زنده» قدیمی است
شکل ۷. نشانگر وضعیت «ویرایش زنده».

محدودیت‌های «ویرایش زنده»

در زیر فهرستی از محدودیت‌های فعلی آورده شده است.

  • [فقط برای Android Studio Giraffe و نسخه‌های بالاتر اعمال می‌شود] «ویرایش زنده» به Compose Runtime 1.3.0 یا بالاتر نیاز دارد. اگر پروژه شما از نسخه پایین‌تری از Compose استفاده می‌کند، «ویرایش زنده» غیرفعال می‌شود.

  • [فقط برای Android Studio Giraffe و نسخه‌های بالاتر اعمال می‌شود] «ویرایش زنده» به AGP 8.1.0-alpha05 یا بالاتر نیاز دارد. اگر پروژه شما از نسخه پایین‌تری از AGP استفاده می‌کند، «ویرایش زنده» غیرفعال می‌شود.

  • «ویرایش زنده» به دستگاه فیزیکی یا شبیه‌سازی نیاز دارد که سطح میانای برنامه‌سازی کاربردی ۳۰ یا بالاتر داشته باشد.

  • «ویرایش زنده» فقط از ویرایش بدنه تابع پشتیبانی می‌کند، یعنی نمی‌توانید نام یا امضای تابع را تغییر دهید، تابعی را اضافه یا حذف کنید، یا فیلدهای غیرتابع را تغییر دهید.

  • «ویرایش زنده» وضعیت برنامه را اولین‌باری که تابع Compose را در فایلی تغییر می‌دهید بازنشانی می‌کند. این اتفاق فقط پس‌از اولین تغییر کد رخ می‌دهد—وضعیت برنامه با تغییرات کد بعدی که در توابع Compose در آن فایل ایجاد می‌کنید بازنشانی نمی‌شود.

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

  • برای اینکه اشکال‌زدا روی کلاس‌هایی که با «ویرایش زنده» تغییر داده‌اید عمل کند، باید اجرای کاملی انجام دهید.

  • برنامه‌ای که درحال اجرا است ممکن است وقتی آن را با «ویرایش زنده» ویرایش می‌کنید خراب شود. اگر این اتفاق افتاد، می‌توانید برنامه را با دکمه اجرا دکمه
میانای کاربر دوباره مستقر کنید.

  • «ویرایش زنده» هیچ‌گونه دستکاری کدبایتی را که در فایل ساخت پروژه شما تعریف شده است انجام نمی‌دهد—برای مثال، دستکاری کدبایتی که هنگام ساخت پروژه بااستفاده از گزینه‌های منو ساخت یا با کلیک کردن روی دکمه‌های ساخت یا اجرا اعمال می‌شود.

  • توابع غیرترکیبی به‌صورت زنده در دستگاه یا شبیه‌ساز به‌روزرسانی می‌شوند و ترکیب مجدد کامل راه‌اندازی می‌شود. ترکیب مجدد کامل ممکن است تابع به‌روزشده را فراخوانی نکند. برای کارکردهای غیرترکیبی، باید کارکردهای به‌روزرسانی‌شده جدید را راه‌اندازی کنید یا برنامه را دوباره اجرا کنید.

  • «ویرایش زنده» با بازراه‌اندازی برنامه ازسر گرفته نمی‌شود. باید برنامه را دوباره اجرا کنید.

  • «ویرایش زنده» فقط از فرایندهای اشکال‌زدایی‌پذیر پشتیبانی می‌کند.

  • «ویرایش زنده» از پروژه‌هایی که از مقادیر سفارشی برای moduleName در kotlinOptions در پیکربندی ساخت استفاده می‌کنند پشتیبانی نمی‌کند.

  • «ویرایش زنده» با استقرار چندگانه کار نمی‌کند. این یعنی نمی‌توانید ابتدا در یک دستگاه و سپس در دستگاه دیگری مستقر کنید. «ویرایش زنده» فقط در آخرین مجموعه دستگاه‌هایی که برنامه در آن‌ها مستقر شده است فعال است.

  • «ویرایش زنده» با استقرار چنددستگاهی کار می‌کند (استقرار در چند دستگاه که ازطریق انتخاب چند دستگاه در منو کرکره‌ای دستگاه مقصد ایجاد شده است). بااین‌حال، این ویژگی به‌طور رسمی پشتیبانی نمی‌شود و ممکن است مشکلاتی وجود داشته باشد. اگر با مشکلی مواجه شدید، لطفاً آن را گزارش کنید.

  • «اعمال تغییرات»/ «اعمال تغییرات کد» با «ویرایش زنده» سازگار نیست و نیاز دارد برنامه درحال اجرا بازراه‌اندازی شود.

  • درحال‌حاضر «ویرایش زنده» از پروژه‌های Android Automotive پشتیبانی نمی‌کند.

پرسشگان درباره «ویرایش زنده»

  • وضعیت فعلی «ویرایش زنده» چیست؟

    «ویرایش زنده» در Android Studio Giraffe دردسترس است. برای روشن کردن آن، به File (فایل) > Settings (تنظیمات) > Editor (ویرایشگر) > Live Edit (ویرایش زنده) (Android Studio > Settings (تنظیمات) > Editor (ویرایشگر) > Live Edit (ویرایش زنده) در macOS) پیمایش کنید.

  • چه زمانی باید از «ویرایش زنده» استفاده کنم؟

    وقتی می‌خواهید به‌سرعت تأثیر به‌روزرسانی‌های عناصر «تجربه کاربری» (مثل به‌روزرسانی‌های اصلاح‌گر و پویانمایی‌ها) را بر تجربه کلی برنامه ببینید، از «ویرایش زنده» استفاده کنید.

  • چه زمانی باید از «ویرایش زنده» استفاده نکنم؟

    «ویرایش زنده» بر تغییرات کد مربوط به میانای کاربر و تجربه کاربر تمرکز دارد. از تغییراتی مثل به‌روزرسانی امضای روش، افزودن روش‌های جدید، یا تغییرات سلسله‌مراتب کلاس پشتیبانی نمی‌کند. برای اطلاعات بیشتر، محدودیت‌های ویرایش زنده را ببینید.

  • چه زمانی باید از «پیش‌نمای نوشتن» استفاده کنم؟

    هنگام توسعه ترکیب‌پذیرهای فردی، از «پیش‌نمایش ترکیب» استفاده کنید. «پیش‌نمایش» عناصر Compose را به‌تصویر می‌کشد و به‌طور خودکار بازآوری می‌شود تا تأثیر تغییرات کد را نمایش دهد. «پیش‌نمایش» همچنین از مشاهده عناصر رابط کاربری در پیکربندی‌ها و وضعیت‌های مختلف، مانند زمینه تیره، زبان‌های محلی، و مقیاس قلم پشتیبانی می‌کند.

توسعه کد تکراری با Compose

«ویرایش زنده» و «بارگیری مجدد فوری» برای «چندسکویی Compose» ویژگی‌هایی هستند که می‌توانند در زمان شما صرفه‌جویی کنند و بهره‌وری شما را درحین توسعه با Compose افزایش دهند. بااین‌حال، این دو نوع توسعه نیازهای متفاوتی را برآورده می‌کنند:

  • ویرایش زنده از توسعه تکراری با Jetpack Compose برای برنامه‌های Android پشتیبانی می‌کند. این ویژگی به شما امکان می‌دهد عناصر ترکیبی را در شبیه‌سازها و دستگاه‌های فیزیکی به‌طور هم‌زمان به‌روز کنید. این عملکرد جابه‌جایی بین نوشتن و ساختن برنامه را به حداقل می‌رساند و به شما امکان می‌دهد بدون وقفه برای مدت طولانی‌تری روی نوشتن کد تمرکز کنید.

  • بارگیری مجدد فعال Compose همان نیاز را برآورده می‌کند، اما از برنامه‌های رایانه‌ای ساخته‌شده با Compose Multiplatform پشتیبانی می‌کند. این ویژگی به شما امکان می‌دهد در برنامه «چندپلاتفرمی Compose» در کد واسط کاربر تغییر ایجاد کنید و با بارگیری مجدد هوشمندانه کدتان هر زمان که تغییر می‌کند، نتایج را به‌طور هم‌زمان ببینید.

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

اگر درحال توسعه برنامه Android هستید، باید از «ویرایش زنده» برای تسریع فرایند توسعه استفاده کنید. اگر بااستفاده از «چندسکویی Compose» برنامه رایانه رومیزی توسعه می‌دهید، باید از «بارگیری مجدد فعال Compose» استفاده کنید.

ویرایش زنده نوشتاری‌ها (منسوخ)

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

  • Int
  • String
  • Color
  • Dp
  • Boolean

ویدیویی از کاربر که درحال تغییر دادن حروف در کد منبع است و پیش‌نمایش به‌طور پویا به‌روز می‌شود

با فعال کردن تزئینات حرفی ازطریق «ویرایش زنده» نشانگر رابط کاربری حرفی، می‌توانید حرف‌های ثابتی را که به‌روزرسانی‌های هم‌زمان را بدون مرحله گردآوری راه‌اندازی می‌کنند مشاهده کنید:

فعال کردن «ویرایش زنده»
حروف

اعمال تغییرات

اعمال تغییرات به شما امکان می‌دهد کد و منابع را بدون نیاز به استقرار مجدد برنامه در شبیه‌ساز یا دستگاه فیزیکی (با برخی محدودیت‌ها) به‌روز کنید.

هرگاه عناصر ترکیبی را اضافه، اصلاح، یا حذف می‌کنید، می‌توانید با کلیک کردن روی دکمه اعمال تغییرات کد، برنامه را بدون نیاز به استقرار مجدد به‌روز کنید:

کاربر روی دکمه «اعمال تغییرات» کلیک می‌کند