افزودن Kotlin چندپلاتفرمی به پروژه موجود

برای ایجاد کردن یک ماژول Kotlin Multiplatform (KMP) در پروژه Android خود، از الگوی Kotlin Multiplatform Shared Module استفاده کنید که در «استودیو Android» نسخه Meerkat و افزایه Android Gradle نسخه ۸.۸.۰ و بالاتر دردسترس است.

الگوی ماژول ایجاد ماژول جدید را با حداقل پیکربندی برای پلاتفرم‌های Android و iOS خودکار می‌کند. KMP از هدف‌های دیگری مثل رایانه و وب نیز پشتیبانی می‌کند که می‌توانید بعداً آن‌ها را به ماژول اضافه کنید. برای فهرست کامل، پایداری پلاتفرم‌های پشتیبانی‌شده را ببینید. برای اعلام هدف، به اهداف در مرجع Multiplatform Gradle DSL مراجعه کنید.

راه‌اندازی واحد KMP مشترک

برای ایجاد یک ماژول KMP مشترک، این مراحل را دنبال کنید:

  1. فایل > جدید > ماژول جدید را انتخاب کنید
  2. الگوی Kotlin Multiplatform Shared Module را در پانل Templates انتخاب کنید:
درحال ایجاد «واحد KMP» جدید
شکل ۱. ایجاد کردن «واحد KMP» جدید

فیلدهای موجود در الگو عبارتند از:

  • نام واحد – نام واحد Gradle و همچنین نام چارچوب iOS را تعریف می‌کند (بعداً قابل تغییر است)
  • نام بسته – نام بسته را برای فایل‌های موجود در این واحد تعریف می‌کند
    1. روی پایان کلیک کنید و به Gradle اجازه دهید با پروژه همگام‌سازی شود. ممکن است از شما خواسته شود فایل‌های واحد تازه ایجادشده را به کنترل منبع اضافه کنید.

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

نمای پروژه که واحدهای هم‌رسانی‌شده جدید را نشان می‌دهد
شکل ۲. نمای پروژه که واحدهای هم‌رسانی‌شده جدید را نشان می‌دهد

جادوگر واحد، واحد جدیداً ایجادشده را به‌عنوان وابستگی به هیچ‌یک از واحدهای موجود اضافه نمی‌کند. به‌عنوان مرحله بعدی، باید واحد مشترک را به یکی از واحدهای Gradle موجود خود پیوند دهید، مشابه سایر وابستگی‌های Android:

dependencies {
    ...
    implementation(project(":shared"))
}

پس‌از فعال شدن، می‌توانید مثل همیشه به کد دسترسی داشته باشید. از برنامه Android، می‌توانید به کدی که در androidMain یا commonMain دردسترس است دسترسی پیدا کنید.

برای کسب اطلاعات بیشتر درباره ساختار پروژه Kotlin چندپلاتفرمی، به مبانی ساختار پروژه Kotlin چندپلاتفرمی مراجعه کنید

ماژول هم‌رسانی‌شده را در برنامه iOS راه‌اندازی کنید

Swift نمی‌تواند مستقیماً از ماژول‌های Kotlin استفاده کند و نیاز به تولید چارچوب دودویی کامپایل‌شده دارد.

الگوی ماژول جدید در Android Studio ماژول مشترک را پیکربندی می‌کند تا چارچوبی برای هریک از معماری‌های iOS تولید کند. می‌توانید کد زیر را در فایل build.gradle.kts واحد هم‌رسانی‌شده پیدا کنید:

val xcfName = "sharedKit"

iosX64 {
  binaries.framework {
    baseName = xcfName
  }
}

iosArm64 {
  binaries.framework {
    baseName = xcfName
  }
}

iosSimulatorArm64 {
  binaries.framework {
    baseName = xcfName
  }
}

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

برای فعال کردن دسترسی به کد هم‌رسانی‌شده از پروژه iOS، فاز اسکریپت را اضافه کنید تا چارچوب Kotlin را قبل‌از کامپایل کردن منابع Swift تولید کنید:

  1. روی فایل در Android Studio کلیک راست کنید و باز کردن در و باز کردن در برنامه مرتبط را انتخاب کنید. با این کار، برنامه iOS در Xcode باز می‌شود.
باز کردن در برنامه مرتبط
شکل ۳. باز کردن در برنامه مرتبط
  1. با دو بار کلیک کردن روی نام پروژه در پیمایشگر پروژه، تنظیمات پروژه را باز کنید
کادر گفتگوی تنظیمات پروژه Xcode
شکل ۴. کادر گفتگوی تنظیمات پروژه Xcode
  1. نام پیش‌فرض Run Script را به Compile Kotlin Framework تغییر دهید تا بهتر متوجه شوید این مرحله چه کاری انجام می‌دهد. روی عنوان اجرای متن دوکلیک کنید تا آن را ویرایش کنید.
  2. فاز ساخت را ازهم باز کنید و در فیلد نوشتاری Shell، کد اسکریپت زیر را وارد کنید:
افزودن مرحله ساخت اسکریپت اجرای جدید
شکل ۵. اجرای فاز ساخت اسکریپت
  1. فاز اجرای اسکریپت را به قبل‌از فاز کامپایل کردن منابع بکشید.

    اجرای مرحله ساخت اسکریپت پیش‌از کامپایل کردن منابع
    شکل ۶. اجرای فاز ساخت اسکریپت قبل‌از کامپایل کردن منابع

  2. با کلیک کردن روی ⌘B یا رفتن به منوِ Product (محصول) و انتخاب کردن Build (ساختن)، پروژه را در Xcode بسازید.

وقتی ساخت موفقیت‌آمیز باشد، نماد زیر را خواهید دید.

ساخت موفقیت‌آمیز در Xcode نشان داده شده است
شکل ۷. ساخت با موفقیت انجام شد

دسترسی به کد هم‌رسانی‌شده در برنامه iOS

برای تأیید اینکه برنامه iOS می‌تواند با موفقیت به کد از واحد مشترک دسترسی پیدا کند، کارهای زیر را انجام دهید:

  1. در پروژه iOS، فایل ContentView.swift را در اینجا باز کنید: Sources/View/ContentView.swift
  2. ‫sharedKit وارد کردن را در بالای فایل اضافه کنید.
  3. نمای «نوشتار» را به‌صورت زیر اصلاح کنید تا اطلاعات Platform_iosKt.platform() در رشته نمایش‌داده‌شده گنجانده شود:

این به‌روزرسانی بررسی می‌کند که آیا برنامه می‌تواند تابع platform() را از پودمان مشترک فراخوانی کند یا نه، که باید هنگام اجرا در پلاتفرم iOS، «iOS» را برگرداند.

شبیه‌ساز Xcode درحال اجرای برنامه iOS
شکل ۸. شبیه‌ساز Xcode که برنامه iOS را اجرا می‌کند

منابع تکمیلی