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

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

قالب ماژول ایجاد یک ماژول جدید را با حداقل پیکربندی که پلتفرم های اندروید و iOS را هدف قرار می دهد، خودکار می کند.

ماژول KMP مشترک را راه اندازی کنید

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

  1. File > New > New Module را انتخاب کنید
  2. الگوی ماژول مشترک چند پلتفرمی Kotlin را در پانل Templates انتخاب کنید:
ایجاد یک ماژول KMP جدید
شکل 1. ایجاد یک ماژول KMP جدید

فیلدهای قالب به شرح زیر است:

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

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

نمای پروژه که ماژول های مشترک جدید را نشان می دهد
شکل 2. نمای پروژه که ماژول های مشترک جدید را نشان می دهد

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

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

پس از فعال شدن، می توانید طبق معمول به کد دسترسی پیدا کنید. از برنامه Android، می‌توانید به کدهایی دسترسی پیدا کنید که در AndroidMain یا CommonMain موجود است.

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

ماژول مشترک را در برنامه iOS تنظیم کنید

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

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

val xcfName = "sharedKit"

iosX64 {
  binaries.framework {
    baseName = xcfName
  }
}

iosArm64 {
  binaries.framework {
    baseName = xcfName
  }
}

iosSimulatorArm64 {
  binaries.framework {
    baseName = xcfName
  }
}

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

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

  1. روی فایل در Android Studio کلیک راست کرده و Open In و Open in Associated Application را انتخاب کنید. با این کار برنامه iOS در Xcode باز می شود.
در برنامه مرتبط باز کنید
شکل 3. باز کردن در برنامه مرتبط
  1. تنظیمات پروژه را با دوبار کلیک کردن روی نام پروژه در ناوبر پروژه باز کنید
گفتگوی تنظیمات پروژه Xcode
شکل 4. گفتگوی تنظیمات پروژه Xcode
  1. نام پیش‌فرض Run Script را به Compile Kotlin Framework تغییر دهید تا بهتر تشخیص دهید این فاز چه کاری انجام می‌دهد. برای ویرایش عنوان Run Script دوبار کلیک کنید.
  2. فاز ساخت را گسترش دهید و در قسمت متن پوسته ، کد اسکریپت زیر را وارد کنید:
افزودن مرحله ساخت اسکریپت اجرا شده جدید
شکل 5. مرحله ساخت اسکریپت را اجرا کنید
  1. فاز Run Script را قبل از فاز Compile Sources بکشید.

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

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

هنگامی که ساخت موفق شد، نماد زیر را مشاهده خواهید کرد.

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

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

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

  1. در پروژه iOS، فایل ContentView.swift را در آدرس زیر باز کنید: Sources/View/ContentView.swift
  2. import sharedKit را در بالای فایل اضافه کنید.
  3. نمای متن را تغییر دهید تا اطلاعات Platform_iosKt.platform() را در رشته نمایش داده شده به صورت زیر اضافه کنید:

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

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

منابع اضافی

اگر در توسعه KMP تازه کار هستید، برای راهنمای بیشتر به مستندات رسمی KMP مراجعه کنید. اگر در توسعه iOS تازه کار هستید، به مستندات Swift Basics مراجعه کنید.