59 lines
3.0 KiB
Markdown
59 lines
3.0 KiB
Markdown
# Code Review: get_lanproxy_bin_path 修改
|
||
|
||
## 变更概要
|
||
|
||
- **文件**: `crates/agent-tauri-client/src-tauri/src/lib.rs`
|
||
- **函数**: `get_lanproxy_bin_path`
|
||
- **目的**: 修复「未找到 qiming-lanproxy-aarch64-apple-darwin 可执行文件」——使 lanproxy 作为 Tauri sidecar 在应用包内可被正确解析。
|
||
|
||
---
|
||
|
||
## 优点
|
||
|
||
1. **逻辑清晰**
|
||
先按 sidecar 基名(与 `app.shell().sidecar("qiming-lanproxy")` 一致)解析,再按带 target triple 的文件名回退,兼顾打包与开发两种场景。
|
||
|
||
2. **与 Tauri 行为一致**
|
||
`tauri-plugin-shell` 的 `relative_command_path` 使用 `base_dir.join(program)`,即与主程序同目录下的基名;优先用基名查找与官方 sidecar 用法一致。
|
||
|
||
3. **跨平台处理正确**
|
||
- 非 Windows: `qiming-lanproxy`
|
||
- Windows: `qiming-lanproxy.exe`
|
||
`resolve_bundled_bin_path` 直接使用传入的 `bin_name`,不自动加 `.exe`,此处区分是合理的。
|
||
|
||
4. **注释到位**
|
||
文档注释说明了「sidecar 随包集成、无需安装」以及两步查找顺序,便于后续维护。
|
||
|
||
5. **无多余依赖**
|
||
未引入新依赖,仅调整查找顺序与命名策略。
|
||
|
||
---
|
||
|
||
## 潜在问题与建议
|
||
|
||
### 1. Linux ARM 的 triple 与仓库文件不一致(既有问题)
|
||
|
||
- **代码**: `target_arch = "arm"` 时使用 `qiming-lanproxy-arm-unknown-linux-gnueabi`。
|
||
- **仓库**: `binaries/` 中实际存在的是 `qiming-lanproxy-arm-unknown-linux-gnueabihf`(以及 `armv5te` / `armv7` 等)。
|
||
- **影响**: 在 Linux ARM(gnueabihf)上,开发态会先失败基名再失败 triple,仍报「未找到」。
|
||
- **建议**: 将 `arm` 分支改为 `qiming-lanproxy-arm-unknown-linux-gnueabihf`,或在回退逻辑中增加对 gnueabi/gnueabihf 的尝试(若需兼容多种 ARM 变体)。
|
||
|
||
### 2. 错误信息未体现「已尝试两种命名」
|
||
|
||
- 当前:两次都失败时,错误仅来自第二次 `resolve_bundled_bin_path(app, bin_name)`,例如「未找到 qiming-lanproxy-aarch64-apple-darwin 可执行文件」。
|
||
- 建议(可选):在两次都失败时统一返回更明确的信息,例如:
|
||
「未找到 qiming-lanproxy 可执行文件(已尝试 sidecar 基名与当前平台 triple 名)」
|
||
便于区分「完全找不到」与「只找不到 triple 名」的情况。
|
||
|
||
### 3. 未知平台时的重复尝试
|
||
|
||
- `#[cfg(not(any(target_os = "macos", target_os = "linux", target_os = "windows")))]` 时 `bin_name = "qiming-lanproxy"`,与 `SIDECAR_BASE_NAME`(非 Windows)相同,会再调用一次 `resolve_bundled_bin_path(app, "qiming-lanproxy")`。
|
||
- 影响:仅多一次相同查找,无功能错误;可视为无害冗余,若追求简洁可在该分支直接 `return resolve_bundled_bin_path(...)` 避免重复。
|
||
|
||
---
|
||
|
||
## 结论
|
||
|
||
- 修改方向正确,能解决「打包后/开发态下按 sidecar 基名或 triple 名找到 lanproxy」的需求。
|
||
- 建议顺带修复 Linux ARM 的 triple 与 `binaries/` 中实际文件名一致(gnueabihf),其余为可选优化。
|