برای ایجاد کردن یک ماژول Kotlin Multiplatform (KMP) در پروژه Android خود، از الگوی Kotlin Multiplatform Shared Module استفاده کنید که در «استودیو Android» نسخه Meerkat و افزایه Android Gradle نسخه ۸.۸.۰ و بالاتر دردسترس است.
الگوی ماژول ایجاد ماژول جدید را با حداقل پیکربندی برای پلاتفرمهای Android و iOS خودکار میکند. KMP از هدفهای دیگری مثل رایانه و وب نیز پشتیبانی میکند که میتوانید بعداً آنها را به ماژول اضافه کنید. برای فهرست کامل، پایداری پلاتفرمهای پشتیبانیشده را ببینید. برای اعلام هدف، به اهداف در مرجع Multiplatform Gradle DSL مراجعه کنید.
راهاندازی واحد KMP مشترک
برای ایجاد یک ماژول KMP مشترک، این مراحل را دنبال کنید:
- فایل > جدید > ماژول جدید را انتخاب کنید
- الگوی Kotlin Multiplatform Shared Module را در پانل Templates انتخاب کنید:
فیلدهای موجود در الگو عبارتند از:
- نام واحد – نام واحد Gradle و همچنین نام چارچوب iOS را تعریف میکند (بعداً قابل تغییر است)
- نام بسته – نام بسته را برای فایلهای موجود در این واحد تعریف میکند
- روی پایان کلیک کنید و به Gradle اجازه دهید با پروژه همگامسازی شود. ممکن است از شما خواسته شود فایلهای واحد تازه ایجادشده را به کنترل منبع اضافه کنید.
پساز تکمیل، نمای پروژه «استودیو Android» واحد همرسانیشده جدید را همراه با مجموعه منبع برای هر پلاتفرم نشان میدهد.
پیوند دادن واحد همرسانیشده به برنامه 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
برای فعال کردن دسترسی به کد همرسانیشده از پروژه iOS، فاز اسکریپت را اضافه کنید تا چارچوب Kotlin را قبلاز کامپایل کردن منابع Swift تولید کنید:
- روی فایل در Android Studio کلیک راست کنید و باز کردن در و باز کردن در برنامه مرتبط را انتخاب کنید. با این کار، برنامه iOS در Xcode باز میشود.
- با دو بار کلیک کردن روی نام پروژه در پیمایشگر پروژه، تنظیمات پروژه را باز کنید
- نام پیشفرض Run Script را به Compile Kotlin Framework تغییر دهید تا بهتر متوجه شوید این مرحله چه کاری انجام میدهد. روی عنوان اجرای متن دوکلیک کنید تا آن را ویرایش کنید.
- فاز ساخت را ازهم باز کنید و در فیلد نوشتاری Shell، کد اسکریپت زیر را وارد کنید:
فاز اجرای اسکریپت را به قبلاز فاز کامپایل کردن منابع بکشید.
شکل ۶. اجرای فاز ساخت اسکریپت قبلاز کامپایل کردن منابع با کلیک کردن روی ⌘B یا رفتن به منوِ Product (محصول) و انتخاب کردن Build (ساختن)، پروژه را در Xcode بسازید.
وقتی ساخت موفقیتآمیز باشد، نماد زیر را خواهید دید.
دسترسی به کد همرسانیشده در برنامه iOS
برای تأیید اینکه برنامه iOS میتواند با موفقیت به کد از واحد مشترک دسترسی پیدا کند، کارهای زیر را انجام دهید:
- در پروژه iOS، فایل
ContentView.swiftرا در اینجا باز کنید:Sources/View/ContentView.swift -
sharedKitوارد کردن را در بالای فایل اضافه کنید. - نمای «نوشتار» را بهصورت زیر اصلاح کنید تا اطلاعات
Platform_iosKt.platform()در رشته نمایشدادهشده گنجانده شود:
این بهروزرسانی بررسی میکند که آیا برنامه میتواند تابع platform() را از پودمان مشترک فراخوانی کند یا نه، که باید هنگام اجرا در پلاتفرم iOS، «iOS» را برگرداند.
منابع تکمیلی
- اگر در توسعه KMP تازهکار هستید، برای راهنماییهای بیشتر به اسناد رسمی KMP مراجعه کنید.
- اگر در توسعه iOS تازهکار هستید، اسناد اصول Swift را ببینید.
- برای مشکلات رایج راهاندازی KMP، به عیبیابی در شروع سریع KMP مراجعه کنید.
- برای برنامههای نمونه، نمونههای Kotlin چندپلاتفرمی Android را ببینید.