记录一个搭建Flutter+Gradle开发环境遇到的问题:

Build was configured to prefer settings repositories over project repositories but repository ‘maven’ was added by settings file ‘settings.gradle.kts’

1 背景

我参考flutter开发环境搭建做好了系统配置,然后启动调试超时卡在下载Gradle

Launching lib\main.dart on 运行设备名称 in debug mode...
Running Gradle task 'assembleDebug'...

再参考解决flutter启动超时做了项目镜像配置,然后就触发了题目的报错:

Build was configured to prefer settings repositories over project repositories but repository 'maven' was added by settings file 'settings.gradle.kts'

2 错误尝试

这个问题困扰我非常久,几乎没人遇到这种情况(原因太特殊),报错的意思是我的项目里存在settings.gradle.kts 之外的仓库定义,导致了下载仓库冲突。

  1. GPT等ai一顿胡诌说build.gradlebuild.gradle.kts里面的repos应该删掉,事实上这是flutter create的标准文件啊,错误不可能在此
    在这里插入图片描述
    2.ai还在我的settings.gradle.kts中添加:
dependencyResolutionManagement {
	  // 禁用"优先使用settings仓库"的检查
    repositoriesMode.set(RepositoriesMode.PREFER_PROJECT) // 增加这1行
    repositories {
        ...

这样并不会生效。Flutter SDK 在 flutter/packages/flutter_tools/gradle/settings.gradle.kts 中也设置了 repositoriesMode = RepositoriesMode.FAIL_ON_PROJECT_REPOS会形成冲突

  1. 尝试了篡改flutterSDK来覆写repositoriesMode,也无效

3 解决方案

排除下面官方内容不可能有问题,那问题只在我本地了

  1. flutterSDK
  2. flutter create初始化的默认项目
  3. Gradle发行版
  4. jdk环境

核查过程中,在gradle安装位置发现了我以前装Gradle环境残留的一个文件init.gradle,用于设置全局脚本,在构建时自动注入国内仓库配置。而flutterSDK新版默认的repositoriesMode形成了冲突。
删除init.gradle文件后,问题解决!

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐