コンパイルオプションを調整し、アプリのバイナリサイズを劇的に削減します。
デフォルトの release プロファイルは実行速度を優先しますが、設定変更でサイズ優先にできます。
1. Cargo.toml の設定
src-tauri/Cargo.toml に以下のプロファイル設定を追加・修正します。
[profile.release]
# パニック時のスタックトレース情報を削除 (panic = "abort")
# ただしデバッグが困難になるため注意
panic = "abort"
# 最適化レベル: "z" (サイズ最小) または "s" (サイズ優先)
opt-level = "z"
# Link Time Optimization (LTO): 全体を解析して不要コード削除を徹底
lto = true
# コード生成ユニット数を1にすると並列ビルドが無効になるが、圧縮率は上がる
codegen-units = 1
# デバッグシンボルを削除
strip = true
2. UPX で圧縮する (非推奨・または注意が必要)
upx などの実行ファイル圧縮ツールを使うとさらに半分以下のサイズにできますが、以下の理由から推奨されないケースが増えています。
- ウイルス対策ソフトによる誤検知が増える
- 起動時の解凍オーバーヘッドで起動時間が遅くなる場合がある
- macOS での署名検証トラブル
どうしても極限まで小さくしたい場合のみ試してください。
3. 標準ライブラリの再コンパイル (build-std)
Rust の標準ライブラリ自体も最適化してビルドし直すことで、さらにサイズを削れます。
(Nightly ツールチェーンが必要です)
cargo +nightly build --release -Z build-std=std,panic_abort --target x86_64-pc-windows-msvc