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

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

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

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

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

ویرایش زنده

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

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

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

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

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

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

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

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

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

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

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

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

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

    انتخاب الگو در «استودیو Android»
    شکل ۳. الگوهایی که می‌توانید از بین آن‌ها انتخاب کنید. برای «ویرایش زنده»، Empty Compose Activity را انتخاب کنید.
  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 نسخه ۱.۳.۰ یا بالاتر نیاز دارد. اگر پروژه شما از نسخه پایین‌تر Compose استفاده می‌کند، «ویرایش زنده» غیرفعال است.

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

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

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

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

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

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

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

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

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

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

  • Live Edit فقط از فرایندهای قابل‌اشکال‌زدایی پشتیبانی می‌کند.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Compose Hot Reload همین نیاز را برآورده می‌کند، اما از برنامه‌های رایانه ساخته‌شده با Compose Multiplatform پشتیبانی می‌کند. این ابزار به شما امکان می‌دهد در کد واسط کاربر در برنامه Compose Multiplatform تغییر ایجاد کنید و با بازبار کردن هوشمندانه کدتان در هر زمان که تغییر می‌کند، نتایج را به‌طور هم‌زمان ببینید.

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

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

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

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

  • Int
  • String
  • Color
  • Dp
  • Boolean

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

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

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

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

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

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

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