آموزش Kotlin Multiplatform(مقدمه)

توی سری پست های "کاتلین و چندین پلتفرم" ما کتاب Kotlin Multiplatform by Tutorials رو (بطور خلاصه و مفید) واشکافی میکنیم.میدونم هنوز تو حالت beta قرار داره، ولی برای خود من بشخصه برام جالب و فانه که تکنولوژی های جدید رو دنبال کنم.تو این پست، مقدمه این کتاب رو بررسی میکنیم و درباره اینا حرف میزنیم:* کاتلین multiplatform* کلید واژه های expect و actual* و build اولین پروژه مقدمه:کاتلین روی پلتفرم هایی که jvm رو پشتیبانی میکنن کار میکنه (مثل پروژه های اندروید) و stable هم هست، ولی برای پلتفرم های دیگه که jvm رو پشتیبانی نمیکنن از کاتلین native استفاده میکنه و هنوز تو حالت beta هستش. کاتلین native کد های کاتلین رو به bytecode های بومی کامپایل میکنه که اجرا میشن روی سیستم عامل های apple، ویندوز و لینوکس. و برای وب هم، کد های کاتلین کامپایل میشه به JavaScript و html که بهش میگن Kotlin-js.معمولا تو پروژه ها چند لایه های مختلف داریم مثل: لایه network، لایه database، منطق بیزینس(business logic) و لایه UI.توی پروژه های kotlin multiplatform، شما یه کد base برای business logic تون خواهید داشت برای همه پلتفرم ها؛ میتونید لایه database رو با لایبرری SQLDelight بنویسید برای همه پلتفرم ها. اما kotlin multiplatform لایه UI رو فراهم میکنه و شما میتونید UI رو برای iOS با Swift بزنید و برای desktop میتونید از compose desktop استفاده کنید و برای اندروید هم که compose هستش. اینکه Kotlin multiplatform بهمون اجازه میده که UI رو با UI system اون پلتفرم بزنیم بنظر من واقعا یه مزیت بزرگه.خب بیاید شروع کنیم:پلاگین kotlin multiplatform رو توی Android Studio نصب کنین. و restart کنین. روی New Project کلیک و Kotlin multiplatform app رو انتخاب کنین.اسم اپلیکیشن اندروید، iOS تونو انتخاب کنین. اسم ماژول shared هم بزارید shared باشه خوبه. و finish رو بزنید تا پروژه build بشه.کلیدواژه های kotlin multiplatformحالا که پروژه رو ساختید لازمه دوتا کلیدواژه های kotlin رو که برای پشتیبانی از KMP(kotlin multiplatform project) اومده رو بدونید: expect و actual.کلیدواژه expect تقریبا مثل abstract class/fun، یعنی ما اینو تو پوشه commonMain* تعریف میکنیم (حالا میتونه expect fun/class باشه) و انتظار داریم که توی هر پلتفرم (androidMain و iosMain) پیاده سازی بشه(مثل abstract class/fun که پیاده سازی شون میکردیم) حالا این پیاده سازی رو هم با کلیدواژه actual تعریف میکنیم.خب حالا بریده توی commonMain و Platform.kt رو باز کنید.expect class Platform() { val platform: String }میبینید که از expect استفاده کرده و این به ما میگه که: توی هر پلتفرم باید یه actual کلاسی بنام Platform داشته باشیم که این کلاس رو پیاده سازی کنه و باید یه variable از نوع string داشته باشه بنام platform(اینم باید actual var باید باشه قاعدتا).حالا برید actual کلاس Platform.kt رو توی Android و iOS باز کنید.actual class Platform actual constructor() { actual val platform: String = &quotAndroid ${android.os.Build.VERSION.SDK_INT}&quot }نکته: توی commoMain هرچی مینویسیم باید کاتلین (خالص) باشه و نباید هیچ dependency یا هرچی که مربوط به پروژه های اندرویدی هست رو قرار بدیم، چون ما داریم برای چند پلتفرم مختلف کد رو به اشتراک میزاریم نه فقط اندروید.حالا اپ رو run کنید و .... شما اولین پروژه multiplatform تون رو با استفاده از kotlin ساختین!نکته: برای خروجی گرفتن iOS باید تو mac از xcode استفاده کنین.خُبب! امیدوارم خوشتون اومده باشه، اگه نظری، پیشنهادی، باگی چیزی بود لطفا تو کامنت ها به اشتراک بذارین.کانال تلگرام Android Corner