管理远程仓库

当您的依赖项不是本地库或文件树时,Gradle 会在 settings.gradle 文件的 dependencyResolutionManagement { repositories {...} } 代码块中指定的所有在线代码库中查找相关文件。各个仓库的列出顺序决定了 Gradle 在这些仓库中搜索各个项目依赖项的顺序。例如,如果从代码库 A 和 B 均可获得某个依赖项,而您先列出了代码库 A,则 Gradle 会从代码库 A 下载该依赖项。

默认情况下,新的 Android Studio 项目会在项目的 settings.gradle 文件中将 Google 的 Maven 制品库Maven 中央制品库指定为仓库位置,如下所示:

Kotlin

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

Groovy

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()
    }
}

Groovy

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")
    }
}

Groovy

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 代码库指南

Google 的 Maven 制品库

Google 的 Maven 制品库中提供了以下 Android 库的最新版本:

您可以在 Google 的 Maven 制品库索引中查看所有可用的工件(如需了解以编程方式访问,请参阅下文)。

如需将其中某个库添加到您的 build 中,请在顶级 build.gradle.kts 文件中包含 Google 的 Maven 代码库:

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/".
    }
}

Groovy

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 库如下所示:

Kotlin

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

Groovy

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

不过,如果您在尝试使用旧版上述库时依赖项失败,则表明 Maven 代码库中未提供该版本,您必须从离线代码库获取该库。

以编程方式访问

如需以编程方式访问 Google 的 Maven 工件,可以从 maven.google.com/master-index.xml 获取工件组的 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 管理器中的离线仓库

对于无法从 Google Maven 制品库中获得的库(通常是旧版库),您必须从 SDK 管理器下载离线 Google 仓库软件包。

然后,您可以照常将这些库添加到 dependencies 代码块中。

离线库保存在 android_sdk/extras/ 中。