Flutter项目构建失败:FlutterPlugin.kt中出现'Unresolved reference'等Kotlin错误求助
问题描述
我在macOS上构建Flutter应用时碰到了棘手的错误:因为项目SDK约束是environment: sdk: ">=2.12.0 <3.0.0",所以通过FVM使用Flutter 2.10.5版本,但每次执行fvm flutter run都会报错:
Launching lib/main.dart on Redmi Note 5 in debug mode... e: file:///Users/babanla/development/flutter/packages/flutter_tools/gradle/src/main/kotlin/FlutterPlugin.kt:764:21 Unresolved reference: filePermissions e: file:///Users/babanla/development/flutter/packages/flutter_tools/gradle/src/main/kotlin/FlutterPlugin.kt:765:25 Unresolved reference: user e: file:///Users/babanla/development/flutter/packages/flutter_tools/gradle/src/main/kotlin/FlutterPlugin.kt:766:29 Unresolved reference: read e: file:///Users/babanla/development/flutter/packages/flutter_tools/gradle/src/main/kotlin/FlutterPlugin.kt:767:29 Unresolved reference: write FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':gradle:compileKotlin'. > Compilation error. See log for more details
我已经尝试过的方法
✅ 清理Gradle缓存和构建文件:
rm -rf android/.gradle rm -rf android/build fvm flutter clean fvm flutter pub get
✅ 验证Flutter版本:确认是Flutter 2.10.5 • Dart 2.16.2
✅ 调整Android目录下的Gradle版本:
android/build.gradle中修改classpath:classpath 'com.android.tools.build:gradle:4.1.0'gradle-wrapper.properties中修改distributionUrl:distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
✅ 重新通过FVM安装Flutter SDK:
fvm remove 2.10.5 && fvm install 2.10.5
但错误依然存在,且问题源自Flutter内部的Gradle Kotlin文件。
我的环境
- macOS (Sonoma 14.x)
- Flutter 2.10.5(FVM管理)
- Gradle 6.7
- Android Gradle Plugin 4.1.0
- Kotlin插件(与Flutter捆绑)
我的疑问
是什么导致了Flutter内部FlutterPlugin.kt文件中的这些“Unresolved reference”错误?我该如何正确重置或对齐SDK与Gradle配置,让项目成功构建?
可能的原因与解决方案
你碰到的问题大概率是旧版本Flutter与新系统、不匹配的Gradle/Kotlin版本兼容性冲突导致的——Flutter 2.10.5是比较早的版本,而macOS Sonoma是新系统,加上你选的Gradle版本和Flutter内置插件逻辑不匹配,才会出现内部Kotlin代码解析失败的情况。下面是按优先级排序的解决方向:
1. 给Flutter 2.10.5匹配官方推荐的Gradle版本组合
你之前选的Gradle 4.1.0/6.7太旧了,和Flutter 2.10.5的内置插件不兼容。正确的对应关系是:
- Android Gradle Plugin (AGP) 版本:7.0.4
- Gradle 版本:7.0.2
修改步骤:
- 打开
android/build.gradle,更新classpath:classpath 'com.android.tools.build:gradle:7.0.4' - 打开
android/gradle/wrapper/gradle-wrapper.properties,更新distributionUrl:distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-all.zip
修改完执行以下命令重置构建:
fvm flutter clean fvm flutter pub get cd android && ./gradlew clean cd .. fvm flutter run
2. 锁定Kotlin版本与AGP兼容
Flutter 2.10.5捆绑的Kotlin版本是1.6.10,AGP 7.0.x要求Kotlin版本至少1.5.31,刚好兼容,但如果你的项目手动指定了更高版本,会引发冲突。
打开android/build.gradle,确保Kotlin版本正确:
buildscript { ext.kotlin_version = '1.6.10' // 没有的话就添加这行 repositories { google() mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:7.0.4' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } }
3. 确保FVM的Flutter SDK完整无损坏
虽然你重新安装了,但FVM的缓存可能有残留问题,尝试彻底清理后重装:
# 完全删除FVM中2.10.5的缓存 rm -rf ~/.fvm/versions/2.10.5 # 强制重新安装 fvm install 2.10.5 --force # 验证SDK完整性 fvm flutter doctor -v
如果flutter doctor有Android相关警告(比如缺失SDK组件),按提示安装对应版本的Android SDK Platform(Flutter 2.10.5推荐Android 12 (API 31))。
4. 规避macOS Sonoma的系统兼容性问题
旧版本Flutter和新系统的权限、环境变量可能存在冲突,可以尝试:
- 用管理员权限启动Android Studio/IntelliJ,导入项目后再构建
- 执行构建时指定Java 11环境(Flutter 2.x推荐Java 11):
# 替换成你本地Java 11的路径,比如AdoptOpenJDK 11 export JAVA_HOME=/Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home fvm flutter run
5. 强制锁定Flutter Gradle插件版本
如果以上方法都不行,可以在android/build.gradle中强制指定和Flutter版本对齐的Gradle插件:
buildscript { repositories { google() mavenCentral() maven { url "https://storage.googleapis.com/download.flutter.io" } } dependencies { classpath 'com.android.tools.build:gradle:7.0.4' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.10" // 强制指定Flutter Gradle插件版本 classpath "dev.flutter:flutter-gradle-plugin:2.10.5" } }
修改后重新清理构建即可。
总结
你这个问题的核心是旧Flutter版本、新系统、不匹配的构建工具版本三者之间的兼容性冲突,优先调整Gradle和AGP到官方推荐的组合,基本就能解决内部Kotlin代码解析失败的问题。如果还是不行,检查Java版本和FVM的SDK完整性,应该就能搞定了。




