centos中flutter编译失败怎么办
导读:CentOS 下 Flutter 编译失败的定位与修复 一、快速定位 先看完整错误:在项目根目录执行以下命令,获取可定位的关键信息(堆栈、任务名、退出码)。 flutter build apk --verbose 或 ./gradlew...
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。
二、常见原因与对应修复
-
依赖下载或仓库不可达(国内常见)
- 现象:卡在 Resolving dependencies,或报错 Could not resolve io.flutter:flutter_embedding_debug,或 jcenter 返回 502/404。
- 处理:
- 配置环境变量(对 Flutter 与 Gradle 均生效):
- export PUB_HOSTED_URL=https://pub.flutter-io.cn
- export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn
- 在 android/build.gradle 的 repositories 中使用国内镜像并优先放置 flutter 官方仓库,例如:
- maven { url ‘https://maven.aliyun.com/repository/google’ }
- maven { url ‘https://maven.aliyun.com/repository/jcenter’ }
- maven { url ‘https://maven.aliyun.com/nexus/content/groups/public’ }
- maven { url “http://download.flutter.io” }
- 必要时注释掉 google() 与 jcenter() 以规避不稳定源。
- 若仍解析 io.flutter 依赖失败,可在 Flutter SDK 的 gradle 脚本中临时将 https://storage.googleapis.com/download.flutter.io 替换为 http://download.flutter.io(仅用于网络受限环境,用完请恢复)。
- 配置环境变量(对 Flutter 与 Gradle 均生效):
-
Kotlin 守护进程异常(Gradle 编译阶段)
- 现象:e: Daemon compilation failed: null java.lang.Exception(常见于后台 Gradle 守护进程异常或并发编译冲突)。
- 处理:
- 停止 Gradle 守护进程:./gradlew --stop
- 清理 Gradle 缓存:rm -rf ~/.gradle/caches/ ~/.gradle/daemon/
- 关闭并行与守护进程后重试:./gradlew assembleDebug --no-daemon --no-parallel。
-
依赖版本冲突(pub 解析失败)
- 现象:pub get 或构建时报版本冲突(Because … requires … and … is incompatible)。
- 处理:在 pubspec.yaml 顶层添加临时“强制版本”以解开冲突(谨慎评估影响范围):
- dependency_overrides:
- vm_service: ^13.0.0
- 冲突解除后,尽量通过升级/对齐依赖版本来移除 overrides。
- dependency_overrides:
-
误引入 Web 专用库导致 AOT 编译失败
- 现象:构建时报错包含 dart:html、StandardFileSystem only supports file:* and data:* URIs、Invalid depfile … kernel_snapshot.d。
- 处理:检查并移除/条件导入与 Web 相关的库(如 dart:html、js、html5lib 等)在非 Web 目标中的引用;确保仅导入与当前平台匹配的库。
三、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)、以及上述命令的输出片段。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos中flutter编译失败怎么办
本文地址: https://pptw.com/jishu/787803.html
