从 Android Studio Dolphin 2021.3.1 之后,国内源的切换配置就从 build.gradle 文件改到了 settings.gradle 文件。
修改之后,执行一下 Sync 就可以了。
但是如果遇到国内源没有的依赖,就需要取消前面的几个 google maven 源的注释。因为依赖是按照配置源的顺序来查找的,会优先从排在前面的源去下载。
具体配置
2025-03-20 验证通过,下载很快
pluginManagement {
repositories {
// 注释默认仓库以加速构建
// google()
// mavenCentral()
// gradlePluginPortal()
// 添加阿里云镜像源
maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
maven { url 'https://maven.aliyun.com/repository/public' }
maven { url 'https://maven.aliyun.com/repository/central' }
}
}
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
// 注释默认仓库
// google()
// mavenCentral()
// 添加阿里云镜像源
maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
maven { url 'https://maven.aliyun.com/repository/public' }
maven { url 'https://maven.aliyun.com/repository/central' }
}
}
rootProject.name = "Test Compose"
include ':app'
最快的方式
因为在 Android Studio 中新建项目之后,会自动开始下载相关的依赖包,很慢。
所以,合理的做法是,新建项目之后,由 android 视图切换到 Project 视图,找到并修改 settings.gradle 文件,修改之后再次打开项目就可以了执行同步了。
拉取策略
gradle pluginManagement repositories 配置了多个源,如果一个依赖在多个源中存在,会优先从哪个源拉取呢?
在Gradle中,当你配置了多个仓库时,并且这些仓库都包含相同的依赖项时,Gradle会按照你指定的顺序优先使用这些仓库。
具体来说,Gradle会逐个检查每个仓库,以找到包含所需依赖项的第一个仓库。一旦找到该依赖项,Gradle将从该仓库中下载它,并停止搜索其他仓库。
因此,如果你想要优先使用某个特定的仓库,可以将其列在仓库列表的开头。例如:
pluginManagement {
repositories {
maven { url 'https://my-custom-repo.com' }
mavenCentral()
}
}
在上面的例子中,Gradle会首先搜索https://my-custom-repo.com
,如果找不到所需的依赖项,则会继续搜索Maven Central仓库。
请注意,Gradle默认情况下已经配置了几个常用仓库,如Maven Central和JCenter等。因此,除非你有特殊需求或使用私有仓库,否则通常不需要手动配置多个仓库。
gradle.kts 格式
2025-03-02:测试成功,还是 DeepSeek 给出的答案靠谱。
对应的调整为:
pluginManagement {
repositories {
google {
content {
includeGroupByRegex("com\\.android.*")
includeGroupByRegex("com\\.google.*")
includeGroupByRegex("androidx.*")
}
}
maven("https://maven.aliyun.com/repository/public") // 阿里云镜像
maven("https://maven.aliyun.com/repository/central") // Central 仓库镜像
maven("https://maven.aliyun.com/repository/gradle-plugin") // Gradle 插件镜像
mavenCentral()
gradlePluginPortal()
}
}
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
maven("https://maven.aliyun.com/repository/public")
maven("https://maven.aliyun.com/repository/central")
google()
mavenCentral()
}
}
rootProject.name = "AndroidSpeechRecognizer"
include(":app")
微信关注我哦 👍
我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式