העברת ה-build לקטלוגים של גרסאות

קטלוגים של גרסאות Gradle מאפשרים להוסיף ולתחזק יחסי תלות ופלאגינים באופן שניתן להתאמה לעומס. כשמשתמשים בקטלוגים של גרסאות Gradle, קל יותר לנהל יחסי תלות ופלאגינים כשיש כמה מודולים. במקום להגדיר באופן קשיח שמות וגרסאות של יחסי תלות בקובצי build נפרדים ולעדכן כל רשומה בכל פעם שצריך לשדרג יחס תלות, אתם יכולים ליצור קטלוג גרסאות מרכזי של יחסי תלות שמודולים שונים יכולים להפנות אליהם באופן שמונע שגיאות הקלדה, בעזרת Android Studio.

בדף הזה מופיע מידע בסיסי על העברת אפליקציית Android לקטלוגים של גרסאות. מידע נוסף זמין במאמר הוספת יחסי תלות ב-build ובמסמכי התיעוד של Gradle.

יצירת קובץ קטלוג גרסאות

קודם כל צריך ליצור קובץ קטלוג גרסאות. בתיקייה gradle של פרויקט הבסיס, יוצרים קובץ בשם libs.versions.toml. כברירת מחדל, Gradle מחפש את הקטלוג בקובץ libs.versions.toml, ולכן מומלץ להשתמש בשם ברירת המחדל הזה.

בקובץ libs.versions.toml, מוסיפים את הקטעים הבאים:

[versions]

[libraries]

[plugins]

השימוש בקטעים הוא כזה:

  • בבלוק versions, מגדירים משתנים שמכילים את הגרסאות של יחסי התלות והפלאגינים. אתם משתמשים במשתנים האלה בבלוקים הבאים (הבלוקים libraries ו-plugins).
  • בבלוק libraries, מגדירים את יחסי התלות.
  • בבלוק plugins, מגדירים את הפלאגינים.

שלבי ההעברה

מומלץ לבצע את השלבים לפי הסדר שבו הם מופיעים. ב-build אפשר להשתמש ביחסי תלות ובפלאגינים מסקריפטים ומקטלוגים של build בו-זמנית, אז כדאי להעביר את יחסי התלות והפלאגינים בנפרד.

תהליך ההעברה:

  1. מוסיפים את הרשומה החדשה לקטלוג.
  2. מסנכרנים את פרויקט Android.
  3. מחליפים את הצהרת המחרוזת הקודמת ב-accessor למניעת שגיאות הקלדה בקטלוג.

העברת יחסי תלות

מוסיפים רשומה לכל תלות בקטעים versions ו-libraries בקובץ libs.versions.toml. מסנכרנים את הפרויקט ומחליפים את ההצהרות שלהם בקובצי ה-build בשמות שלהם בקטלוג.

בקטע הקוד הבא מוצג הקובץ build.gradle.kts לפני הסרת התלות:

Kotlin

dependencies {
    implementation("androidx.core:core-ktx:1.9.0")

}

מגניב

dependencies {
    implementation 'androidx.core:core-ktx:1.9.0'

}

בקטע הקוד הזה אפשר לראות איך להגדיר את התלות בקובץ קטלוג הגרסאות:

[versions]
ktx = "1.9.0"

[libraries]
androidx-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "ktx" }

כדי לקבל סיוע טוב יותר בהשלמת קוד בקובצי ה-build, מומלץ לתת שמות לבלוק יחסי התלות בקטלוגים באמצעות אותיות קטנות עם מקפים (כמו androidx-ktx).

בקובץ build.gradle.kts של כל מודול שדורש את יחסי התלות, מגדירים את יחסי התלות לפי השמות שהגדרתם בקובץ TOML.

Kotlin

dependencies {
   implementation(libs.androidx.ktx)

}

מגניב

dependencies {
   implementation libs.androidx.ktx

}

העברת פלאגינים

מוסיפים רשומה לכל פלאגין גם בקטע versions וגם בקטע plugins בקובץ libs.versions.toml. מסנכרנים את הפרויקט ומחליפים את ההצהרות שלהם בבלוק plugins{} בקובצי ה-build בשמות שלהם בקטלוג.

קטע הקוד הזה מציג את הקובץ build.gradle.kts לפני הסרת הפלאגין:

Kotlin

// Top-level `build.gradle.kts` file
plugins {
   id("com.android.application") version "7.4.1" apply false

}

// Module-level `build.gradle.kts` file
plugins {
   id("com.android.application")

}

מגניב

// Top-level `build.gradle` file
plugins {
   id 'com.android.application' version '7.4.1' apply false

}

// Module-level `build.gradle` file
plugins {
   id 'com.android.application'

}

בקטע הקוד הזה מוסבר איך להגדיר את הפלאגין בקובץ קטלוג הגרסאות:

[versions]
androidGradlePlugin = "7.4.1"

[plugins]
android-application = { id = "com.android.application", version.ref = "androidGradlePlugin" }

כמו ביחסי תלות, הפורמט המומלץ לרשומות בקטלוג הבלוקים של plugins הוא dash-case (למשל android-application) כדי לקבל סיוע טוב יותר בהשלמת קוד בקובצי ה-build.

הקוד הבא מראה איך להגדיר את הפלאגין com.android.application בקובצי build.gradle.kts ברמה העליונה וברמת המודול. משתמשים ב-alias לפלאגינים שמגיעים מקובץ קטלוג הגרסאות, וב-id לפלאגינים שלא מגיעים מקובץ קטלוג הגרסאות, כמו פלאגינים של קונבנציות.

Kotlin

// Top-level build.gradle.kts
plugins {
   alias(libs.plugins.android.application) apply false

}

// module build.gradle.kts
plugins {
   alias(libs.plugins.android.application)

}

מגניב

// Top-level build.gradle
plugins {
   alias libs.plugins.android.application apply false

}

// module build.gradle
plugins {
   alias libs.plugins.android.application

}

מידע נוסף

למידע נוסף על אפשרויות נוספות להגדרת קטלוג הגרסאות, עיינו במקורות המידע הבאים: