CentOS 上使用 Flutter 进行跨平台开发
一 环境准备与安装
- 安装基础依赖(CentOS 7/8 示例)
- 安装工具链与图形依赖:sudo yum install -y curl git unzip xz-utils zip libglu1-mesa
- 可选:安装桌面环境(无头服务器可跳过):sudo yum groupinstall -y “GNOME Desktop” “Graphical Administration Tools”
- 下载并配置 Flutter SDK
- 建议版本:Flutter 3.x 稳定版(自带 Dart)
- 解压至全英文路径(示例):tar -xzf flutter_linux_x.y.z-stable.tar.xz -C /opt
- 配置环境变量(~/.bashrc 或 ~/.zshrc):export PATH=“$PATH:/opt/flutter/bin”
- 使配置生效:source ~/.bashrc(或 source ~/.zshrc)
- 国内镜像加速(可选,提升下载速度)
- 临时:export PUB_HOSTED_URL=https://pub.flutter-io.cn
- 永久:在 ~/.bashrc 或 ~/.zshrc 中追加上面两行并 source
- 验证安装:flutter doctor(按提示逐项修复缺失项)
二 启用多平台支持与创建项目
- 启用桌面与 Web 平台(桌面端需 Flutter 3.0+)
- flutter config --enable-web
- flutter config --enable-linux-desktop
- 查看已启用设备:flutter devices
- 创建与补齐平台
- 新建项目:flutter create my_app && cd my_app
- 已有项目补齐缺失平台目录:flutter create .
- 在 CentOS 上可直接运行 Linux 桌面端:flutter run -d linux
三 在 CentOS 上运行与调试
- 运行 Linux 桌面应用
- 直接运行:flutter run -d linux
- 热重载:保存文件后按 r(在终端中)或在 IDE 使用 Hot Reload
- 连接并运行 Android 设备/模拟器
- 准备:安装 Android Studio,配置 Android SDK 与 命令行工具(Command-line Tools)
- 接受许可证:flutter doctor --android-licenses
- 连接真机(开启 USB 调试)或创建 AVD 模拟器,运行:flutter run -d android
- 运行 Web
- 浏览器运行:flutter run -d chrome
- 常用调试命令
- 查看设备:flutter devices
- 清理构建:flutter clean && flutter pub get
四 构建与发布
- 常用构建命令
- Android:flutter build apk 或 flutter build appbundle
- Web:flutter build web
- Linux:flutter build linux
- 产物路径与说明
- Android:build/app/outputs/flutter-apk/(APK)或 build/app/outputs/bundle/release/(AAB)
- Web:build/web/
- Linux:build/linux/x64/release/bundle/
- 其他平台说明
- iOS 开发必须在 macOS 且使用 Xcode
- Windows 桌面开发需 Windows 主机(CentOS 无法构建 Windows 目标)
五 常见问题与实用建议
- 环境与依赖
- 路径必须为全英文,避免中文或空格导致异常
- 配置镜像后需重启终端或 source 配置文件
- 全程用 flutter doctor 定位问题,优先修复报错项
- Android 相关
- 若提示缺少命令行工具:在 Android Studio 的 SDK Tools 勾选 Android SDK Command-line Tools (latest)
- 许可证未接受:执行 flutter doctor --android-licenses 并全部选择 y
- 桌面与模拟器
- CentOS 图形环境缺失会导致 Linux 桌面运行异常,建议安装 GNOME 桌面或使用 X11 转发
- Android 模拟器需要硬件虚拟化支持(BIOS 开启 VT-x/AMD-V),服务器环境通常不建议使用模拟器
- 插件与平台适配
- 选插件时确认其支持 Web/Desktop;Web 端不支持 dart:io,需用对应 Web API 替代
- 使用 kIsWeb 与 Platform 做平台分支,结合 LayoutBuilder/MediaQuery 做响应式布局