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

更新日期: 2025-03-20 阅读次数: 16038 字数: 502 分类: Android

从 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 聊聊, 查看更多联系方式