ניהול מאגרים מרוחקים

כשהתלות היא לא ספרייה מקומית או עץ קבצים, Gradle מחפשת את הקבצים במאגרים באינטרנט שמצוינים חסימה אחת (dependencyResolutionManagement { repositories {...} }) מתוך קובץ settings.gradle. הסדר שבו תציגו את כל המאגרים קובע הסדר שבו Gradle מחפשת במאגרים של כל תלות של פרויקט. לדוגמה, אם קיימת תלות זמינה גם ממאגר A וגם ממאגר B, הראשונה, Gradle, מורידה את התלות ממאגר A.

כברירת מחדל, בפרויקטים חדשים ב-Android Studio מצוין מאגר Maven של Google, וגם מאגר מרכזי של Maven בתור מיקומי המאגרים בקובץ settings.gradle של הפרויקט, כמו בדוגמה הבאה:

Kotlin


dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
    }
}

מגניב


dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
    }
}

אם רוצים ליצור משהו ממאגר מקומי, צריך להשתמש ב-mavenLocal():

Kotlin


dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
        mavenLocal()
    }
}

מגניב


dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
        mavenLocal()
    }
}

לחלופין, אתם יכולים להצהיר על מאגרים ספציפיים של Maven או Ivy באופן הבא:

Kotlin


dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        maven(url = "https://repo.example.com/maven2")
        maven(url = "file://local/repo/")
        ivy(url = "https://repo.example.com/ivy")
    }
}

מגניב


dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        maven {
            url 'https://repo.example.com/maven2'
        }
        maven {
            url 'file://local/repo/'
        }
        ivy {
            url 'https://repo.example.com/ivy'
        }
    }
}

מידע נוסף זמין במאמר מדריך ל-Gradle Repositories.

מאגר Maven של Google

הגרסאות העדכניות ביותר של ספריות Android הבאות זמינות מ- מאגר Maven של Google:

כדי לראות את כל פריטי המידע הזמינים שנוצרו בתהליך הפיתוח (Artifact) אפשר להיכנס לכתובת אינדקס מאגר Maven של Google (מידע נוסף על גישה פרוגרמטית מפורט בהמשך).

כדי להוסיף את אחת מהספריות האלה ל-build, צריך לכלול את מאגר Maven של Google בקובץ build.gradle.kts ברמה העליונה:

Kotlin


dependencyResolutionManagement {

    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()

        // If you're using a version of Gradle lower than 4.1, you must instead use:
        // maven {
        //     url = "https://maven.google.com"
        // }
        // An alternative URL is "https://dl.google.com/dl/android/maven2/".
    }
}

מגניב


dependencyResolutionManagement {

    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()

        // If you're using a version of Gradle lower than 4.1, you must instead use:
        // maven {
        //     url 'https://maven.google.com'
        // }
        // An alternative URL is 'https://dl.google.com/dl/android/maven2/'.
    }
}

אחר כך מוסיפים את הספרייה הרצויה לבלוק dependencies של המודול. לדוגמה,appcompat Library נראה כך:

Kotlin


dependencies {
    implementation("com.android.support:appcompat-v7:28.0.0")
}

מגניב


dependencies {
    implementation 'androidx.appcompat:appcompat:1.6.1'
}

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

גישה פרוגרמטית

כדי לקבל גישה פרוגרמטית לפריטי Maven של Google, אפשר לקבל רשימת XML של קבוצות פריטי מידע שנוצרו בתהליך פיתוח (Artifact) מהכתובת maven.google.com/master-index.xml. לאחר מכן, עבור כל קבוצה, ניתן לראות את שמות הספריות והגרסאות שלה בכתובת:

maven.google.com/group_path/group-index.xml

לדוגמה, ספריות בקבוצה android.arch.lifecycle מופיעות בכתובת maven.google.com/android/arch/lifecycle/group-index.xml

ניתן גם להוריד את קובצי ה-POM וה-JAR בכתובת:

maven.google.com/group_path/library/version /library-version.ext

לדוגמה: maven.google.com/android/arch/lifecycle/compiler/1.0.0/compiler-1. 0.0.pom

מאגר אופליין מ-SDK Manager

לספריות שלא זמינות ממאגר Google Maven (בדרך כלל ישנות יותר גרסאות של הספרייה), עליך להוריד את החבילה אופליין של Google Repository מ-SDK Manager.

אחר כך אפשר יהיה להוסיף את הספריות האלה לבלוק dependencies כרגיל.

הספריות אופליין נשמרות ב android_sdk/extras/