הגדרת הסביבה (Kotlin Multiplatform)

Kotlin Multiplatform‏ (KMP) מאפשרת לשתף קוד Kotlin בפלטפורמות שונות. לפני שמתחילים לפתח אפליקציות באמצעות KMP, צריך להגדיר את הסביבה כפי שמתואר במסמך הזה. אפשר גם לעיין במסמכי העזרה הרשמיים של JetBrain.

התקנה או עדכון של הכלים הנדרשים

  • מתקינים או מעדכנים לגרסה היציבה האחרונה של Android Studio.
  • כדי למנוע בעיות תאימות, מעדכנים את הפלאגין של Kotlin שמצורף ל-Android Studio לגרסה האחרונה.
  • (אופציונלי) לפיתוח ל-iOS, מתקינים את Xcode כדי ליצור את ממשק המשתמש ולהוסיף קוד Swift או Objective-C לפי הצורך.

יצירת פרויקט Kotlin Multiplatform

אפשר להשתמש באשף Kotlin Multiplatform של JetBrains כדי ליצור פרויקט KMP חדש. חשוב לבחור באפשרות Do not share UI כדי לשמור על ממשק המשתמש המקורי.

מבנה הפרויקט

לפרויקטים ב-KMP יש מבנה דומה לזה של פרויקטים ב-Android.

פרויקט KMP מכיל מודולים ספציפיים לפלטפורמה וכן מודול משותף. מוסיפים את הקוד הספציפי לפלטפורמה למודול הרלוונטי. לדוגמה, מוסיפים את ממשק המשתמש של אפליקציית Android במודול androidApp ואת ממשק המשתמש של אפליקציית iOS ב-iosApp. כל קוד שרוצים לשתף בין הפלטפורמות צריך להוסיף למודול shared.

המודול המשותף משתמש ב-Gradle כמערכת build, בדיוק כמו שאר הפרויקט. אפשר להצהיר על יחסי תלות נפוצים ותלות ספציפיות לפלטפורמה באמצעות קבוצות מקורות (sourcesets). לדוגמה, אם האפליקציה שלכם משתמשת ב-Ktor לצורכי רשת, תצטרכו להוסיף יחסי תלות של OkHttp ל-Android ושל darwin ל-iOS. חשוב לזכור שלספריות מסוימות נדרשות רק יחסי תלות נפוצים, ולא יחסי תלות ספציפיים לפלטפורמה.

sourceSets {
   commonMain.dependencies {
       //put your multiplatform dependencies here
       //...
       implementation(libs.ktor.client.core)
       implementation(libs.ktor.client.content.negotiation)
       implementation(libs.ktor.serialization.kotlinx.json)
       //...
   }
   androidMain.dependencies {
       implementation(libs.ktor.client.okhttp)
   }
   iosMain.dependencies {
       implementation(libs.ktor.client.darwin)
   }
}

כשמוסיפים ספרייה חדשה למודול המשותף של האפליקציה, חשוב לבדוק את יחסי התלות הנדרשים לכל פלטפורמה.