Build Ter-obfuscate
Garble adalah alat build Go yang menggantikan go build untuk mengganti nama simbol, obfuscate konstanta, dan menghapus informasi debug dari binary hasil. Wails v3 memiliki dukungan first-class untuk Garble melalui dua perintah baru.
Prasyarat
Section titled “Prasyarat”- Go 1.26.2 atau lebih baru — diperlukan oleh Garble v0.16.0
- Garble v0.16.0
Wajib: tambahkan tag JSON ke tipe service Anda
Section titled “Wajib: tambahkan tag JSON ke tipe service Anda”Struct apa pun yang dikembalikan atau diterima metode service terikat harus memiliki tag JSON eksplisit di setiap field exported:
// Without tags — breaks under Garbletype OrderSummary struct { ID int Total float64 LineItems []LineItem}
// With tags — safe under Garbletype OrderSummary struct { ID int `json:"id"` Total float64 `json:"total"` LineItems []LineItem `json:"lineItems"`}Tipe Wails sendiri — Screen, Rect, Point, Size, EnvironmentInfo, OSInfo, Capabilities — sudah ditag. Anda hanya perlu men-tag tipe Anda sendiri.
Build dengan obfuscation
Section titled “Build dengan obfuscation”-
Hasilkan file ID stabil
Jalankan ini setiap kali Anda menambah, mengganti nama, atau menghapus metode service terikat:
Terminal window wails3 generate bindings -obfuscatedIni membuat
wails_obfuscated.gen.godi direktori paket main Anda — commit file ini. -
Build dengan Garble
Terminal window wails3 build --obfuscatedMembangun aplikasi menggunakan bindings ter-obfuscate.
Meneruskan flag ekstra ke Garble
Section titled “Meneruskan flag ekstra ke Garble”Gunakan --garbleargs untuk meneruskan opsi langsung ke garble:
# Obfuscate string literals and reduce binary sizewails3 build --obfuscated --garbleargs "-literals -tiny"
# Reproducible output — same seed produces the same binarywails3 build --obfuscated --garbleargs "-seed=deadbeef"Lihat dokumentasi Garble untuk daftar lengkap flag yang didukung.
Lanjutan: menulis file ID ke paket berbeda
Section titled “Lanjutan: menulis file ID ke paket berbeda”Secara default wails_obfuscated.gen.go ditulis di samping paket main Anda. Jika proyek Anda menyimpan service di sub-paket yang diimpor oleh main, Anda dapat menulis file di sana dengan -obfuscated-output:
wails3 generate bindings -obfuscated -obfuscated-output ./internal/servicesTroubleshooting
Section titled “Troubleshooting”garble: command not found
Section titled “garble: command not found”Garble belum terinstal atau $(go env GOPATH)/bin tidak ada di PATH Anda.
export PATH="$PATH:$(go env GOPATH)/bin"Frontend menerima nilai field salah atau kosong
Section titled “Frontend menerima nilai field salah atau kosong”Tipe return service Anda tidak memiliki tag json:"...". Periksa setiap struct yang dikembalikan metode terikat dan tambahkan tag eksplisit ke setiap field exported.
Error binding not found di konsol browser
Section titled “Error binding not found di konsol browser”File ID stabil hilang atau tidak dikompilasi. Periksa:
wails_obfuscated.gen.goada di direktori paket main (atau direktori yang Anda teruskan ke-obfuscated-output)- Anda menjalankan
wails3 build --obfuscated, yang menambahkan build tagwails_obfuscated - Jika Anda menggunakan
-obfuscated-output, paket tujuan diimpor olehmain
Windows Defender menandai build sebagai virus
Section titled “Windows Defender menandai build sebagai virus”Binary Go ter-obfuscate Garble ditandai secara heuristik oleh Windows Defender selama build karena tidak memiliki simbol debug dan menyerupai executable packed. Build gagal dengan:
open C:\Users\...\AppData\Local\Temp\go-build...\a.out.exe: The file contains a virus or potentially unwanted software.Tambahkan direktori temp (tempat Go menulis artifact build intermediate) dan direktori proyek ke daftar exclusion Defender:
Add-MpPreference -ExclusionPath "$env:TEMP"Add-MpPreference -ExclusionPath "C:\path\to\your\project"Exclusion ini hanya berlaku untuk path yang ditentukan dan tidak menonaktifkan Defender secara global.
Build gagal dengan unsupported Go version
Section titled “Build gagal dengan unsupported Go version”Garble v0.16.0 memerlukan Go 1.26.2 atau lebih baru. Upgrade Go, atau konsultasikan halaman rilis Garble untuk versi yang kompatibel dengan toolchain Anda.