macOS应用程序包
应用程序包是 macOS 上运行的包格式。它是一个简单的目录,包括应用程序成功运行所需的一切,包括应用程序可执行文件、资源、Info.plist 文件以及 macOS 框架等其他文件。
要将应用程序打包为 macOS 应用程序包,您可以使用 Tauri CLI,并在 Mac 计算机上运行 tauri build
命令。
npm run tauri build -- --bundles app
yarn tauri build --bundles app
pnpm tauri build --bundles app
deno task tauri build --bundles app
cargo tauri build --bundles app
文件结构
macOS 应用程序包是具有以下结构的目录
├── <productName>.app│ ├── Contents│ │ ├── Info.plist│ │ ├── ...additional files from [`tauri.conf.json > bundle > macOS > files`]│ ├── MacOS│ │ ├── <app-name> (app executable)│ ├── Resources│ │ ├── icon.icns (app icon)│ │ ├── ...resources from [`tauri.conf.json > bundle > resources`]│ ├── _CodeSignature (codesign information generated by Apple)│ ├── Frameworks│ ├── PlugIns│ ├── SharedSupport
有关更多信息,请参阅 官方文档。
本地化原生配置
应用程序包由 Info.plist
文件配置,其中包含包含您的应用程序标识和配置值的键值对,这些键值对由 macOS 读取。
Tauri 自动配置最重要的属性,如您的应用程序二进制名称、版本、bundle 标识符、最低系统版本等。
要扩展配置文件,在 src-tauri
文件夹中创建一个 Info.plist
文件,并包含您想要的键值对。
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><dict> <key>NSCameraUsageDescription</key> <string>Request camera access for WebRTC</string> <key>NSMicrophoneUsageDescription</key> <string>Request microphone access for WebRTC</string></dict></plist>
此 Info.plist
文件将与 Tauri CLI 生成的内容合并。请谨慎覆盖默认值,如应用程序版本,因为它们可能与其他配置值冲突并引发意外行为。
有关更多信息,请参阅 官方 Info.plist 文档。
Info.plist 本地化
Info.plist
文件本身仅支持单一语言,通常是英语。如果您想支持多种语言,可以为每种附加语言创建 InfoPlist.strings
文件。每个文件都应放在应用程序包中的 Resources
目录中的特定于语言的 lproj
目录中。
要自动捆绑这些文件,可以利用 Tauri 的 资源 功能。为此,请在您的项目中创建以下模式的文件结构
├── src-tauri│ ├── tauri.conf.json│ ├── infoplist│ │ ├── de.lproj│ │ │ ├── InfoPlist.strings│ │ ├── fr.lproj│ │ │ ├── InfoPlist.strings
虽然 infoplist
目录名称可以自由选择,但只要您在下面的资源配置中更新它,lproj
目录必须遵循 <lang-code>.lproj
的命名规则,并且字符串目录文件必须命名为 InfoPlist.strings
(首字母 i 和 p)。在大多数情况下,语言代码应是一个遵循 BCP 47 的两位字母代码。
对于上面的示例 Info.plist
,de.lproj > InfoPlist.strings
文件可能看起来像这样
NSCameraUsageDescription = "Kamera Zugriff wird benötigt für WebRTC Funktionalität";NSMicrophoneUsageDescription = "Mikrofon Zugriff wird benötigt für WebRTC Funktionalität";
最后,使用上述提到的资源功能,让 Tauri 捕获这些文件
{ "bundle": { "resources": { "infoplist/**": "./" } }}
权限
权限是一种特殊的苹果配置键值对,它充当一种权利或特权,授予您的应用特定的功能,例如充当用户的默认电子邮件客户端和使用应用沙盒功能。
签名您的应用时应用权限。有关更多信息,请参阅代码签名文档。
为了定义应用所需的权限,您必须创建权限文件并配置 Tauri 使用它。
- 在
src-tauri
文件夹中创建一个Entitlements.plist
文件,并配置您的应用需要的键值对
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><dict> <key>com.apple.security.app-sandbox</key> <true/></dict></plist>
- 配置 Tauri 使用 Entitlements.plist 文件
{ "bundle": { "macOS": { "entitlements": "./Entitlements.plist" } }}
有关更多信息,请参阅官方文档。
最低系统版本
默认情况下,您的 Tauri 应用支持 macOS 10.13 及以上版本。如果您正在使用需要较新 macOS 系统的 API,并希望在应用程序包中强制执行此要求,则可以配置 tauri.conf.json > bundle > macOS > minimumSystemVersion
的值
{ "bundle": { "macOS": { "minimumSystemVersion": "12.0" } }}
包括 macOS 框架
如果您的应用程序运行需要额外的 macOS 框架,您可以将其列在 tauri.conf.json > bundle > macOS > frameworks
配置中。框架列表可以包括系统或自定义框架和 dylib 文件。
{ "bundle": { "macOS": { "frameworks": [ "CoreAudio", "./libs/libmsodbcsql.18.dylib", "./frameworks/MyApp.framework" ] } }}
添加自定义文件
您可以使用 tauri.conf.json > bundle > macOS > files
配置来将自定义文件添加到应用程序包中,它将目标路径映射到相对于 tauri.conf.json
文件的源路径。文件被添加到 <product-name>.app/Contents
文件夹。
{ "bundle": { "macOS": { "files": { "embedded.provisionprofile": "./profile-name.provisionprofile", "SharedSupport/docs.md": "./docs/index.md" } } }}
在上面的例子中,profile-name.provisionprofile
文件被复制到 <product-name>.app/Contents/embedded.provisionprofile
,而 docs/index.md
文件被复制到 <product-name>.app/Contents/SharedSupport/docs.md
。
© 2025 Tauri 贡献者。CC-BY / MIT