#!/usr/bin/env bash set -e ############################################# # 配置:修改为你的项目路径 ############################################# # 方式1:手动指定路径(推荐) PROJECT_DIR="$HOME/windows" # TODO: 改成你的项目实际路径 # 方式2:自动检测(如果脚本放在项目根目录) # PROJECT_DIR="$(cd "$(dirname "$0")" && pwd)" ############################################# # 0. 打印环境信息 ############################################# echo "==== Linux Flutter 桌面环境初始化 & 构建脚本 ====" echo "项目路径: $PROJECT_DIR" echo "当前用户: $(whoami)" echo "当前目录: $(pwd)" echo ############################################# # 1. 安装系统依赖(Ubuntu / Debian) ############################################# echo "==== 1. 安装系统依赖(需要 sudo) ====" sudo apt update # 基本编译工具 sudo apt install -y build-essential # CMake / Ninja(Flutter 构建需要) sudo apt install -y cmake ninja-build # GTK3 及相关开发包(Flutter Linux GUI 需要) sudo apt install -y libgtk-3-dev libblkid-dev liblzma-dev # 常用工具 sudo apt install -y git curl unzip echo "系统依赖安装完成" echo ############################################# # 2. 安装 Flutter SDK(如果还没有) ############################################# echo "==== 2. 检查 Flutter 是否已安装 ====" if ! command -v flutter >/dev/null 2>&1; then echo "未检测到 flutter 命令,开始安装 Flutter SDK..." FLUTTER_VERSION="3.16.0" # 可按需要调整版本 FLUTTER_TAR="flutter_linux_${FLUTTER_VERSION}-stable.tar.xz" FLUTTER_URL="https://storage.flutter-io.cn/flutter_infra_release/releases/stable/linux/${FLUTTER_TAR}" cd "$HOME" echo "从中国镜像下载 Flutter: $FLUTTER_URL" curl -O "$FLUTTER_URL" tar xf "$FLUTTER_TAR" # 写入 PATH(如果已经写入过,不会有问题) if ! grep -q "flutter/bin" "$HOME/.bashrc"; then echo 'export PATH="$PATH:$HOME/flutter/bin"' >> "$HOME/.bashrc" fi # 立刻生效当前 shell export PATH="$PATH:$HOME/flutter/bin" echo "Flutter 安装完成,版本:$(flutter --version)" else echo "已检测到 Flutter:$(flutter --version)" fi echo ############################################# # 3. 配置 Flutter 国内镜像 ############################################# echo "==== 3. 配置 Flutter 国内镜像环境变量 ====" export PUB_HOSTED_URL="https://pub.flutter-io.cn" export FLUTTER_STORAGE_BASE_URL="https://storage.flutter-io.cn" # 写入 ~/.bashrc 方便下次登录继续使用 if ! grep -q "PUB_HOSTED_URL" "$HOME/.bashrc"; then cat >> "$HOME/.bashrc" << 'EOF' # Flutter China mirrors export PUB_HOSTED_URL="https://pub.flutter-io.cn" export FLUTTER_STORAGE_BASE_URL="https://storage.flutter-io.cn" EOF fi echo "国内镜像已配置(当前 shell 已生效)" echo ############################################# # 4. 启用 Linux 桌面支持 ############################################# echo "==== 4. 启用 Linux 桌面支持 ====" flutter config --enable-linux-desktop echo "flutter doctor 检查环境:" flutter doctor -v || true echo ############################################# # 5. 进入项目,生成 linux 工程(如未生成) ############################################# echo "==== 5. 切换到项目目录,并生成 linux 工程(如需要) ====" if [ ! -d "$PROJECT_DIR" ]; then echo "错误:项目目录不存在:$PROJECT_DIR" exit 1 fi cd "$PROJECT_DIR" # 如果没有 linux 目录,则创建 if [ ! -d "linux" ]; then echo "未检测到 linux 目录,执行 flutter create --platforms=linux ." flutter create --platforms=linux . else echo "已检测到 linux 目录,跳过 flutter create。" fi echo ############################################# # 6. 获取依赖 ############################################# echo "==== 6. 获取 Dart / Flutter 依赖 ====" flutter pub get echo ############################################# # 7. 构建 Linux Release 版本 ############################################# echo "==== 7. 构建 Linux Release 版本 ====" flutter build linux --release echo echo "==== 构建完成 ====" echo "可执行文件及运行目录位于:" echo " $PROJECT_DIR/build/linux/x64/release/bundle/" echo echo "请确保将项目中的 bin/ 目录复制到该 bundle 目录同级,例如:" echo " build/linux/x64/release/bundle/" echo " ├─ cloud_client_gui" echo " ├─ bin/" echo " │ ├─ version" echo " │ ├─ auth" echo " │ ├─ mining.linux.conf" echo " │ ├─ logs/" echo " │ └─ mining_task.db" echo echo "然后在该目录下运行:" echo " ./cloud_client_gui" echo echo "全部步骤完成。"