gradle set up

C:\Users\Administrator.gradle\gradle.properties

config 复制代码
## For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html
#
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
# Default value: -Xmx1024m -XX:MaxPermSize=256m
# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
#
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. For more details, visit
# https://developer.android.com/r/tools/gradle-multi-project-decoupled-projects
# org.gradle.parallel=true
#Fri Aug 01 12:16:42 CST 2025
systemProp.http.proxyHost=proxy.app
systemProp.http.proxyPort=8080
systemProp.https.proxyHost=proxy.app
systemProp.https.proxyPort=8080

C:\Users\Administrator.gradle\init.gradle.kts

config 复制代码
val CENTRAL_URL = "https://repo.maven.apache.org/maven2"
val JCENTER_URL = "https://jcenter.bintray.com"
val GOOGLE_URL = "https://dl.google.com/dl/android/maven2"
val GRADLE_PLUGIN_URL = "https://plugins.gradle.org/m2"

val MIRROR_CENTRAL_URL = "https://maven.aliyun.com/repository/central"
val MIRROR_JCENTER_URL = "https://maven.aliyun.com/repository/jcenter"
val MIRROR_GOOGLE_URL = "https://maven.aliyun.com/repository/google"
val MIRROR_GRADLE_PLUGIN_URL = "https://maven.aliyun.com/repository/gradle-plugin"

val mirrorMap = mapOf(
    CENTRAL_URL to MIRROR_CENTRAL_URL,
    JCENTER_URL to MIRROR_JCENTER_URL,
    GOOGLE_URL to MIRROR_GOOGLE_URL,
    GRADLE_PLUGIN_URL to MIRROR_GRADLE_PLUGIN_URL
)

fun String.normalizeUrl(): String = this.trimEnd('/')


fun RepositoryHandler.replaceWithMirrorRepos(logger: Logger) {
    val mavenRepos = this.toList()
        .filterIsInstance<MavenArtifactRepository>()
        .associateWith { it.url.toString().normalizeUrl() }
    
    val applyRepos = mavenRepos.filter { (_, url) -> 
        mirrorMap.containsKey(url) && !mavenRepos.containsValue(mirrorMap[url])
    }

    applyRepos.forEach { (repo, url) ->
        val mirrorUrl = mirrorMap[url]!!
        val nrp = maven { setUrl(mirrorUrl) }
        remove(nrp)
        val index = indexOf(repo)
        add(index, nrp)
        remove(repo)
        logger.lifecycle("添加镜像(${index}): $url -> $mirrorUrl")
    }
    applyRepos.keys.forEach { repo ->
        addLast(repo)
    }
}


gradle.settingsEvaluated {
    pluginManagement {
        repositories {
            replaceWithMirrorRepos(logger)
        }
    }
    dependencyResolutionManagement {
        repositories {
            replaceWithMirrorRepos(logger)
        }
    }
}

allprojects {
    buildscript {
        repositories {
            replaceWithMirrorRepos(logger)
        }
    }
    repositories {
        replaceWithMirrorRepos(logger)
    }
}
相关推荐
川石课堂软件测试1 小时前
Android和iOS APP平台测试的区别
android·数据库·ios·oracle·单元测试·测试用例·cocoa
花卷HJ1 小时前
Android 通用 BaseDialog 实现:支持 ViewBinding + 全屏布局 + 加载弹窗
android
生产队队长1 小时前
Linux:awk进行行列转换操作
android·linux·运维
叶羽西2 小时前
Android15 EVS HAL中使用Camera HAL Provider接口
android
2501_915918412 小时前
除了 Perfdog,如何在 Windows 环境中完成 iOS App 的性能测试工作
android·ios·小程序·https·uni-app·iphone·webview
泓博2 小时前
Android状态栏文字图标设置失效
android·composer
叶羽西3 小时前
Android15系统中(娱乐框架和车机框架)中对摄像头的朝向是怎么定义的
android
Java小白中的菜鸟3 小时前
安卓studio链接夜神模拟器的一些问题
android
莫比乌斯环3 小时前
【Android技能点】深入解析 Android 中 Handler、Looper 和 Message 的关系及全局监听方案
android·消息队列
编程之路从0到13 小时前
React Native新架构之Android端初始化源码分析
android·react native·源码阅读