From 194b062bb975165645f2e9d9395985896b424758 Mon Sep 17 00:00:00 2001 From: lzx <393768033@qq.com> Date: Thu, 29 Jan 2026 10:46:11 +0800 Subject: [PATCH] linux client --- build_linux.sh | 161 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 161 insertions(+) create mode 100644 build_linux.sh diff --git a/build_linux.sh b/build_linux.sh new file mode 100644 index 0000000..4fa0e16 --- /dev/null +++ b/build_linux.sh @@ -0,0 +1,161 @@ +#!/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 "全部步骤完成。" \ No newline at end of file