Tauri 应用体积优化Cargo Profile + 移除未用命令,把“本来就小”再压一压

📅 发布时间:2026/7/17 21:23:50 👁️ 浏览次数:
Tauri 应用体积优化Cargo Profile + 移除未用命令,把“本来就小”再压一压
一、为什么 Tauri 还能再瘦Tauri 不打包浏览器内核使用系统 WebView所以基线体积已经很优秀。真正还能继续挤出来的空间通常来自Rust 二进制的链接与符号信息LTO、strip、debug info你编进去了但实际没用到的命令、插件与代码路径编译优化目标选择不当优先速度 vs 优先体积二、Cargo 配置稳定工具链下的“体积优先”推荐 Profile把下面配置加到src-tauri/Cargo.toml你给的配置就是官方推荐的稳定版思路[profile.dev] incremental true # Compile your binary in smaller steps. [profile.release] codegen-units 1 # Allows LLVM to perform better optimization. lto true # Enables link-time-optimizations. opt-level s # Prioritizes small binary size. Use 3 if you prefer speed. panic abort # Higher performance by disabling panic handlers. strip true # Ensures debug symbols are removed.1. 这些字段分别在“省什么”incremental truedev开发期加速编译不直接决定最终发布体积但能提升迭代体验。codegen-units 1release编译更慢一些但 LLVM 更容易做跨模块优化通常能换来更小体积与更好性能。lto truerelease链接时优化通常对体积和性能都有帮助但会显著拉长 release 构建时间。opt-level srelease以体积为优先的优化级别如果你的场景更看重性能例如大量计算可以用3。另外z也常用于“极致体积”但要评估是否影响性能与构建时间。panic abortrelease去掉 panic 展开unwind相关逻辑减少体积并提升某些路径性能。取舍点崩溃时可恢复信息更少更像“直接终止”你需要通过日志/错误上报补足诊断能力。strip truerelease去掉符号/调试信息通常能立刻缩小二进制体积。取舍点线上崩溃栈更难看懂建议保留一份带符号的构建产物用于内部排障。2. 小建议速度优先 vs 体积优先怎么选工具类、GUI 应用opt-level s往往性价比更高体积降明显性能仍足够强性能场景考虑opt-level 3体积会略涨但更快三、移除未用命令removeUnusedCommands 让你“只为用到的命令买单”你给的配置非常关键建议在tauri.conf.json打开{build:{removeUnusedCommands:true}}它的含义是如果某个命令从未在你的 capabilityACL文件里被允许过就把它从最终产物里移除避免“编进去了却永远用不到”的体积浪费。1. 想让它收益最大你需要配合做两件事ACL 里只允许你真的会调用的命令不要图省事把默认项全放开否则“移除未用命令”就没有空间可移除了。定期清理 capability 配置项目演进过程中很多命令/插件会变成历史遗留ACL 也要跟着瘦身。2. 版本要求与注意点该能力要求较新的版本组合你贴的说明tauri2.4、tauri-build2.1、tauri-plugin2.1、tauri-cli2.4它不会考虑运行时动态添加的 ACL所以如果你有“运行期注入权限/命令允许列表”的机制需要额外核对最终行为是否符合预期四、落地检查清单发布前 5 分钟自检Cargo.toml的[profile.release]是否启用了lto/strip/panicaborttauri.conf.json是否开启removeUnusedCommandscapabilityACL是否“最小化允许”只允许真正用到的 commandsrelease 构建是否走统一命令避免有人用 debug 构建去发布是否保留一份带符号构建用于排障尤其当你启用了 strip