5.2 macOS 应用目录与构建
3 分钟阅读
原文链接: macOS Application Bundle
5.2 macOS 应用目录与构建
macOS 应用不是一个“单个 exe”,而是一个被称为 Application Bundle(.app) 的目录结构。Finder 看到的是普通应用图标,实际上它是一个组织良好的文件夹。
构建命令
在你的 Mac 上执行:
| |
只想生成 .app(不生成 DMG):
| |
输出目录
构建完成后,最常见的位置是:
| |
在 Apple Silicon 上,Rust 默认构建 aarch64-apple-darwin。想让同一个 .app 同时兼容 Apple Silicon 与 Intel Mac,可构建 universal binary:
| |
这种构建的输出目录通常是:
| |
如果确定只支持 Apple Silicon,则不传 --target,继续使用 target/release/ 即可;此时通常建议把上文提到的“最低系统版本”提高到 12.0。
.app 内部布局
一个典型 .app 的目录:
| |
对用户来说,拖到“应用程序”文件夹的是整个 <产品名>.app。
为什么这个布局重要?
在开发 Tauri 时,你通常不用手写这个结构,但理解它有实际价值:
- 图标、系统文件、扩展内容放错目录会导致签名或启动失败;
- 需要给 macOS 权限说明(摄像头、麦克风)时要改
Info.plist; - 上架 Mac App Store 时要提供 entitlements。
自定义 Info.plist
在 src-tauri/Info.plist 中补充键值对,Tauri 会与自动生成的值合并:
| |
应用沙盒与 Entitlements
如果上架 Mac App Store,通常要开启 App Sandbox,需要 Entitlements 文件并在 tauri.conf.json 指定:
| |
设置最低系统版本
默认 Tauri v2 支持 macOS 10.13 以上。若需要更高版本:
| |
在开发中查看 .app 内部
在 Finder 中对 .app 右键,选择“显示包内容”(Show Package Contents),即可看到上面的目录。用命令也可以:
| |
常见问题
- 双击打不开:通常是没有签名或刚从其他 Mac 拷贝。可执行
xattr -dr com.apple.quarantine 你的应用.app临时处理,正式分发请做签名。 - 版本冲突:
tauri.conf.json的 version 会同步到 Info.plist,不要在 Info.plist 里再覆盖一套。 - PATH 问题:macOS GUI 应用不继承 shell 的 PATH。如果需要从 Rust 调用
ffmpeg等命令,参考 Tauri 的fix-path-env-rs工具或传绝对路径。