ל-Kotlin Multiplatform יש פלאגין Gradle להגדרת מודול הספרייה.
הפלאגין com.android.kotlin.multiplatform.library
הוא תחליף רשמי לשיטה הקודמת להוספת יעדי Android לספריות KMP באמצעות פלאגין Android Gradle רגיל (com.android.library
).
הגישה הקודמת הוצאה משימוש לטובת הפלאגין, שנקרא גם פלאגין Android-KMP. המשך השימוש בתוסף com.android.library
ל-KMP לא ייתמך יותר על ידי JetBrains ולא ייהנה מעדכונים ושיפורים עתידיים.
כדי לעבור לפלאגין הזה, אפשר לעיין בקטע החלת הפלאגין Android-KMP.
תכונות עיקריות והבדלים
התוסף Android-KMP מותאם במיוחד לפרויקטים של KMP, ויש לו כמה הבדלים מהותיים מהתוסף הרגיל com.android.library
:
ארכיטקטורה של וריאנט יחיד: התוסף משתמש בווריאנט יחיד, ומסיר את התמיכה בטעמי מוצר ובסוגי build, מה שמפשט את ההגדרה ומשפר את ביצועי ה-build.
אופטימיזציה ל-KMP: הפלאגין מיועד לספריות KMP, עם התמקדות בקוד Kotlin משותף וביכולת פעולה הדדית, ללא תמיכה ב-AIDL, ב-RenderScript וב-builds מקוריים ספציפיים ל-Android.
בדיקות מושבתות כברירת מחדל: גם בדיקות יחידה וגם בדיקות מכשיר (instrumentation) מושבתות כברירת מחדל כדי לשפר את מהירות הבנייה. אפשר להפעיל אותם אם צריך.
אין תוסף Android ברמה העליונה: ההגדרה מתבצעת באמצעות בלוק
androidLibrary
ב-Gradle KMP DSL, ושומרת על מבנה פרויקט KMP עקבי. אין חסימה של התוסףandroid
ברמה העליונה.הסכמה לשימוש בהידור Java: הידור Java מושבת כברירת מחדל. כדי להפעיל את האפשרות, משתמשים ב-
withJava()
בבלוקandroidLibrary
. כך משפרים את זמני ה-build כשאין צורך בהידור של Java.
היתרונות של הפלאגין של ספריית Android-KMP
התוסף Android-KMP מספק את היתרונות הבאים לפרויקטים של KMP:
שיפור הביצועים והיציבות של ה-build: הוא מתוכנן למהירויות build אופטימליות וליציבות משופרת בפרויקטים של KMP. ההתמקדות שלו בתהליכי עבודה של KMP תורמת לתהליך בנייה יעיל ואמין יותר.
שילוב משופר של IDE: הוא מספק השלמת קוד, ניווט, ניפוי באגים וחוויית פיתוח משופרים באופן כללי כשעובדים עם ספריות KMP Android.
הגדרה פשוטה יותר של פרויקטים: הפלאגין מפשט את ההגדרה של פרויקטים ב-KMP על ידי הסרת מורכבויות ספציפיות ל-Android, כמו וריאציות של build. כך קובצי ה-build יהיו נקיים יותר וקל יותר לתחזק אותם. בעבר, שימוש בתוסף
com.android.library
בפרויקט KMP יכול היה ליצור שמות מבלבלים של קבוצות מקור, כמוandroidAndroidTest
. מוסכמת השמות הזו הייתה פחות אינטואיטיבית למפתחים שמכירים את מבני הפרויקטים הרגילים של KMP.
החלת הפלאגין Android-KMP על מודול קיים
כדי להחיל את הפלאגין Android-KMP על מודול ספרייה קיים של KMP, צריך לבצע את השלבים הבאים:
הצהרה על יישומי פלאגין בקטלוג הגרסאות. פותחים את קובץ ה-TOML של קטלוג הגרסאות (בדרך כלל
gradle/libs.versions.toml
) ומוסיפים את הקטע [plugins]:# To check the version number of the latest Kotlin release, go to # https://kotlinlang.org/docs/releases.html [versions] androidGradlePlugin = "8.12.0" kotlin = "KOTLIN_VERSION" [plugins] kotlin-multiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" } android-kotlin-multiplatform-library = { id = "com.android.kotlin.multiplatform.library", version.ref = "androidGradlePlugin" }
מחילים את הצהרת הפלאגין בקובץ הבנייה ברמה הבסיסית. פותחים את הקובץ
build.gradle.kts
שנמצא בספריית הבסיס של הפרויקט. מוסיפים את הכינויים של התוסף לבלוקplugins
באמצעותapply false
. כך כינויי הפלאגין זמינים לכל תתי הפרויקטים בלי שהלוגיקה של הפלאגין תחול על פרויקט הבסיס עצמו.Kotlin
// Root build.gradle.kts file plugins { alias(libs.plugins.kotlin.multiplatform) apply false // Add the following alias(libs.plugins.android.kotlin.multiplatform.library) apply false }
גרוב
// Root build.gradle file plugins { alias(libs.plugins.kotlin.multiplatform) apply false // Add the following alias(libs.plugins.android.kotlin.multiplatform.library) apply false }
החלת הפלאגין בקובץ build של מודול בספריית KMP. פותחים את הקובץ
build.gradle.kts
במודול הספרייה של KMP ומחילים את הפלאגין בחלק העליון של הקובץ בתוך הבלוקplugins
:Kotlin
// Module-specific build.gradle.kts file plugins { alias(libs.plugins.kotlin.multiplatform) // Add the following alias(libs.plugins.android.kotlin.multiplatform.library) }
גרוב
// Module-specific build.gradle file plugins { alias(libs.plugins.kotlin.multiplatform) // Add the following alias(libs.plugins.android.kotlin.multiplatform.library) }
הגדרת יעד KMP ל-Android. מגדירים את הבלוק Kotlin Multiplatform (
kotlin
) כדי להגדיר את יעד Android. בבלוקkotlin
, מציינים את יעד Android באמצעותandroidLibrary
:Kotlin
kotlin { androidLibrary { namespace = "com.example.kmpfirstlib" compileSdk = 33 minSdk = 24 withJava() // enable java compilation support withHostTestBuilder {}.configure {} withDeviceTestBuilder { sourceSetTreeName = "test" } compilations.configureEach { compilerOptions.configure { jvmTarget.set( org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_1_8 ) } } } sourceSets { androidMain { dependencies { // Add Android-specific dependencies here } } getByName("androidHostTest") { dependencies { } } getByName("androidDeviceTest") { dependencies { } } } // ... other targets (JVM, iOS, etc.) ... }
גרוב
kotlin { androidLibrary { namespace = "com.example.kmpfirstlib" compileSdk = 33 minSdk = 24 withJava() // enable java compilation support withHostTestBuilder {}.configure {} withDeviceTestBuilder { it.sourceSetTreeName = "test" } compilations.configureEach { compilerOptions.options.jvmTarget.set( org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_1_8 ) } } sourceSets { androidMain { dependencies { } } androidHostTest { dependencies { } } androidDeviceTest { dependencies { } } } // ... other targets (JVM, iOS, etc.) ... }
שמירת השינויים. אחרי שמחילים את הפלאגין ומגדירים את הבלוק
kotlin
מסנכרנים את פרויקט Gradle כדי להחיל את השינויים.
מומלץ עבורך
- הערה: טקסט הקישור מוצג כש-JavaScript מושבת
- הגדרת הסביבה
- הוספת מודול KMP לפרויקט