flutter插件报错
这个报错信息非常明确:
Build was configured to prefer settings repositories over project repositories but repository 'maven' was added by plugin 'dev.flutter.flutter-gradle-plugin'
原因分析:
Gradle 7.0+ 引入了新的依赖管理方式。你的 settings.gradle.kts 中配置了 repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)(或者默认行为),这意味着所有仓库必须在 settings.gradle.kts 中定义。
但是,Flutter 的 Gradle 插件(dev.flutter.flutter-gradle-plugin)在运行时尝试动态添加一个 Maven 仓库(通常是 https://storage.googleapis.com/download.flutter.io),这违反了“禁止在项目层级添加仓库”的规则,导致构建失败。
解决方案:
你需要修改 android/settings.gradle.kts,将仓库策略从“强制失败”改为“优先使用设置”,并显式添加 Flutter 所需的 Maven 仓库。
🛠️ 修复步骤
请打开 android/settings.gradle.kts,找到 dependencyResolutionManagement 代码块,按照以下方式修改:
修改前(可能是这样的):
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) // 这行导致了报错
repositories {
google()
mavenCentral()
// ...
}
}
修改后(请替换为以下代码):
dependencyResolutionManagement {
// 1. 将策略修改为 PREFER_SETTINGS
// 这允许插件添加仓库,但优先使用这里配置的仓库
repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS)
repositories {
google()
mavenCentral()
// 2. 【关键】显式添加 Flutter 所需的 Maven 仓库
// 这样 Flutter 插件就不需要动态去添加了,从而避免冲突
maven {
url = uri("https://storage.googleapis.com/download.flutter.io")
}
// 如果你有其他阿里云镜像配置,也可以加在这里
// maven { url = uri("https://maven.aliyun.com/repository/google") }
}
}
💡 为什么这样做有效?
-
RepositoriesMode.PREFER_SETTINGS:
这个模式告诉 Gradle:“请在settings.gradle.kts中查找仓库配置。如果插件(如 Flutter 插件)试图在其他地方(如build.gradle)添加仓库,请忽略它们或使用这里的配置,而不是抛出异常”。 -
预注册 Flutter 仓库:
Flutter 插件报错是因为它想添加download.flutter.io这个仓库。如果我们提前在settings.gradle.kts中把它加进去了,插件发现仓库已存在,就不会再尝试“违规”添加了。
🚀 后续操作
修改完成后,请执行以下操作以确保缓存被清除:
- 在 Android Studio 中点击 File -> Sync Project with Gradle Files。
- 或者在终端运行:
cd android ./gradlew clean cd .. flutter clean flutter pub get flutter run
如果修改后仍然报错,请检查是否还有其他地方(如 android/build.gradle)手动配置了 allprojects { repositories { ... } },如果有,请将其移除或合并到 settings.gradle.kts 中。

浙公网安备 33010602011771号