macOS 应用程序包
应用程序包是在 macOS 上执行的包格式。它是一个简单的目录,包含你的应用程序成功运行所需的一切, 包括你的应用程序可执行文件、资源、Info.plist 文件和其他文件(如 macOS 框架)。
要将你的应用打包为 macOS 应用程序包,你可以使用 Tauri CLI 并在 Mac 计算机中运行 tauri build 命令:
npm run tauri build -- --bundles appyarn tauri build --bundles apppnpm tauri build --bundles appdeno task tauri build --bundles appbun tauri build --bundles appcargo tauri build --bundles appmacOS 应用程序包是一个具有以下结构的目录:
├── <productName>.app│ ├── Contents│ │ ├── Info.plist│ │ ├── ...来自 [`tauri.conf.json > bundle > macOS > files`] 的其他文件│ ├── MacOS│ │ ├── <app-name> (应用程序可执行文件)│ ├── Resources│ │ ├── icon.icns (应用程序图标)│ │ ├── ...来自 [`tauri.conf.json > bundle > resources`] 的资源│ ├── _CodeSignature (Apple 生成的代码签名信息)│ ├── Frameworks│ ├── PlugIns│ ├── SharedSupport有关更多信息,请参阅 官方文档。
应用程序包由 Info.plist 文件配置,该文件包含具有你的应用标识和 macOS 读取的配置值的键值对。
Tauri 会自动配置最重要的属性,例如你的应用二进制文件名称、版本、包标识符、最低系统版本等。
要扩展配置文件,请在 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 文件本身仅支持单一语言,通常是英语。如果你想支持多种语言,可以为每种其他语言创建 InfoPlist.strings 文件。每个文件都属于应用程序包中 Resources 目录中其自己的特定于语言的 lproj 目录。
要自动打包这些文件,你可以利用 Tauri 的 resources 功能。为此,请按照以下模式在你的项目中创建文件结构:
├── 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/**": "./" } }}授权是一个特殊的 Apple 配置键值对,充当授予你的应用特定功能的权利或特权, 例如充当用户的默认电子邮件客户端和使用 App Sandbox 功能。
授权在你的应用程序签名时应用。有关更多信息,请参阅 代码签名文档。
要定义你的应用程序所需的授权,你必须创建授权文件并配置 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 及更高版本。如果你使用的 API 需要更新的 macOS 系统,并且想在你的应用程序包中强制执行该要求,
你可以配置 tauri.conf.json > bundle > macOS > minimumSystemVersion 值:
{ "bundle": { "macOS": { "minimumSystemVersion": "12.0" } }}如果你的应用程序需要额外的 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 Contributors. CC-BY / MIT