You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter升级至3.19+后Gradle编译报错:settings.gradle首行含未知字符

解决Flutter升级3.19+后Gradle编译失败问题

问题核心原因

  1. 首行未知字符?:是UTF-8 BOM(字节顺序标记),部分编辑器保存文件时会自动添加这个隐藏字符,Gradle无法识别。
  2. 版本不兼容:升级Gradle到8.5后,原Android Gradle插件(AGP)7.3.0、Kotlin插件1.7.10版本过低,和Gradle8.5不匹配。
  3. Wrapper版本未同步:当前Gradle Wrapper仍使用7.6.3,未对应升级后的8.5版本。

分步解决

1. 移除settings.gradle的UTF-8 BOM字符

  • 用VS Code打开android/settings.gradle,点击右下角的编码标识(默认显示UTF-8),选择通过编码保存,再选UTF-8(不带BOM的选项)后保存。
  • 或用Notepad++打开文件,点击「编码」→「转换为UTF-8无BOM编码」,保存后关闭。
  • 确认:重新打开文件,首行pluginManagement {前无任何隐藏字符。

2. 同步Gradle与插件版本(适配Gradle8.5)

修改android/settings.gradle中的插件版本:

plugins {
    id "dev.flutter.flutter-plugin-loader" version "1.0.0"
    id "com.android.application" version "8.2.2" apply false // 适配Gradle8.5的AGP版本
    id "org.jetbrains.kotlin.android" version "1.9.20" apply false // 对应AGP8.2的Kotlin版本
}

3. 更新Gradle Wrapper版本

修改android/gradle/wrapper/gradle-wrapper.properties的distributionUrl:

distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-all.zip

4. 升级Java版本适配Gradle8.0+

Gradle8.0及以上要求使用Java17,修改app/build.gradle中的编译配置:

android {
    // ... 其他原有配置
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_17
        targetCompatibility JavaVersion.VERSION_17
    }

    kotlinOptions {
        jvmTarget = '17'
    }
    // ... 其他原有配置
}

5. 清理缓存并重新编译

  • 执行命令清理项目缓存:
    flutter clean
    cd android && ./gradlew clean
    
  • 返回项目根目录,重新运行项目:
    flutter run
    

内容的提问来源于stack exchange,提问作者Rahman Developer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 12:51:11