Golang 跨平台应用 fyne 编译指南:以苹果 iPhone 15 在线预约工具为例

详细教程,打包指南

点击这里,阅读原文

前言

在 GitHub 查找关于 golang 跨平台编译的 UI 库,先从 awesome-go 着手。仓库地址:

https://github.com/avelino/awesome-go

这个项目还有一个中文版本的叫 awesome-go-cn仓库地址:

https://github.com/jobbole/awesome-go-cn

就用这个仓库吧,中文友好,比较容易提取重点。

awesome golang 中文

排名第二个的 fyne,就是我们今天要介绍的对象。

fyne

fyne 框架,是基于 Material Design 为 Go 设计的跨平台本地 GUI。支持 Linux, macOS, Windows, BSD, iOS 和 Android。

官方给的一个示例,展示了其支持的丰富的组件。

fyne 演示示例

在使用这个框架前,按照管理,看一下实现一个最简单的 hello world demo,所需要的代码。

fyne 最小应用

上述示例中,使用 NewWindow 创建了一个窗体,然后在窗体内,添加了一个文本标签 NewLabel。添加了一个按钮 NewButton。并实现通过点击按钮,改变文本标签的内容。

在命令行运行:

1
go run main.go

环境正常,运行没有报错,可以看到如下窗体界面。

hello fyne demo

分别是操作系统在浅色、暗色模式下的效果。

apple store helper 仓库

经过简单的介绍,大家对 fyne 应该有了一个初步的了解。 跟一般基于 QT 的项目写法类似,开发者使用组件,在窗体内绘制图形。以及窗体之间数据交互,事件通讯等高阶用法。

学习无过于阅读代码。在 github 上看到一个仓库,是用于 iPhone 14、iPhone 15 的购物车功能的,基于 fyne,实现了基本的控件布局,事件通讯,数据更新等,比较适合学习 fyne 的技术细节。

仓库地址:

https://github.com/hteen/apple-store-helper

下面我们在本地部署,并编译项目。

本地部署

本文所使用的环境如下:

  • 操作系统:Windows 10
  • golang 版本:1.21.1
  • docker 版本:24.0.5
  • git 版本:2.37

阅读本文,假设你已经熟练掌握了使用命令行、环境搭建。

1,克隆仓库

命令行执行:

1
git clone https://github.com/hteen/apple-store-helper

2,安装项目依赖

进入项目根目录,命令行执行

1
go mod tidy

项目文件 go.mod 内指定了 golang 版本最低 1.17,所以你本地使用的不是最新的 1.21,也是没问题的。

3,fyne & fyne-cross 工具

项目编译使用 fyne-cross,你首先需要安装这两个工具。命令哈执行:

1
2
go install fyne.io/fyne/v2/cmd/fyne@latest 
go install github.com/fyne-io/fyne-cross@latest

安装完成后,在命令行内可以直接访问到

1
2
fyne --version
fyne-cross version

上述两个命令输出正常,说明你的本地安装没有问题。如果报错 fyne/fyne-cross 找不到命令,一般是 PATH 的问题,手动设置,或搜索解决。

4,docker

fyne-cross 为了执行跨平台编译,脱离本地环境依赖,使用了 docker 环境。你本地必须安装,并运行 docker 服务。可以在命令行运行:

1
docker -v

查看 docker 是否正在运行。

5,跨平台编译

准备好上述环境,就可以开始执行编译了。我们仅以 Windows amd64 为例,在项目根目录,执行编译指令:

1
fyne-cross.exe windows -arch=amd64 -app-id=apple.store.helper.az

下面是编译截图:

compile screenshot

6,大功告成

编译步骤有问题的,按照编译提示解决,直到完全结束。在根目录下自动创建了 fyne-cross 目录,存放着编译结果。目录结构如下:

编译结果目录树

其中,fyne-cross/bin/windows-amd64 下的 hteen-apple-store-helper.exe,就是可以双击打开,在 Windows 下使用的文件。

打开后预览截图:

apple store helper windows文件

关注公众号,后台回复【ios252】,获取编译打包好的文件。如果你需要其他平台的打包文件,可以文章下留言告诉我。

最后

本文介绍了 golang 跨平台 UI 库 fyne 的基础知识,并通过一个现实项目,演示了 fyne 项目打包的整体过程。其中有许多使用中的技术细节,你可能并不能一次性通过,通过对应的技术文档,或者把错误抛给 ChatGPT,相信都可以快速解决。

我是@程序员小助手,专注编程知识,圈子动态的IT领域原创作者。