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
This commit is contained in:
parent
87ad8b4576
commit
1a78e4e23f
@ -1,6 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# Linux 编译并打包脚本
|
# Linux 编译并打包脚本
|
||||||
# 编译 impress_asr_input_rust 项目并打包
|
# 编译 impress_asr_input_rust 项目并打包(包含 CLI 和 GUI 版本)
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
@ -19,13 +19,13 @@ echo "=============================================="
|
|||||||
|
|
||||||
# 清理旧的 dist 目录
|
# 清理旧的 dist 目录
|
||||||
echo ""
|
echo ""
|
||||||
echo "[1/5] 清理旧的 dist 目录..."
|
echo "[1/6] 清理旧的 dist 目录..."
|
||||||
rm -rf "$DIST_DIR"
|
rm -rf "$DIST_DIR"
|
||||||
mkdir -p "$DIST_DIR"
|
mkdir -p "$DIST_DIR"
|
||||||
|
|
||||||
# 构建前端
|
# 构建前端
|
||||||
echo ""
|
echo ""
|
||||||
echo "[2/5] 构建前端..."
|
echo "[2/6] 构建前端..."
|
||||||
cd "$PROJECT_DIR/web"
|
cd "$PROJECT_DIR/web"
|
||||||
npm run build
|
npm run build
|
||||||
cd "$PROJECT_DIR"
|
cd "$PROJECT_DIR"
|
||||||
@ -37,16 +37,24 @@ ls -lh "$PROJECT_DIR/web/dist/"
|
|||||||
|
|
||||||
# 编译 CLI 程序
|
# 编译 CLI 程序
|
||||||
echo ""
|
echo ""
|
||||||
echo "[3/5] 编译 CLI 程序..."
|
echo "[3/6] 编译 CLI 程序..."
|
||||||
cargo build --release
|
cargo build --release
|
||||||
|
|
||||||
|
# 编译 GUI 程序
|
||||||
|
echo ""
|
||||||
|
echo "[4/6] 编译 GUI 程序..."
|
||||||
|
cargo build --release --features gui
|
||||||
|
|
||||||
# 复制必要文件
|
# 复制必要文件
|
||||||
echo ""
|
echo ""
|
||||||
echo "[4/5] 复制必要文件到 dist 目录..."
|
echo "[5/6] 复制必要文件到 dist 目录..."
|
||||||
cp "$PROJECT_DIR/target/release/impress_asr" "$DIST_DIR/"
|
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/web/dist" "$DIST_DIR/"
|
||||||
cp -r "$PROJECT_DIR/models" "$DIST_DIR/" 2>/dev/null || mkdir -p "$DIST_DIR/models"
|
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/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
|
# 创建 README.md
|
||||||
cat > "$DIST_DIR/README.md" << 'README_EOF'
|
cat > "$DIST_DIR/README.md" << 'README_EOF'
|
||||||
@ -61,8 +69,14 @@ cat > "$DIST_DIR/README.md" << 'README_EOF'
|
|||||||
```
|
```
|
||||||
|
|
||||||
2. **运行程序**
|
2. **运行程序**
|
||||||
|
|
||||||
|
**GUI 版本(推荐)**
|
||||||
|
```bash
|
||||||
|
./impress_asr_gui
|
||||||
|
```
|
||||||
|
|
||||||
|
**CLI 版本**
|
||||||
```bash
|
```bash
|
||||||
# CLI 版本
|
|
||||||
./impress_asr --help
|
./impress_asr --help
|
||||||
|
|
||||||
# 录音
|
# 录音
|
||||||
@ -76,7 +90,10 @@ cat > "$DIST_DIR/README.md" << 'README_EOF'
|
|||||||
|
|
||||||
| 文件 | 说明 |
|
| 文件 | 说明 |
|
||||||
|------|------|
|
|------|------|
|
||||||
|
| `impress_asr_gui` | GUI 桌面应用 |
|
||||||
| `impress_asr` | CLI 命令行工具 |
|
| `impress_asr` | CLI 命令行工具 |
|
||||||
|
| `icon.png` | 应用图标 |
|
||||||
|
| `tray-icon.png` | 托盘图标 |
|
||||||
| `config.toml` | 配置文件(可选) |
|
| `config.toml` | 配置文件(可选) |
|
||||||
| `models/` | 模型文件目录 |
|
| `models/` | 模型文件目录 |
|
||||||
| `dist/` | 前端资源目录 |
|
| `dist/` | 前端资源目录 |
|
||||||
@ -85,9 +102,11 @@ cat > "$DIST_DIR/README.md" << 'README_EOF'
|
|||||||
|
|
||||||
- **操作系统**:Linux x64 (glibc 2.28+)
|
- **操作系统**:Linux x64 (glibc 2.28+)
|
||||||
- **支持的系统**:Ubuntu 18.04+, Debian 10+, CentOS 8+, RHEL 8+
|
- **支持的系统**:Ubuntu 18.04+, Debian 10+, CentOS 8+, RHEL 8+
|
||||||
- **可选依赖**:
|
- **依赖库**:
|
||||||
|
- `libgtk-3-0` - GTK3 图形界面
|
||||||
|
- `libwebkit2gtk-4.1` - WebKit 浏览器引擎
|
||||||
|
- `libappindicator3-1` - 系统托盘支持
|
||||||
- `libasound2` - 音频支持
|
- `libasound2` - 音频支持
|
||||||
- `libonnxruntime` - ONNX 模型推理
|
|
||||||
|
|
||||||
## ❓ 常见问题
|
## ❓ 常见问题
|
||||||
|
|
||||||
@ -105,9 +124,20 @@ sudo apt-get install libasound2
|
|||||||
sudo yum install alsa-lib
|
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
|
```bash
|
||||||
|
# CLI 帮助
|
||||||
./impress_asr --help
|
./impress_asr --help
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -120,7 +150,7 @@ ls -lh "$DIST_DIR/"
|
|||||||
|
|
||||||
# 打包成 tar.gz
|
# 打包成 tar.gz
|
||||||
echo ""
|
echo ""
|
||||||
echo "[5/5] 打包成 tar.gz 文件..."
|
echo "[6/6] 打包成 tar.gz 文件..."
|
||||||
cd "$DIST_DIR/.."
|
cd "$DIST_DIR/.."
|
||||||
tar -czf "$OUTPUT_TAR" linux-x64/
|
tar -czf "$OUTPUT_TAR" linux-x64/
|
||||||
|
|
||||||
@ -133,7 +163,10 @@ echo "文件大小:$(ls -lh "$OUTPUT_TAR" | awk '{print $5}')"
|
|||||||
echo "=============================================="
|
echo "=============================================="
|
||||||
echo ""
|
echo ""
|
||||||
echo "Linux 运行所需文件清单:"
|
echo "Linux 运行所需文件清单:"
|
||||||
|
echo " - impress_asr_gui (GUI 桌面应用)"
|
||||||
echo " - impress_asr (CLI 工具)"
|
echo " - impress_asr (CLI 工具)"
|
||||||
|
echo " - icon.png (应用图标)"
|
||||||
|
echo " - tray-icon.png (托盘图标)"
|
||||||
echo " - config.toml (可选,配置文件)"
|
echo " - config.toml (可选,配置文件)"
|
||||||
echo " - models/ (模型文件目录)"
|
echo " - models/ (模型文件目录)"
|
||||||
echo " - dist/ (前端资源)"
|
echo " - dist/ (前端资源)"
|
||||||
|
|||||||
6254
gen/schemas/linux-schema.json
Normal file
6254
gen/schemas/linux-schema.json
Normal file
File diff suppressed because it is too large
Load Diff
BIN
icons/icon.png
Normal file
BIN
icons/icon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.9 KiB |
Loading…
Reference in New Issue
Block a user