1.项目级配置

1.1 创建一个gradle-mirror.ps1文件,粘贴以下代码:

param(
    # 项目根目录路径,默认当前目录
    [string]$projectPath = "."
)

# wrapper 配置文件路径
$wrapperFile = Join-Path $projectPath "gradle\wrapper\gradle-wrapper.properties"

if (-Not (Test-Path $wrapperFile)) {
    Write-Host "未找到 $wrapperFile"
    exit 1
}

# 读取文件并替换
(Get-Content $wrapperFile) `
    -replace "https\\://services\.gradle\.org/distributions", "https\://mirrors.cloud.tencent.com/gradle" `
    -replace "-bin\.zip", "-all.zip" `
    | Set-Content $wrapperFile

Write-Host "已更新 $wrapperFile"

1.2 Android Studio 外部工具(External Tools)

1.3 使用方法

2.全局配置

因为我要使用kotlin,所以创建~/.gradle/init.gradle.kts文件,粘贴以下内容:
从这里抄的

@file:Suppress("UnstableApiUsage")

import org.gradle.util.GradleVersion

val urlMappingsTencent = mapOf(
    "https://repo.maven.apache.org/maven2" to "https://mirrors.tencent.com/nexus/repository/maven-public/",
    "https://dl.google.com/dl/android/maven2" to "https://mirrors.tencent.com/nexus/repository/maven-public/",
    "https://plugins.gradle.org/m2" to "https://mirrors.tencent.com/nexus/repository/gradle-plugins/"
)

val urlMappingsAliyun = mapOf(
    "https://repo.maven.apache.org/maven2" to "https://maven.aliyun.com/repository/central/",
    "https://dl.google.com/dl/android/maven2" to "https://maven.aliyun.com/repository/google/",
    "https://plugins.gradle.org/m2" to "https://maven.aliyun.com/repository/gradle-plugin/",
)

/**
 * 启用镜像地址映射
 */
fun RepositoryHandler.enableMirror() {
    all {
        if (this is MavenArtifactRepository) {
            val originalUrl = this.url.toString().removeSuffix("/")
            urlMappingsTencent[originalUrl]?.let {
                logger.lifecycle("Repository $name [$url] is mirrored to $it")
                setUrl(it)
            }
        }
    }
}

gradle.allprojects {
    buildscript {
        repositories.enableMirror()
    }
    repositories.enableMirror()
}

gradle.beforeSettings {
    pluginManagement.repositories.enableMirror()
    // 6.8 及更高版本执行 DependencyResolutionManagement 配置
    val versionR68 = GradleVersion.version("6.8")
    if (GradleVersion.current() >= versionR68) {
        val getDrm = settings.javaClass.getDeclaredMethod("getDependencyResolutionManagement")
        val drm = getDrm.invoke(settings)
        val getRepos = drm.javaClass.getDeclaredMethod("getRepositories")
        val repos = getRepos.invoke(drm) as RepositoryHandler
        repos.enableMirror()
        println("Gradle ${gradle.gradleVersion} DependencyResolutionManagement Configured $settings")
    } else {
        println("Gradle ${gradle.gradleVersion} DependencyResolutionManagement Ignored $settings")
    }
}
❤️🐾 转载文章请注明出处喵,谢谢喵!🐾❤️