5 应用体积
3 分钟阅读
Tauri 默认就能生成非常小的二进制文件,不过再压一压也无妨。下面是一些达到最优效果的技巧与诀窍。
Cargo 配置
对你的项目来说,最简单且与前端无关的体积优化之一,就是添加一个 Cargo profile。
根据你使用的是稳定版还是 nightly 版 Rust 工具链,可用的选项会略有不同。除非你是高级用户,否则建议坚持使用稳定版工具链。
工具链
| |
| |
参考
注意
这并不是所有可用选项的完整参考,只是我们想特别提醒你关注的几项。
- incremental:以更小的步骤编译二进制文件。
- codegen-units:以牺牲编译期优化为代价加快编译速度。
- lto:启用链接时优化。
- opt-level:决定编译器的侧重方向。用
3优化性能,用z优化体积,s则介于两者之间。 - panic:通过移除 panic 展开来减小体积。
- strip:从二进制文件中剥除符号或调试信息。
- rpath:通过把信息硬编码进二进制文件,帮助找到它所需的动态库。
- trim-paths:从二进制文件中移除可能敏感的信息。
- rustflags:按 profile 分别设置 Rust 编译器标志。
-Cdebuginfo=0:构建中是否应包含调试信息符号。-Zthreads=8:增加编译期间使用的线程数。
移除未使用的命令
在 Pull Request feat: add a new option to remove unused commands 中,我们在 tauri 配置文件里新增了一个选项:
| |
它用于移除在你的能力(capability)文件(ACL)中从未被允许的命令,这样你就不必为用不到的东西付出代价。
提示
要让这个选项收益最大化,请在 ACL 中只包含你实际使用的命令,而不要使用 defaults。
注意
此特性需要 tauri@2.4、tauri-build@2.1、tauri-plugin@2.1 和 tauri-cli@2.4。
注意
它不会考虑运行时动态添加的 ACL,所以在使用这一选项时请务必留意这一点。
它在底层是如何工作的?
`tauri-cli` 会通过一个环境变量与 `tauri-build` 以及 `tauri`、`tauri-plugin` 的构建脚本通信,让它们从 ACL 生成一份允许命令的列表。 随后 `generate_handler` 宏会据此移除未使用的命令。一个内部细节是:这个环境变量目前名为 REMOVE_UNUSED_COMMANDS,其值被设为项目目录(通常是 src-tauri 目录),构建脚本借此找到能力(capability)文件。虽然不推荐,但如果你无法或不想使用 tauri-cli,也可以自己设置这个环境变量来让它工作
(请注意,由于这是实现细节,我们不保证它的稳定性)。