【Android】Android studio新建Android项目,同步gradle时间过长
一、问题起因
Android studio新建了一个Android项目,同步gradle时间过长。耗时主要集中在两方面:gradle下载和gradle依赖下载。
二、解决方案
两种配置方式,单项目配置和全局配置。先暂停gradle下载,配置完成后再启动gradle下载。(建议这里先用单项目配置,全局配置常存在冲突,参考别人文章也未能很好解决)
1.gradle下载慢解决方案
gradle-wrapper.properties中,替换https://services.gradle.org/distributions为https://mirrors.cloud.tencent.com/gradle
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-8.2-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
如果使用本地下载文件,用这种格式,distributionUrl=file:///c:/tools/gradle-8.2-bin.zip
2. gradle依赖下载慢解决方案
有两种解决方式,单项目中配置或全局配置,选择其一即可。(建议这里先用单项目配置,全局配置常存在冲突,参考别人文章也未能很好解决)
(1)单项目中配置
如果使用kotlin配置,修改settings.gradle.kts。将对应阿里云镜像仓库添加到google()和mavenCentral()上方,优先从国内源下载,如果没有再去原网站下。如下,对应位置添加上maven设置。
pluginManagement {
repositories {
// 使用阿里镜像源
maven(url = "https://maven.aliyun.com/repository/google")
maven(url = "https://maven.aliyun.com/repository/central")
maven(url = "https://maven.aliyun.com/repository/gradle-plugin")
google()
mavenCentral()
gradlePluginPortal()
}
}
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
// 使用阿里镜像源
maven(url = "https://maven.aliyun.com/repository/google")
maven(url = "https://maven.aliyun.com/repository/central")
google()
mavenCentral()
}
}
rootProject.name = "Demo"
include(":app")
若你使用的groovy,修改settings.gradle
pluginManagement {
repositories {
// 使用阿里镜像源
maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.aliyun.com/repository/central' }
maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
google()
mavenCentral()
gradlePluginPortal()
}
}
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
// 使用阿里镜像源
maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.aliyun.com/repository/central' }
google()
mavenCentral()
}
}
rootProject.name = "Demo"
include ':app'
完毕!重试gradle下载。
建议:不要随意改变仓库位置。仓库的列出顺序决定了 Gradle 在这些仓库中搜索各个项目依赖项的顺序。例如,如果从仓库 A 和 B 均可获得某个依赖项,而先列出了仓库 A,则 Gradle 会从仓库 A 下载该依赖项。
备注:Android Studio中Settings Gradle设置按照默认,没有做修改。Gradle user home相当于仓库位置,和maven仓库类似。

(2)全局配置。
在C:\Users\Admin\.gradle下新建配置init.gradle文件。
allprojects{
repositories {
def ALIYUN_REPOSITORY_URL = 'http://maven.aliyun.com/nexus/content/groups/public'
def ALIYUN_JCENTER_URL = 'http://maven.aliyun.com/nexus/content/repositories/jcenter'
def HUAWEICLOUD_REPOSITORY_URL = 'https://mirrors.huaweicloud.com/repository/maven/'
all { ArtifactRepository repo ->
if(repo instanceof MavenArtifactRepository){
def url = repo.url.toString()
if (url.startsWith('https://repo1.maven.org/maven2') || url.startsWith('https://jcenter.bintray.com/')) {
project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_REPOSITORY_URL."
remove repo
}
if (url.startsWith('https://repo1.maven.org/maven2') || url.startsWith('https://jcenter.bintray.com/')) {
project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_JCENTER_URL."
remove repo
}
if (url.startsWith('https://repo1.maven.org/maven2') || url.startsWith('https://jcenter.bintray.com/')) {
project.logger.lifecycle "Repository ${repo.url} replaced by $HUAWEICLOUD_REPOSITORY_URL."
remove repo
}
}
}
maven {
url ALIYUN_REPOSITORY_URL
url ALIYUN_JCENTER_URL
url HUAWEICLOUD_REPOSITORY_URL
}
}
}
屏蔽掉settings.gradle.kts文件中的dependencyResolutionManagement 模块。
pluginManagement {
repositories {
// 使用阿里镜像源
maven(url = "https://maven.aliyun.com/repository/google")
maven(url = "https://maven.aliyun.com/repository/central")
maven(url = "https://maven.aliyun.com/repository/gradle-plugin")
google {
content {
includeGroupByRegex("com\\.android.*")
includeGroupByRegex("com\\.google.*")
includeGroupByRegex("androidx.*")
}
}
mavenCentral()
gradlePluginPortal()
}
}
//dependencyResolutionManagement {
// repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
// repositories {
// // 使用阿里镜像源
// maven(url = "https://maven.aliyun.com/repository/google")
// maven(url = "https://maven.aliyun.com/repository/central")
// google()
// mavenCentral()
// }
//}
rootProject.name = "My Application"
include(":app")
完毕!重试gradle下载。
如果全局配置过程中遇到maven冲突问题,因为settings.gradle.kts文件中的dependencyResolutionManagement 模块和init.gradle文件产生了冲突。

更多推荐
所有评论(0)