You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Flutter项目构建失败:FlutterPlugin.kt中出现'Unresolved reference'等Kotlin错误求助

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完整性,应该就能搞定了。

火山引擎 最新活动