golang桌面gui库fyne使用
使用
初始项目
- 新建项目文件夹
fyna
- 执行
go mod init
- 执行
go get fyne.io/fyne/v2
- 执行
go mod tidy
- 创建
main.go
执行以上步骤即可创建一个fyne环境
hello world
代码如下:
package main
import (
"fyne.io/fyne/v2/app"
"fyne.io/fyne/v2/widget"
)
func main() {
a := app.New()
//创建一个窗口
w := a.NewWindow("hello world")
//设置窗口内显示内容
w.SetContent(widget.NewLabel("hello world!"))
//展示窗口 并运行程序
w.ShowAndRun()
}
运行代码执行go run main.go
或者go run .
可以看到一个标题为hello world
内容显示为hello world!
的窗口程序
打包
打包桌面程序
参考:https://developer.fyne.io/started/packaging
打包一个图形程序步骤比较复杂,典型的窗口程序包含图标和一些元数据,包括在不同环境下的一些不同表现格式的数据整合。
在fyne中有package
打包命令,可以自动处理打包中的问题。但是需要打包时设置具体的打包系统和需要的元数据(比如图标)就可以打包程序了。图标也可以自动生成.icns
或.ico
后缀的图标文件,所以只需要提供.png
文件。最终只需要处理需要打包的平台即可。
打包命令如下:
go install fyne.io/fyne/v2/cmd/fyne@latest
fyne package -os darwin -icon myapp.png
如果go版本低于1.16,则使用go get
命令:
go get fyne.io/fyne/v2/cmd/fyne
fyne package -os darwin -icon myapp.png
打包成windows环境或liunx环境可执行程序命令:
fyne package -os linux -icon myapp.png
fyne package -os windows -icon myapp.png
以上命令将会生成:
myapp.tar.gz
myapp.exe
安装当前系统的桌面app应用:
fyne install -icon myapp.png
打包手机程序
参考:https://developer.fyne.io/started/mobile
打包为移动端程序需要对应SDK环境。Android程序需要安装Android SDK
和NDK
及其对应的环境工具(如 adb
)。打包IOS app需要安装Xcode
和对应的包工具。
有了对应环境后,打包命令如下:
fyne package -os android -appID com.example.myapp -icon mobileIcon.png
fyne package -os ios -appID com.example.myapp -icon mobileIcon.png
第一次打包可能比较耗时。打包结果:
myapp.apk
– Androidmyapp.app
– ios
安装安卓程序到手机或模拟器命令:
adb install myapp.apk
安装ios app需要打开Xcode>Window>Devices and Simulators,然后将myapp.app拖入app list.
安装到模拟器命令:
xcrun simctl install booted myapp.app
打包配置
以上命令都可以通过提供默认图标文件 Icon.png
来避免每次打包都要执行图标参数。2.1版本后支持提供元数据文件FyneApp.toml
来配置打包参数。注意,这些文件需要位于命令运行的目录下。
如:
Website = "https://example.com"
[Details]
Icon = "Icon.png"
Name = "My App"
ID = "com.example.app"
Version = "1.0.0"
Build = 1
发布
参考:https://developer.fyne.io/started/distribution
打包完的程序可以直接分享或者发布,但是如果想要发布到对应的软件市场,则需要些额外的步骤,根据发布的平台不同,还需要设置一些具体的配置。
这里需要使用到fyne release
用来处理发布到不同平台商店的配置。对应不同平台步骤如下。
macOS App Store
前提:
- Apple mac running macOS and Xcode(Xcode环境)
- Apple Developer account(苹果开发者账号)
- Mac App Store application certificate(AppStore证书)
- Mac App Store installer certificate(AppStore安装证书)
- Apple Transporter app from App Store(Transporter工具)
步骤:
1. 前往AppStore Connect设置要构建的app版本信息
2. 打包发布信息
bash fyne release -appID com.example.myapp -appVersion 1.0 -appBuild 1 -category games
3. 将.pkg
文件拖入Transporter工具并点击Deliver
4. 返回 AppStore Connect 网站,选择要发布的版本并提交。
Google Play Store (Android)
前提:
- Google Play Console 账号
- 发布的keystore(文档)
步骤:
- 前往 谷歌开发者控制台设置相关版本数据,并关闭
Play app signing
- 打包发布信息
fyne release -os android -appID com.example.myapp -appVersion 1.0 -appBuild 1
- 将
.apk
文件拖入Play Console - 发布版本
iOS App Store
前提:
- Apple mac running macOS and Xcode(Xcode环境)
- Apple Developer account(苹果开发者账号)
- iOS App Store distribution certificate(ios App 发布证书)
- Apple Transporter app from App Store(Transporter工具)
步骤:
- 前往AppStore Connect设置要构建的app版本信息
- 打包
fyne release -os ios -appID com.example.myapp -appVersion 1.0 -appBuild 1
- 将
.ipa
文件拖入Transporter工具并点击Deliver
- 返回 AppStore Connect 网站,选择要发布的版本并提交。
完。