アプリバンドルのビルド
cargo tauri build による .app バンドルのビルド、ターゲット設定、アイコン、インストール
アプリバンドルのビルド
cargo tauri build コマンドは、Rust バックエンドをコンパイルし、フロントエンドアセットをバンドルし、macOS 向けの配布可能な .app バンドルを生成する。
基本的なビルド
cargo tauri build
これにより、以下のパイプライン全体が実行される。
tauri.conf.jsonのbeforeBuildCommandを実行(フロントエンドビルド)- Rust コードをリリースモードでコンパイル
frontendDistディレクトリをバイナリに埋め込み.appバンドルを作成
⚠️ Warning
beforeBuildCommand の設定が必須。フロントエンド(Vite 等)を埋め込む自己完結型アプリでは、tauri.conf.json に beforeBuildCommand を設定する必要がある。設定がない場合、cargo tauri build は frontendDist にある古いファイルをリビルドせずにそのままバンドルしてしまう。ビルドはエラーなく成功するが、古いフロントエンドコードが含まれる。
{
"build": {
"beforeBuildCommand": "pnpm build",
"frontendDist": "../dist"
}
}beforeBuildCommand が未設定の場合、ビルドが不自然に高速(30 秒以上かかるべきところが数秒)で完了することがある。これは Cargo がコンパイルすべきものがないと判断したためである。
出力は以下の場所に生成される。
target/release/bundle/macos/YourApp.app
バンドル設定
tauri.conf.json でバンドルを設定する。
{
"bundle": {
"active": true,
"targets": "all",
"category": "DeveloperTool",
"macOS": {
"minimumSystemVersion": "10.15"
}
}
}
バンドルターゲット
targets フィールドで、作成するバンドル形式を制御する。
| 値 | 出力 |
|---|---|
"all" | 利用可能なすべての形式(.app、.dmg) |
["app"] | .app バンドルのみ |
["dmg"] | .dmg ディスクイメージのみ |
開発のイテレーションでは、.app のみをビルドする方が .dmg 作成をスキップできるため高速である。
カテゴリ
category フィールドは macOS のアプリケーションカテゴリを設定する。Finder や App Store に表示される。一般的な値は以下の通りである。
"DeveloperTool"— 開発者ツール向け"Productivity"— 生産性アプリ向け"Utility"— 一般的なユーティリティ向け
最小システムバージョン
{
"macOS": {
"minimumSystemVersion": "10.15"
}
}
サポートする最も古い macOS バージョンを設定する。ほとんどのアプリでは 10.15(Catalina)が妥当な最小値である。これより低く設定すると、新しい API との互換性の問題が生じる可能性がある。
アイコン設定
Tauri は bundle.icon 配列で指定されたアイコンを参照する。
{
"bundle": {
"icon": ["icons/icon.png"]
}
}
配列が空または省略された場合、Tauri はデフォルトのアイコンを使用する。本番アプリでは、少なくとも1つの高解像度 PNG(1024x1024 を推奨)を提供すること。Tauri は必要な .icns ファイルを自動的に生成する。
💡 Tip
アイコンのパスは tauri.conf.json からの相対パスである。アイコンのソースファイルは設定ファイルの隣に icons/ ディレクトリを作成して配置するとよい。
/Applications へのインストール
ビルド後、.app バンドルを /Applications にインストールする。
# 1. 実行中のアプリを終了(もしあれば)
killall YourApp 2>/dev/null || true
sleep 1
# 2. 古いバンドルを退避(mv はアトミック -- macOS Pitfalls 参照)
mv /Applications/YourApp.app /tmp/YourApp-old-$$.app 2>/dev/null || true
# 3. 新しいバンドルをコピー
cp -R target/release/bundle/macos/YourApp.app /Applications/
# 4. 検疫フラグをクリア(対象を限定: 検疫属性のみ削除)
xattr -dr com.apple.quarantine /Applications/YourApp.app
⚠️ Warning
既存の .app バンドルに cp -rf で上書きしてはならない。 Contents/MacOS/ 内のバイナリが更新されない場合がある。必ず古いバンドルを先に削除(または移動)すること。詳細は macOS デプロイの注意点 を参照。
代替設定でのビルド
異なる tauri.conf.json ファイルでビルドする場合:
cargo tauri build --config tauri.conf.ztoffice.json
代替設定はベース設定の上にマージされるため、異なるフィールドのみを含めればよい。詳細はマルチコンフィグを参照。
ビルドの検証
ビルド後、バイナリが最新であることを確認する。
# Check the binary modification time
stat -f "%Sm" target/release/bundle/macos/YourApp.app/Contents/MacOS/YourApp
# Verify frontend assets are embedded (if applicable)
# Search for a known string in the built JS
grep -l "some-unique-string" target/release/bundle/macos/YourApp.app/Contents/Resources/*
タイムスタンプが古い場合や期待する文字列が見つからない場合は、Cargo キャッシュ無効化を参照。