Mengemas Aplikasi Desktop
Kirim berkas biner yang dapat dijalankan.
Mengemas Aplikasi Desktop adalah pelajaran Learn Rust Coding gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Learn Rust Coding, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Learn Rust Coding mencakup 4 pelajaran total.
Dari Debug ke Rilis
Pengembangan menggunakan cargo run, yang membangun biner debug tanpa optimasi. Untuk distribusi, Anda memerlukan build rilis: cargo build --release.
Build rilis mengaktifkan optimasi dan menghapus beban debug, sehingga menghasilkan biner yang jauh lebih kecil dan cepat di dalam target/release/.
cargo build --release
# binary at target/release/my_appMengecilkan Biner
Aplikasi egui dapat berukuran besar karena menautkan backend GPU secara statis. Kurangi ukurannya dengan profil rilis di Cargo.toml.
Mengaktifkan optimasi waktu taut, satu unit pembuatan kode, penghentian saat panik, dan penghapusan simbol dapat mengurangi ukuran berkas eksekutabel akhir hingga beberapa megabita.
[profile.release]
opt-level = "z"
lto = true
codegen-units = 1
panic = "abort"
strip = trueMenyembunyikan Konsol di Windows
Di Windows, aplikasi GUI seharusnya tidak membuka jendela konsol. Tambahkan atribut windows_subsystem di akar crate, dan batasi ke build rilis agar Anda tetap dapat melihat logging selama pengembangan.
Tanpa ini, mengeklik ganda berkas executable akan menampilkan terminal hitam sesaat di samping jendela Anda.
#![cfg_attr(
not(debug_assertions),
windows_subsystem = "windows"
)]
fn main() -> eframe::Result<()> { /* ... */ }Mengatur Ikon Jendela
Aplikasi yang dipoles dengan baik menetapkan ikon jendelanya sendiri. Muat byte PNG saat startup, dekode menjadi RGBA, lalu teruskan IconData melalui NativeOptions.
Sisipkan gambar dengan include_bytes! agar ikon disertakan di dalam binary, bukan sebagai berkas terpisah.
let icon = eframe::icon_data::from_png_bytes(
include_bytes!("../assets/icon.png")
).unwrap();
let opts = eframe::NativeOptions {
viewport: egui::ViewportBuilder::default().with_icon(icon),
..Default::default()
};Mengonfigurasi Viewport
ViewportBuilder mengontrol jendela native: ukuran awal, ukuran minimum, judul, kemampuan mengubah ukuran, dan dekorasi.
Tetapkan nilai bawaan yang wajar agar aplikasi terbuka dengan ukuran yang nyaman saat pertama kali dijalankan, bukan dalam jendela yang terlalu kecil atau terlalu besar.
let viewport = egui::ViewportBuilder::default()
.with_inner_size([900.0, 600.0])
.with_min_inner_size([400.0, 300.0])
.with_title("My App");
let opts = eframe::NativeOptions { viewport, ..Default::default() };Menyisipkan Aset
Untuk distribusi satu berkas, sisipkan font, gambar, dan konfigurasi langsung ke dalam binary dengan include_bytes! dan include_str!.
Dengan begitu, Anda tidak perlu mengirim folder berisi sumber daya dan aplikasi tidak akan rusak saat dijalankan dari direktori kerja yang berbeda.
let font = egui::FontData::from_static(
include_bytes!("../assets/Inter.ttf")
);
// register font in ctx.set_fonts(...)Bundle Aplikasi macOS
Di macOS, binary biasa bukan aplikasi yang dapat diklik. Anda memerlukan bundle .app dengan Info.plist dan ikon .icns.
Alat cargo-bundle mengotomatiskan proses ini dengan membaca metadata dari bagian [package.metadata.bundle] di Cargo.toml.
[package.metadata.bundle]
name = "My App"
identifier = "com.example.myapp"
icon = ["assets/icon.icns"]
# then: cargo bundle --releasePenandatanganan Kode dan Notarisasi
Mendistribusikan aplikasi di macOS ke mesin lain memerlukan penandatanganan dengan sertifikat Developer ID dan notarisasi oleh Apple; jika tidak, Gatekeeper akan memblokir aplikasi tersebut.
Gunakan codesign untuk menandatangani bundle, lalu kirimkan dengan notarytool dan tempelkan tiketnya. Windows juga memperoleh manfaat dari tanda tangan Authenticode untuk menghindari peringatan SmartScreen.
codesign --deep --force --options runtime \
--sign "Developer ID Application: Name (TEAMID)" \
MyApp.appBuild Lintas Platform
Setiap OS memerlukan build native karena eframe menautkan pustaka GPU dan pengelolaan jendela khusus platform. Pendekatan yang andal adalah melakukan build pada setiap OS target, sering kali melalui runner CI.
Alat seperti cross membantu untuk target Linux, tetapi kompilasi silang binary GUI yang sebenarnya ke macOS atau Windows dari Linux masih rentan masalah — sebaiknya gunakan build CI berbasis matriks.
# GitHub Actions matrix
# runs-on: [ubuntu-latest, macos-latest, windows-latest]
cargo build --releaseTarget Web
egui juga dapat dikompilasi menjadi WebAssembly. Lakukan build dengan target wasm32-unknown-unknown dan buat bundle menggunakan trunk, yang menghasilkan kumpulan HTML/JS/WASM yang dapat Anda hosting secara statis.
Kode App yang sama berjalan di browser melalui eframe::WebRunner, yang dipasang pada elemen kanvas.
rustup target add wasm32-unknown-unknown
trunk build --release
# outputs dist/ ready to hostDaftar Periksa Distribusi
Sebelum mengirimkan aplikasi: sesuaikan profil rilis agar ukurannya kecil, sembunyikan konsol Windows, sisipkan ikon dan aset, buat bundle untuk macOS, lalu tanda tangani untuk macOS dan Windows.
Uji artefak akhir pada mesin yang bersih — bukan mesin pengembangan Anda — untuk menemukan pustaka sistem yang hilang atau peringatan binary tanpa tanda tangan yang mungkin dialami pengguna.
Pemeriksaan Singkat
Mengapa atribut windows_subsystem perlu ditambahkan?
Rangkuman
Kirimkan aplikasi dengan cargo build --release, lalu optimalkan profil rilis agar ukurannya kecil dan sembunyikan konsol Windows. Tetapkan ikon dan viewport jendela, lalu sisipkan aset dengan include_bytes! untuk menghasilkan binary mandiri.
Di macOS, buat bundle dengan cargo-bundle, lalu tanda tangani dan lakukan notarisasi; lakukan build per OS melalui CI untuk cakupan lintas platform, dan targetkan WebAssembly dengan trunk. Selalu uji artefak akhir pada mesin yang bersih. Dengan demikian, kursus egui selesai.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Mengemas Aplikasi Desktop” gratis?
Ya — teks lengkap “Mengemas Aplikasi Desktop” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Learn Rust Coding, upgrade ke CoddyKit PRO. Kursus Learn Rust Coding mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Mengemas Aplikasi Desktop”?
Kirim berkas biner yang dapat dijalankan. Kamu berlatih Learn Rust Coding dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Learn Rust Coding?
Tidak diperlukan pengalaman sebelumnya. Learn Rust Coding di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.
Berapa lama pelajaran “Mengemas Aplikasi Desktop” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Learn Rust Coding ini?
Ya. Setiap pelajaran Learn Rust Coding menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Dasar-Dasar UI Mode Langsung
- Widget dan Tata Letak
- Mengelola Keadaan Aplikasi
- Mengemas Aplikasi Desktop