Go语言开源跨平台GUI框架Fyne小教程|静态资源捆绑问题_资源绑定

一、基础应用

fyne 的静态资源其实就是把资源文件编译为二进制文件,然后在代码中直接作为变量传入。这种办法的好处在于,进行fyne 应用打包时可以无需额外的图片资源。

需要用到类似于下列的命令:

//这个命令是把 image1.png 编译为名叫 bundled.go 的二进制文件
fyne bundle image1.png >> bundled.go
//这个命令是把 image1.png 添加到为名叫 bundled.go 的二进制文件
fyne bundle -append image2.png >> bundled.go

注意

  • fyne bundle命令似乎不能自动更新,也就是多次添加相同内容后,在编译时会出现提示重新声明了相同资源,建议此时删除文件bundle.g,重新生成。
  • 经过上述操作后,运行命令“go build main.go”或者“go run main.go”极有可能还会出现如下错误提示:“./main.go:39:43: undefined: resourceIconPng”。此时,需要运行“go build .”或者“go run .”,可解决此问题。

二、关于批量绑定资源与更新问题

fyne资源只是一个具有唯一名称的字节集合,因此它可以是字体、声音文件或您希望加载的任何其他数据。此外,您还可以使用-append参数将许多资源捆绑到一个文件中。如果要绑定多个文件,建议将命令保存在其中一个go文件(不是文件bundled.go)的go:generate头中,类似于下面:

// YOU SHOULD FIRST RUN: `go bundle` to generate the related resource .go file!!!
// And then, compile and run the main.go file.
//
//go:generate fyne bundle -o bundled.go icon.png
//go:generate fyne bundle -o bundled.go -append logo.png
//go:generate fyne bundle -o bundled.go -append imagecrawler.jpg
package main

import (
//......

把上面4、5、6行定好后,注意到其前部出现系统提示“run go generate”,此时移动鼠标到这个链接处点击一下,系统即会自动运行4、5、6行对应的fyne bundle命令,并且自动更新bundled.go文件。

如果您随后更改了任何资源或添加了新的资源,那么您可以更新上面的头并使用“go generate”运行它来更新bundled.go文件。然后,您应该将bundled.go添加到版本控制中,这样其他人就可以构建您的应用程序,而无需再运行“fyne bundle”。

上述方案要比在命令行下操作效率高多了。

参考文档