העברת ה-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, מגדירים את הפלאגינים.

שלבים בהעברה

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

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

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

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

מוסיפים רשומה לכל תלות בקטעים 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" }

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

בקובץ 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" }

בדומה לתלות, מומלץ להשתמש בפורמט kebab case (למשל android-application) עבור רשומות plugins בקטלוג הבלוקים כדי לשפר את ההשלמה האוטומטית של הקוד בקובצי ה-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

}

מידע נוסף

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