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)
    }
}
相关推荐
JMchen12336 分钟前
Android UDP编程:实现高效实时通信的全面指南
android·经验分享·网络协议·udp·kotlin
黄林晴1 小时前
Android 17 再曝猛料:通知栏和快捷设置终于分家了,这操作等了十年
android
有位神秘人2 小时前
Android获取设备中本地音频
android·音视频
JMchen1232 小时前
Android网络安全实战:从HTTPS到双向认证
android·经验分享·网络协议·安全·web安全·https·kotlin
CS创新实验室2 小时前
Pandas 3 的新功能
android·ide·pandas
ujainu2 小时前
护眼又美观:Flutter + OpenHarmony 鸿蒙记事本一键切换夜间模式(四)
android·flutter·harmonyos
三少爷的鞋2 小时前
为什么我不在 Android ViewModel 中直接处理异常?
android
草莓熊Lotso3 小时前
Linux 文件描述符与重定向实战:从原理到 minishell 实现
android·linux·运维·服务器·数据库·c++·人工智能
恋猫de小郭3 小时前
Flutter Zero 是什么?它的出现有什么意义?为什么你需要了解下?
android·前端·flutter
工程师老罗10 小时前
如何在Android工程中配置NDK版本
android