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 小时前
安卓工控屏静默连WiFi全攻略
android
极梦网络无忧1 小时前
Android无障碍服务实现抖音直播间界面监控(场控助手核心原理)
android
call me by ur name2 小时前
ERNIE 5.0 Technical Report论文解读
android·开发语言·人工智能·机器学习·ai·kotlin
kerli2 小时前
Compose 组件:Box 核心参数及其 Bias 算法
android·前端
BLUcoding3 小时前
Android 常用控件及核心属性
android
遥不可及zzz3 小时前
[特殊字符] Android AAB 一键安装工具配置指南
android·macos
私人珍藏库3 小时前
【Android】一键硬核锁手机
android·智能手机·app·工具·软件
TTTao23334 小时前
自用Android项目框架备份
android
沃尔威武4 小时前
性能调优实战:从火焰图定位到SQL优化的全流程
android·数据库·sql
Fᴏʀ ʏ꯭ᴏ꯭ᴜ꯭.5 小时前
基于MySQL一主一从环境添加多个新从库
android·mysql·adb