首页主机资讯centos中flutter编译失败怎么办

centos中flutter编译失败怎么办

时间2026-01-20 23:33:04发布访客分类主机资讯浏览812
导读: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(仅用于网络受限环境,用完请恢复)。
  • 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。
  • 误引入 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”

四、最小复现与求助模板

  • 复现步骤:
    1. 新建最小化项目:flutter create test_app & & cd test_app
    2. 在 CentOS 执行:flutter build apk --verbose
    3. 若失败,贴出完整终端输出(含任务名、退出码、堆栈)
  • 提交关键信息: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
centos message如何优化内部链接 centos message在社交媒体推广中的作用

游客 回复需填写必要信息