linux client
This commit is contained in:
161
build_linux.sh
Normal file
161
build_linux.sh
Normal file
@@ -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 "全部步骤完成。"
|
||||||
Reference in New Issue
Block a user