כדי ליצור מודול Kotlin Multiplatform (KMP) בפרויקט ל-Android, משתמשים בתבנית Kotlin Multiplatform Shared Module, שזמינה ב-Android Studio Meerkat ובפלאגין של Android Gradle מגרסה 8.8.0 ואילך.
תבנית המודול מאפשרת ליצור באופן אוטומטי מודול חדש עם הגדרות מינימליות שמטרגטות פלטפורמות של Android ו-iOS. KMP תומך גם ביעדים אחרים, כמו מחשב ואינטרנט, שאפשר להוסיף למודול מאוחר יותר. לרשימה המלאה של הפלטפורמות הנתמכות כדי להצהיר על יעד, עיינו בקטע יעדים בחומר העזר של Multiplatform Gradle DSL.
הגדרת המודול המשותף של KMP
כדי ליצור מודול משותף של KMP:
- לוחצים על קובץ > חדש > מודול חדש.
- בוחרים את התבנית Kotlin Multiplatform Shared Module בחלונית Templates:
השדות בתבנית הם:
- שם המודול – מגדיר את שם המודול של Gradle, וגם את שם ה-framework של iOS (אפשר לשנות אותו אחר כך)
- שם החבילה – מגדיר את שם החבילה של הקבצים במודול הזה
- לוחצים על Finish ומאפשרים ל-Gradle להסתנכרן עם הפרויקט. יכול להיות שתתבקשו גם להוסיף את קובצי המודול החדשים לניהול מקורות.
בסיום, המודול המשותף החדש יופיע ב-Project View ב-Android Studio, יחד עם קבוצת מקורות לכל פלטפורמה.
קישור המודול המשותף לאפליקציה ל-Android
אשף המודולים לא מוסיף את המודול החדש שנוצר כתלות לאף מודול קיים. השלב הבא הוא לקשר את המודול המשותף לאחד מהמודולים הקיימים של Gradle, בדומה ליחסי תלות אחרים של Android:
dependencies {
...
implementation(project(":shared"))
}
אחרי שתפעילו את התכונה, תוכלו לגשת לקוד כרגיל. באפליקציה ל-Android, אתם יכולים לגשת לקוד שזמין ב-androidMain או ב-commonMain.
מידע נוסף על מבנה הפרויקט של Kotlin Multiplatform זמין במאמר היסודות של מבנה הפרויקט של Kotlin Multiplatform.
הגדרת המודול המשותף לאפליקציה ל-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 ובוחרים באפשרות Open In (פתיחה ב-) ואז באפשרות Open in Associated Application (פתיחה באפליקציה המשויכת). האפליקציה ל-iOS תיפתח ב-Xcode.
- פותחים את הגדרות הפרויקט בלחיצה כפולה על שם הפרויקט בסרגל הניווט של הפרויקט.
- משנים את שם ברירת המחדל של Run Script ל-Compile Kotlin Framework כדי לזהות טוב יותר מה השלב הזה עושה. לוחצים לחיצה כפולה על הכותרת Run Script כדי לערוך אותה.
- מרחיבים את שלב ה-build, ובשדה הטקסט Shell מזינים את קוד הסקריפט הבא:
גוררים את השלב Run Script (הפעלת סקריפט) לפני השלב Compile Sources (הידור מקורות).
איור 6. מריצים את שלב ה-build של הסקריפט לפני הידור המקורות בונים את הפרויקט ב-Xcode על ידי לחיצה על ⌘B או מעבר לתפריט Product ובחירה באפשרות Build.
כשה-build יסתיים, יופיע הסמל הבא.
גישה לקוד המשותף באפליקציה ל-iOS
כדי לוודא שהאפליקציה ל-iOS יכולה לגשת לקוד מהמודול המשותף:
- בפרויקט ל-iOS, פותחים את הקובץ
ContentView.swiftבמיקום:Sources/View/ContentView.swift - מוסיפים את הייבוא
sharedKitבחלק העליון של הקובץ. - משנים את תצוגת הטקסט כך שתכלול את המידע של
Platform_iosKt.platform()במחרוזת שמוצגת, באופן הבא:
העדכון הזה בודק אם האפליקציה יכולה להפעיל את הפונקציה platform() מהמודול המשותף, שאמורה להחזיר את הערך "iOS" כשהיא פועלת בפלטפורמת iOS.
מקורות מידע נוספים
- אם אתם חדשים בפיתוח KMP, עיינו במסמכי התיעוד הרשמיים של KMP כדי לקבל מדריכים נוספים.
- אם אתם חדשים בפיתוח ל-iOS, כדאי לעיין במסמכי התיעוד בנושא Swift Basics.
- כדי לפתור בעיות נפוצות בהגדרת KMP, אפשר לעיין בקטע פתרון בעיות במדריך למתחילים של KMP.
- אפליקציות לדוגמה זמינות במאמר דוגמאות ל-Android Kotlin Multiplatform.