Flutter升级至3.19+后Gradle编译报错:settings.gradle首行含未知字符
解决Flutter升级3.19+后Gradle编译失败问题
问题核心原因
- 首行未知字符
?:是UTF-8 BOM(字节顺序标记),部分编辑器保存文件时会自动添加这个隐藏字符,Gradle无法识别。 - 版本不兼容:升级Gradle到8.5后,原Android Gradle插件(AGP)7.3.0、Kotlin插件1.7.10版本过低,和Gradle8.5不匹配。
- 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
相关产品推荐
相关产品推荐

