macOS 平台的分发体系比 Windows 严格得多:用户下载的应用必须通过 Gatekeeper 的安全检查,否则会直接拦截。因此,macOS 产物不仅仅是生成一个可运行包,更包含签名、打包镜像、公证这一整套流程。Tauri 已经把这些步骤深度集成到构建命令中,你只需要配置好凭据,一条命令就能产出合规的安装包。
APP 包:Tauri 的默认产物
在项目根目录执行 tauri build,Tauri 会在 src-tauri/target/release/bundle/macos/ 下生成一个标准的 .app 文件夹。这个 .app 就是 macOS 应用的原始形态,双击即可运行(前提是已签名或本地开发时临时绕过了安全策略)。你可以直接把它压缩后分享,但更常见的做法是制作 .dmg 镜像,因为用户习惯拖拽安装。
查看 APP 包内容:在 Finder 中右键点击 .app → “显示包内容”,里面包含 Rust 编译的二进制、WebView 资源、图标等,结构完全符合 Apple 规范。Tauri 会自动注入 Info.plist 等必需元数据,开发者无需手动编写。
DMG 镜像:用户友好的“安装盘”
DMG 是 macOS 上最经典的软件分发格式,它就像一个虚拟磁盘,打开后通常显示应用图标和 Applications 文件夹快捷方式,用户拖拽即可完成安装。Tauri 原生支持生成带自定义背景和布局的 DMG。
配置方法:在 tauri.conf.json 的 bundle 段落中加入 macOS 配置:
{
"bundle": {
"macOS": {
"dmg": {
"background": "./assets/dmg-background.png",
"windowSize": { "width": 600, "height": 400 }
}
}
}
}
背景图片建议用 .png,尺寸与 windowSize 匹配,并在图片上预先绘制好箭头、说明文字,引导用户将应用图标拖到右侧的 Applications 文件夹快捷方式处。Tauri 会自动处理图标位置,也可以手动指定 appPosition 和 applicationFolderPosition。
构建时只需运行 tauri build,最终 DMG 文件会出现在 bundle/dmg/ 目录,同时自动生成对应的 .dmg 文件,名称已包含版本号。
签名:让系统信任你的应用
macOS 要求所有分发到用户设备的应用都必须用 “Developer ID Application” 证书签名。没有签名的 .app 在用户机器上打开时会提示 “无法验证开发者”,甚至直接被隔离。
准备工作:
- 加入 Apple Developer Program(年费 ¥688)。
- 在 Mac 的 钥匙串访问 中,从 Apple 开发者网站下载并安装 “Developer ID Application” 证书(注意区分 Development 证书,分发必须用 Developer ID)。
- 确保证书对应的私钥在钥匙串中可用,且钥匙串处于解锁状态。
Tauri 配置:在 tauri.conf.json 中指定签名身份:
{
"bundle": {
"macOS": {
"signingIdentity": "Developer ID Application: Your Name (TEAMID)"
}
}
}
TEAMID 是从开发者账号里获取的唯一团队标识。构建时 Tauri 会自动调用 codesign 对二进制和 .app 包进行签名。如果机器上安装了多份证书,一定要精确指定名称,避免签名失败。
公证:必经的云端安全检查
即便应用已经签名,macOS 10.15 之后的 Gatekeeper 仍然要求软件必须经过 Apple 的 Notarization(公证) 扫描,否则用户首次打开时会看到 “无法验证是否不包含恶意软件” 的警告,甚至完全无法运行。公证就是 Apple 对你的应用进行自动化安全审计,确认没有任何恶意代码后,颁发一个可追踪的票据。
传统手动公证 需要使用 xcrun notarytool 上传 .dmg 或 .app,等待几分钟后获取结果,再把票据 “钉” 回应用。整个过程繁琐且容易中断。
Tauri 内置自动化:Tauri CLI 支持在构建后无缝提交公证。你只需提供 Apple ID 和 App 专用密码(在 Apple ID 管理页面生成),通过环境变量注入:
export APPLE_ID="your@email.com"
export APPLE_ID_PASSWORD="xxxx-xxxx-xxxx-xxxx"
export APPLE_TEAM_ID="YOURTEAMID"
tauri build
如果配置无误,Tauri 会在签名完成后自动调用公证服务,并等待结果。成功后会显示 “notarization succeeded”,此时生成的 DMG 已经带有公证票据,用户下载后可以顺利打开。
注意事项:
- 网络稳定,公证对超时敏感。
- 使用的
signingIdentity必须与 Apple ID 关联的开发者账号一致。 - 如果遇到 “invalid signature” 或 “unable to notarize”,检查二进制是否引入了未签名的动态库(例如通过
macOS > frameworks引入的第三方库),这类库也需要先用codesign签名。
一句实用总结
tauri build 配合签名证书和环境变量,能一次性完成 编译 → 签名 → 打包 DMG → 公证 四步操作,产出的 .dmg 直接满足上传官网、发邮件、提交软件下载站的要求,无需额外后处理。这是 Tauri 在 macOS 发布流程上最实际的效率提升。