新版本 Android Studio settings.gradle 中切换国内源

更新日期: 2023-08-09 阅读次数: 6466 字数: 357 分类: Android

从 Android Studio Dolphin 2021.3.1 之后,国内源的切换配置就从 build.gradle 文件改到了 settings.gradle 文件。

修改之后,执行一下 Sync 就可以了。

具体配置

pluginManagement {
    repositories {
        maven { url 'https://plugins.gradle.org/m2/' }
        maven { url 'https://maven.aliyun.com/nexus/content/repositories/google' }
        maven { url 'https://maven.aliyun.com/nexus/content/groups/public' }
        maven { url 'https://maven.aliyun.com/nexus/content/repositories/jcenter'}
        gradlePluginPortal()
        google()
        mavenCentral()
    }
}
dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        maven { url 'https://plugins.gradle.org/m2/' }
        maven { url 'https://maven.aliyun.com/nexus/content/repositories/google' }
        maven { url 'https://maven.aliyun.com/nexus/content/groups/public' }
        maven { url 'https://maven.aliyun.com/nexus/content/repositories/jcenter'}
        google()
        mavenCentral()
    }
}
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 格式

对应的调整为:

maven { url = uri("https://plugins.gradle.org/m2/") }
maven { url = uri("https://maven.aliyun.com/nexus/content/repositories/google") }
maven { url = uri("https://maven.aliyun.com/nexus/content/groups/public") }
maven { url = uri("https://maven.aliyun.com/nexus/content/repositories/jcenter") }

关于作者 🌱

我是来自山东烟台的一名开发者,有敢兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式