3.0 KiB
3.0 KiB
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 在应用包内可被正确解析。
优点
-
逻辑清晰
先按 sidecar 基名(与app.shell().sidecar("qiming-lanproxy")一致)解析,再按带 target triple 的文件名回退,兼顾打包与开发两种场景。 -
与 Tauri 行为一致
tauri-plugin-shell的relative_command_path使用base_dir.join(program),即与主程序同目录下的基名;优先用基名查找与官方 sidecar 用法一致。 -
跨平台处理正确
- 非 Windows:
qiming-lanproxy - Windows:
qiming-lanproxy.exe
resolve_bundled_bin_path直接使用传入的bin_name,不自动加.exe,此处区分是合理的。
- 非 Windows:
-
注释到位
文档注释说明了「sidecar 随包集成、无需安装」以及两步查找顺序,便于后续维护。 -
无多余依赖
未引入新依赖,仅调整查找顺序与命名策略。
潜在问题与建议
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),其余为可选优化。