impress_asr_input_rust/build-linux-package.sh
impressionyang 1a78e4e23f feat: 添加 Linux GUI 版本构建支持
新增文件:
- icons/icon.png: 应用图标(512x512 RGBA PNG 格式)

变更:
- build-linux-package.sh: 更新脚本支持 GUI 版本编译
  - 新增 cargo build --release --features gui
  - 复制 GUI 程序和图标到 dist 目录
  - 更新 README 包含 GUI 运行说明

构建结果:
- CLI: target/release/impress_asr (2.1MB)
- GUI: target/release/impress_asr_gui (9.8MB)
- 打包:dist/impress-asr-linux-x64-20260521_201229.tar.gz (4.7MB)

Linux 运行方式:
- GUI: ./impress_asr_gui
- CLI: ./impress_asr --help
2026-05-21 20:17:37 +08:00

174 lines
4.3 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# Linux 编译并打包脚本
# 编译 impress_asr_input_rust 项目并打包(包含 CLI 和 GUI 版本)
set -e
PROJECT_DIR="/home/ubuntu/workspace/cherry-studio/enginneer/impress_asr_input_rust"
cd "$PROJECT_DIR"
# 生成时间戳(精确到秒)
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
DIST_DIR="$PROJECT_DIR/dist/linux-x64"
OUTPUT_TAR="$PROJECT_DIR/dist/impress-asr-linux-x64-${TIMESTAMP}.tar.gz"
echo "=============================================="
echo " Impress ASR - Linux 构建打包脚本"
echo " 时间:$(date '+%Y-%m-%d %H:%M:%S')"
echo "=============================================="
# 清理旧的 dist 目录
echo ""
echo "[1/6] 清理旧的 dist 目录..."
rm -rf "$DIST_DIR"
mkdir -p "$DIST_DIR"
# 构建前端
echo ""
echo "[2/6] 构建前端..."
cd "$PROJECT_DIR/web"
npm run build
cd "$PROJECT_DIR"
# 验证前端构建
echo ""
echo "前端构建结果:"
ls -lh "$PROJECT_DIR/web/dist/"
# 编译 CLI 程序
echo ""
echo "[3/6] 编译 CLI 程序..."
cargo build --release
# 编译 GUI 程序
echo ""
echo "[4/6] 编译 GUI 程序..."
cargo build --release --features gui
# 复制必要文件
echo ""
echo "[5/6] 复制必要文件到 dist 目录..."
cp "$PROJECT_DIR/target/release/impress_asr" "$DIST_DIR/"
cp "$PROJECT_DIR/target/release/impress_asr_gui" "$DIST_DIR/"
cp -r "$PROJECT_DIR/web/dist" "$DIST_DIR/"
cp -r "$PROJECT_DIR/models" "$DIST_DIR/" 2>/dev/null || mkdir -p "$DIST_DIR/models"
cp "$PROJECT_DIR/resources/configs/default.toml" "$DIST_DIR/config.toml" 2>/dev/null || true
cp "$PROJECT_DIR/icons/icon.png" "$DIST_DIR/" 2>/dev/null || true
cp "$PROJECT_DIR/icons/tray-icon.png" "$DIST_DIR/" 2>/dev/null || true
# 创建 README.md
cat > "$DIST_DIR/README.md" << 'README_EOF'
# Impress ASR Input Rust - Linux 运行说明
## 🚀 快速启动
1. **解压文件**
```bash
tar -xzf impress-asr-linux-x64-*.tar.gz
cd impress-asr-linux-x64
```
2. **运行程序**
**GUI 版本(推荐)**
```bash
./impress_asr_gui
```
**CLI 版本**
```bash
./impress_asr --help
# 录音
./impress_asr record
# 识别音频文件
./impress_asr recognize -i audio.wav
```
## 📦 文件清单
| 文件 | 说明 |
|------|------|
| `impress_asr_gui` | GUI 桌面应用 |
| `impress_asr` | CLI 命令行工具 |
| `icon.png` | 应用图标 |
| `tray-icon.png` | 托盘图标 |
| `config.toml` | 配置文件(可选) |
| `models/` | 模型文件目录 |
| `dist/` | 前端资源目录 |
## 📋 系统要求
- **操作系统**Linux x64 (glibc 2.28+)
- **支持的系统**Ubuntu 18.04+, Debian 10+, CentOS 8+, RHEL 8+
- **依赖库**
- `libgtk-3-0` - GTK3 图形界面
- `libwebkit2gtk-4.1` - WebKit 浏览器引擎
- `libappindicator3-1` - 系统托盘支持
- `libasound2` - 音频支持
## ❓ 常见问题
### 错误:模型文件不存在
**解决**:下载 ONNX 模型并放到 `models/` 目录。
- SenseVoice Small: https://huggingface.co/FunAudioLLM/SenseVoiceSmall/resolve/main/model.onnx
### 错误:找不到 libasound.so
**解决**:安装 ALSA 库
```bash
# Ubuntu/Debian
sudo apt-get install libasound2
# CentOS/RHEL
sudo yum install alsa-lib
```
### GUI 版本无法启动
确保已安装 GTK3 和 WebKit2GTK 依赖:
```bash
# Ubuntu/Debian
sudo apt-get install libgtk-3-0 libwebkit2gtk-4.1-0 libappindicator3-1
# CentOS/RHEL
sudo yum install gtk3 webkit2gtk4.1 libappindicator
```
## 📝 获取帮助
```bash
# CLI 帮助
./impress_asr --help
```
---
**版本**: 0.1.0 | **构建时间**: 见文件名后缀
README_EOF
echo "文件列表:"
ls -lh "$DIST_DIR/"
# 打包成 tar.gz
echo ""
echo "[6/6] 打包成 tar.gz 文件..."
cd "$DIST_DIR/.."
tar -czf "$OUTPUT_TAR" linux-x64/
# 显示结果
echo ""
echo "=============================================="
echo "构建打包完成!"
echo "输出文件:$OUTPUT_TAR"
echo "文件大小:$(ls -lh "$OUTPUT_TAR" | awk '{print $5}')"
echo "=============================================="
echo ""
echo "Linux 运行所需文件清单:"
echo " - impress_asr_gui (GUI 桌面应用)"
echo " - impress_asr (CLI 工具)"
echo " - icon.png (应用图标)"
echo " - tray-icon.png (托盘图标)"
echo " - config.toml (可选,配置文件)"
echo " - models/ (模型文件目录)"
echo " - dist/ (前端资源)"
echo "=============================================="