flutter 3.10.8 在android模拟器上启动报错Build was configured to prefer settings repositories over project repositories but repository 'maven' was added by settings file 'settings.gradle.kts'
1. 问题
博客园已经两年没更新了,有点小小的懈怠,可能年龄大了,有点力不从心了,也对技术没那么执着了,只想退休下班,技术只当做谋生的工具,谈不上多喜欢了,没事锻炼锻炼身体,自己做做饭,把自己照顾好足以.2026年已经30了,还有5年就35岁了,离"毕业"也没几年了,和审判一样.工作上也经历了许多事,心态不一样了.
回到正题,之前按照flutter文档重新部署了3.10.8版本的flutter,我以为flutter会沉寂下去,没想到还一直更新,公司最近要做小程序,也可能会做移动端,趁着这段时间重新温习温习flutter,万一要开发移动端用得上.
本来是打算好好钻研java,进大厂,但是现在也没那种心了,好好工作,生活,能养活自己就好.现在前端,java,实施,服务器运维,打包,部署,移动端,小程序都有接触,已经成为了大家经常说的只有广度没有深度的一类人,照这样下去一辈子都去不了大厂,不过也认命了,随遇而安吧.工资虽然不多,但是小有盈余,也算是知足常乐,没办法中的办法,每个人人生轨迹不一样.
按照官方文档操作了一遍,用android studio 的 模拟器启动后一直报这个错误,百度了好久没找到答案,最终解决了,希望能给其他人帮助.
FAILURE: Build failed with an exception. * Where: Settings file 'D:\Develop\workspace\flutter\study01\flutter_application_1\android\settings.gradle.kts' line: 20 * What went wrong: Error resolving plugin [id: 'dev.flutter.flutter-plugin-loader', version: '1.0.0'] > Build was configured to prefer settings repositories over project repositories but repository 'maven' was added by settings file 'settings.gradle.kts'
2. 解决
调整flutter安装路径下的settings.gradle.kts文件,比如: D:\Develop\tool\flutter\packages\flutter_tools\gradle\settings.gradle.kts
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS) //flutter下载后默认是
//FAIL_ON_PROJECT_REPOS,需要改成PREFER_SETTINGS
repositories {
google()
mavenCentral()
}
}
然后把项目中的仓库都改成阿里云仓库就可以
pluginManagement { val flutterSdkPath = run { val properties = java.util.Properties() file("local.properties").inputStream().use { properties.load(it) } val flutterSdkPath = properties.getProperty("flutter.sdk") require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } flutterSdkPath } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") repositories { maven { url = uri("https://maven.aliyun.com/repository/public/") } maven { url = uri("https://maven.aliyun.com/repository/public") } maven { url = uri("https://maven.aliyun.com/repository/gradle-plugin") } maven { url = uri("https://maven.aliyun.com/repository/google") } maven { url = uri("https://maven.aliyun.com/repository/central") } } } plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" id("com.android.application") version "8.11.1" apply false id("org.jetbrains.kotlin.android") version "2.2.20" apply false } include(":app")
看下gradle官方文档解释

大概意思就是说
PREFER_PROJECT:项目的仓库配置会覆盖配置文件settings.gradle(.kts)的仓库配置
PREFER_SETTINGS: 配置文件settings.gradle(.kts)的仓库配置会覆盖项目的仓库配置
FAIL_ON_PROJECT_REPOS: 写在项目中的仓库配置会报错,必须使用settings.gradle(.kts)的配置
所以flutter下载后默认是FAIL_ON_PROJECT_REPOS,启动就会报错,改成PREFER_SETTINGS就正常了.
可能有人会疑惑,项目中也有settings.gradle.kts,配置文件settings.gradle和项目的仓库配置怎么区分,其实flutter项目中有一段
includeBuild("$flutterSdkPath/packages/flutter_tools/gradle")
这个会在构建的时候同时构建flutter中的gradle,flutter中的gradle也有settings.gradle.kts,如果不修改repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)的配置,在构建flutter的gradle就会报错,如果改成PREFER_PROJECT,会从环境变量GRADLE_USER_HOME配置的地址中的配置文件加载仓库地址,也同样不会加载flutter项目中的地址.
总结:
PREFER_PROJECT: 从环境变量的GRADLE_USER_HOME配置的.gradle目录的配置文件加载仓库.
PREFER_SETTINGS: 从新建的项目的settings.gradle.kts加载仓库.
FAIL_ON_PROJECT_REPOS:强制从settings.gradle.kts加载仓库,如果有配置GRADLE_USER_HOME有配置仓库就会报错.
所以改成PREFER_SETTINGS就可以.如果有不对的地方希望大神指正.

浙公网安备 33010602011771号