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

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

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

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

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

ویرایش زنده

ویرایش زنده (Live Edit) قابلیتی است که به شما امکان می‌دهد کامپوننت‌ها (composables) را در شبیه‌سازها و دستگاه‌های فیزیکی به صورت بلادرنگ به‌روزرسانی کنید. این قابلیت، جابه‌جایی‌های زمینه‌ای بین نوشتن و ساخت برنامه را به حداقل می‌رساند و به شما امکان می‌دهد بدون وقفه، مدت بیشتری روی نوشتن کد تمرکز کنید.

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

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

ویرایش زنده (Live Edit) بر تغییرات کد مربوط به رابط کاربری (UI) و تجربه کاربری (UX) متمرکز است. ویرایش زنده از تغییراتی مانند به‌روزرسانی امضای متد، افزودن متدهای جدید یا تغییرات سلسله مراتب کلاس پشتیبانی نمی‌کند. برای اطلاعات بیشتر، به فهرست محدودیت‌های ویرایش زنده (Live Edit) مراجعه کنید.

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

بهترین روش گردش کار به شرح زیر است:

  1. برنامه خود را طوری تنظیم کنید که بتواند اجرا شود.
  2. تا جایی که می‌توانید از Live Edit استفاده کنید، مگر اینکه نیاز به ایجاد تغییری داشته باشید که Live Edit از آن پشتیبانی نمی‌کند، مانند اضافه کردن متدهای جدید در حین اجرای برنامه.
  3. پس از ایجاد یک تغییر پشتیبانی نشده، روی اجرا کلیک کنیدRun
icon برای شروع مجدد برنامه و ادامه ویرایش زنده.

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

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

پروژه جدید خود را تنظیم کنید

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

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

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

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

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

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

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

    • در ویندوز یا لینوکس، به مسیر File > Settings > Editor > Live Edit بروید.
    • در macOS، به Android Studio > Settings > Editor > Live Edit بروید.
  2. گزینه Live Edit و حالتی که می‌خواهید اجرا شود را از تنظیمات انتخاب کنید.

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

    رابط کاربری کادر انتخاب ویرایش زنده در تنظیمات اندروید استودیو
    Figure 5. Live Edit settings.
  3. در ویرایشگر، فایل MainActivity را که نقطه ورود برنامه شماست، باز کنید.

  4. روی اجرا کلیک کنیدUI button برای استقرار برنامه شما.

  5. بعد از اینکه Live Edit را فعال کردید، علامت تیک سبز رنگ Up-to-date در سمت راست بالای پنجره ابزار Running Devices ظاهر می‌شود:

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

ایجاد و بررسی تغییرات

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

برای مثال، متد 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)
    )
}

تغییرات شما فوراً روی دستگاه آزمایشی ظاهر می‌شوند، همانطور که در شکل ۶ نشان داده شده است.

Changes to Greeting method applied on a device
شکل ۶. دستگاه آزمایشی که تغییرات Live Edit را در روش Greeting نمایش می‌دهد.

Troubleshoot Live Edit

اگر ویرایش‌های خود را در دستگاه آزمایشی مشاهده نمی‌کنید، ممکن است اندروید استودیو در به‌روزرسانی ویرایش‌های شما ناموفق بوده باشد. بررسی کنید که آیا نشانگر Live Edit، همانطور که در شکل 7 نشان داده شده است، عبارت «Out Of Date» را نشان می‌دهد یا خیر، که نشان‌دهنده‌ی خطای کامپایل است. برای کسب اطلاعات در مورد خطا و پیشنهادهایی برای رفع آن، روی نشانگر کلیک کنید.

Live Edit out of date icon
Figure 7. Live Edit status indicator.

Limitations of Live Edit

The following is a list of current limitations.

  • [فقط برای اندروید استودیو Giraffe و نسخه‌های بالاتر اعمال می‌شود] Live Edit نیاز به Compose Runtime نسخه ۱.۳.۰ یا بالاتر دارد. اگر پروژه شما از نسخه پایین‌تر Compose استفاده می‌کند، Live Edit غیرفعال است.

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

  • ویرایش زنده به یک دستگاه فیزیکی یا شبیه‌ساز نیاز دارد که API سطح 30 یا بالاتر را اجرا کند.

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

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

  • کلاس‌های اصلاح‌شده در ویرایش زنده ممکن است دچار مقداری افت عملکرد شوند. برنامه خود را اجرا کنید و اگر عملکرد آن را ارزیابی می‌کنید، از یک نسخه آزمایشی (clean release build) استفاده کنید.

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

  • ممکن است یک برنامه در حال اجرا هنگام ویرایش با Live Edit از کار بیفتد. در این صورت، می‌توانید برنامه را با Run مجدداً راه‌اندازی کنید.UI
button button.

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

  • توابع غیر قابل ترکیب (Non-Composable) به صورت زنده روی دستگاه یا شبیه‌ساز به‌روزرسانی می‌شوند و یک ترکیب‌بندی کامل آغاز می‌شود. ترکیب‌بندی کامل ممکن است تابع به‌روزرسانی‌شده را فراخوانی نکند. برای توابع غیر قابل ترکیب، باید توابع تازه به‌روزرسانی‌شده را آغاز کنید یا برنامه را دوباره اجرا کنید.

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

  • Live Edit only supports debuggable processes.

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

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

  • Live Edit works with multidevice deployments (deployments to multiple devices that were created through Select multiple devices in the target device dropdown). However, it's not officially supported and there might be issues. If you experience issues, please report them .

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

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

Frequently asked questions about Live Edit

  • What is the current status of Live Edit?

    قابلیت ویرایش زنده (Live Edit) در اندروید استودیو زرافه (Giraffe) موجود است. برای فعال کردن آن، به مسیر File > Settings > Editor > Live Edit (در مک او اس به مسیر Android Studio > Settings > Editor > Live Edit ) بروید.

  • When should I use Live Edit?

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

  • When should I avoid using Live Edit?

    ویرایش زنده (Live Edit) بر تغییرات کد مربوط به رابط کاربری (UI) و تجربه کاربری (UX) متمرکز است. این ابزار از تغییراتی مانند به‌روزرسانی امضای متد، افزودن متدهای جدید یا تغییرات سلسله مراتب کلاس پشتیبانی نمی‌کند. برای اطلاعات بیشتر، به محدودیت‌های ویرایش زنده (Live Edit) مراجعه کنید.

  • When should I use Compose Preview?

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

Iterative code development with Compose

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

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

  • قابلیت Compose Hot Reload نیز همین نیاز را برطرف می‌کند، اما از برنامه‌های دسکتاپ ساخته شده با Compose Multiplatform پشتیبانی می‌کند. این قابلیت به شما امکان می‌دهد تا در یک برنامه Compose Multiplatform، تغییراتی در کد رابط کاربری خود ایجاد کنید و با بارگذاری مجدد هوشمند کد خود در هر زمان که تغییر می‌کند، نتایج را به صورت بلادرنگ مشاهده کنید.

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

اگر در حال توسعه یک اپلیکیشن اندروید هستید، باید از Live Edit برای سرعت بخشیدن به فرآیند توسعه خود استفاده کنید. اگر در حال توسعه یک اپلیکیشن دسکتاپ با استفاده از Compose Multiplatform هستید، باید از Compose Hot Reload استفاده کنید.

Live Edit of literals (deprecated)

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

  • Int
  • String
  • Color
  • Dp
  • Boolean

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

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

Enabling Live Editing of
Literals

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

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

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

User clicking the "apply changes"
button

{% کلمه به کلمه %} {% endverbatim %} {% کلمه به کلمه %} {% endverbatim %}