Fyne桌面端与移动端打包
Table of Contents
Fyne 是 Go 语言的一个轻量级 GUI 框架,使用 Fyne 框架编写程序可以构建出桌面端Windows、Linux 和 Mac 平台甚至是移动端 Android 和 iOS 平台的应用。
桌面端
- Windows
编译打包 Fyne 框架编写的桌面端应用,我更喜欢直接使用 go build
而不是 Fyne package
命令,因为 Fyne 自带的打包命令编译出的应用体积会大一倍。所以我一般会使用以下命令:
go build -ldflags "-s -w -H windowsgui" -o test.exe .
-ldflags "参数"
: 表示将引号里面的参数传给编译器-s
:去掉符号信息-w
:去掉 DWARF 调试信息,不能使用 gdb 调试-H windowsgui
: 以 windows gui 形式打包,不带 dos 窗口。
如果有需要,也可以使用 garble 工具对程序代码进行混淆,增加被逆向的难度。
garble -literals build -ldflags "-s -w -H windowsgui" -o test.exe .
接着使用 Resource Hacker 工具加上应用图标和版权信息。可以参考golang如何编译一个最小的带GUI的标准exe_golang编译exe
最后使用 UPX 工具进一步对应用进行压缩加壳,应用体积基本上还能再缩小一半。
upx --best test.exe
- Linux
Linux 平台与 Windows 同理。Go 语言可以直接在 Windows 环境下编译 Linux 的可执行文件,只需要设置 Go 语言环境变量。
go env -w CGO_ENABLED=0
go env -w GOOS=linux
go env -w GOARCH=amd64
go build -ldflags "-s -w" -o test .
不过,我在 Windows 上试了几次没有成功,最后只能在 Linux 虚拟机完成编译打包。
同样也可以使用 garble 和 UPX 工具,对代码进行混淆和压缩。
go build -ldflags "-s -w" -o test .
garble -literals build -ldflags "-s -w" -o test.exe .
upx --best test
- Mac
Mac 端也是可以在 Windows 上进行编译,但是我也没有成功。
go env -w CGO_ENABLED=0
go env -w GOOS=darwin
go env -w GOARCH=amd64
go build -ldflags "-s -w" -o test .
移动端
移动端的打包对于我来说比较麻烦一些,需要配置 Android SDK 和 NDK 的环境。
先在 AndroidDevTools 中下载 SDK Tools 的 installer_r24.4.1-windows.exe,并将 ……\Android\android-sdk\tools\bin
文件夹添加进环境变量 PATH 中。
再在 Android Developers 中下载 NDK 的 android-ndk-r27c-windows.zip,添加环境变量,变量名为 ANDROID_NDK_HOME
,变量值为 ……\Android\android-ndk-r27c-windows\android-ndk-r27c
。
最后通过 Fyne 框架打包命令,将程序打包成 APK 文件。打包出的 APK 文件体积要比桌面端大得多。
fyne package -os android -appID com.github.test -icon icon.png