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

文章目录

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

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

    但是如果遇到国内源没有的依赖,就需要取消前面的几个 google maven 源的注释。因为依赖是按照配置源的顺序来查找的,会优先从排在前面的源去下载。

    具体配置

    2025-08-17 验证通过,下载很快

    pluginManagement {
        repositories {
            // 添加阿里云镜像源
            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' }
            
            // 默认仓库不要注释,防止上面源找不到的可以从这里补录
            google()
            mavenCentral()
            gradlePluginPortal()
        }
    }
    dependencyResolutionManagement {
        repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
        repositories {
            // 添加阿里云镜像源
            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' }
    
            // 默认仓库
            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 格式

    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 聊聊,或者关注我的个人公众号“大象工具”, 查看更多联系方式