Skip to content

发布上线:构建与分发

恭喜您!您已经设置好环境,构建了一个精美的前端,将其连接到一个强大的 Rust 后端,并使用原生功能完善了您的应用程序。现在,是时候将您的作品从开发实验室中取出,并向世界发布了。在本章中,我们将把您的源代码转化为优化后的、可安装的二进制文件。

在开发过程中,我们使用了 tauri dev 命令。此命令侧重于热重载和快速反馈循环。然而,它生成的二进制文件未经优化,并包含调试符号,导致它们体积庞大且运行缓慢。要创建一个生产就绪的应用程序,我们需要使用构建命令。

在运行之前,您必须确保应用程序在 tauri.conf.json 中拥有一个唯一的标识符。如果您仍在使用 com.tauri.dev,构建将会失败。请将其更改为唯一的名称,例如 com.yourname.appname。

src-tauri/tauri.conf.json
{
"identifier": "com.mycompany.awesomeapp",
...
}

配置完成后,在您的终端中运行以下命令:

Terminal window
# 如果使用 npm
npm run tauri build
# 如果直接使用 cargo
cargo tauri build

此命令执行一系列关键任务:

  • 它运行您的前端构建脚本(例如 npm run build)来生成 HTML/CSS/JS 资源。
  • 它使用 --release 标志编译 Rust 代码,启用积极的优化。
  • 它将前端资源直接打包到 Rust 二进制文件中。
  • 它生成平台特定的安装程序(MSI、DMG、DEB 等)。

操作系统是保护性的看门人。如果您尝试运行一个未经“认可”的应用程序,操作系统会警告用户或完全阻止该应用程序。这就是代码签名发挥作用的地方。它就像一个数字蜡封,证明应用程序来自您,并且未被篡改。

  • macOS:这是最严格的平台。要在用户不看到“已损坏且无法打开”错误的情况下分发应用程序,您必须对应用程序进行签名并使用 Apple 进行公证 (Notarize)。这需要 Apple Developer Program 会员资格。Tauri 需要您的证书和特定的环境变量(如 APPLE_CERTIFICATE 和 APPLE_PASSWORD),以便在构建过程中自动完成此操作。
  • Windows:虽然您可以分发未签名的应用程序,但用户很可能会看到可怕的“Windows 已保护你的电脑”SmartScreen 警告。为避免这种情况,您需要一个 EV(扩展验证)或 OV(组织验证)代码签名证书。您可以在 tauri.conf.json 或环境变量中配置证书路径和密码。
  • Linux:通常依赖于发行版维护者或像 AppImage 这样的格式,它们不以相同的方式严格执行代码签名,尽管为仓库签名 GPG 密钥是常见做法。

Tauri 足够智能,可以为正在构建的机器生成适当的安装程序。您可以在配置的 bundle 部分中配置要输出的格式。

src-tauri/tauri.conf.json
{
"bundle": {
"active": true,
"targets": "all", // 或者指定目标,例如 ["msi", "nsis"]
...
}
}

以下是每个平台通常会生成的内容:

平台格式描述
Windows.msi / .exe.msi 是标准 Windows 安装程序。Tauri 还支持 NSIS (.exe),它通常更受青睐,因为它提供了更轻量级、更自定义的安装体验。
macOS.dmg / .app.app 是可执行 bundle,而 .dmg (磁盘镜像) 是用于分发的标准容器。
Linux.deb / .AppImage.deb 适用于基于 Debian/Ubuntu 的系统。.AppImage 是一种便携式格式,无需安装即可在大多数 Linux 发行版上运行。
Android.apk / .aabAPK 用于直接安装;AAB (Android App Bundle) 是上传到 Google Play 商店所必需的。

在本地机器上手动构建进行测试是可以的,但对于真正的发布,您需要一致性。此外,由于平台特定的 WebView 绑定,通常无法在 Windows 上构建 macOS 应用程序,反之亦然。解决方案是持续集成 (CI)。

Tauri 提供了一个官方的 GitHub Action,可以自动化构建和发布过程。通过设置工作流文件,GitHub 将启动虚拟机(Windows、macOS 和 Ubuntu),在所有这些虚拟机上同时构建您的应用程序,并将安装程序上传到 GitHub Release。

这是一个简化的 .github/workflows/release.yml 文件示例:

name: Release
on:
push:
tags:
- 'v*'
jobs:
release:
strategy:
fail-fast: false
matrix:
platform: [macos-latest, ubuntu-22.04, windows-latest]
runs-on: ${{ matrix.platform }}
steps:
- uses: actions/checkout@v4
- name: setup node
uses: actions/setup-node@v4
with:
node-version: 20
- name: install Rust stable
uses: dtolnay/rust-toolchain@stable
# 安装依赖 (仅限 Linux) 需要在此处进行特定步骤...
- name: Build the app
uses: tauri-apps/tauri-action@v0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tagName: ${{ github.ref_name }}
releaseName: 'App v__VERSION__'
releaseBody: 'See the assets to download this version and install.'
releaseDraft: true
prerelease: false

通过此设置,只需将像 v1.0.0 这样的标签推送到您的仓库,就会触发云构建器。几分钟后,您的 GitHub Releases 页面将填充适用于所有主要操作系统的专业安装程序,供您的用户下载。