CentOS 下 Flutter 编译失败的定位与修复
一、快速定位
- 先看完整错误:在项目根目录执行以下命令,获取可定位的关键信息(堆栈、任务名、退出码)。
- flutter build apk --verbose
- 或 ./gradlew assembleDebug --stacktrace --info
- 同步检查环境与健康度:flutter doctor -v,确认 Flutter、Dart、Android toolchain、Connected device 状态是否正常。
- 清理后重试(避免缓存干扰):flutter clean && rm -rf android/.gradle && flutter pub get。
二、常见原因与对应修复
三、CentOS 环境专项检查
- 安装 64 位系统工具链与基础依赖:sudo yum groupinstall -y “Development Tools” && sudo yum install -y which unzip xz
- 确保已安装并启用较新的 Java(Android 构建常用 JDK 11):java -version;如使用 OpenJDK,建议安装 java-11-openjdk-devel
- 配置 Android SDK 与许可:确保 ANDROID_SDK_ROOT 已设置,执行 flutter doctor --android-licenses 接受协议
- 磁盘与内存:构建需要足够的 /tmp 与 ~/.gradle 空间,内存不足时可适当增加 Gradle 堆:export GRADLE_OPTS=“-Xmx2g -XX:MaxMetaspaceSize=512m”
四、最小复现与求助模板
- 复现步骤:
- 新建最小化项目:flutter create test_app && cd test_app
- 在 CentOS 执行:flutter build apk --verbose
- 若失败,贴出完整终端输出(含任务名、退出码、堆栈)
- 提交关键信息:Flutter 版本(flutter --version)、Dart 版本(dart --version)、Gradle 版本(./gradlew -v)、Kotlin 版本(在 android/build.gradle 的 ext.kotlin_version)、操作系统与 CPU 架构(uname -a)、以及上述命令的输出片段。