FlutterFlutter

flutter桌面应用开发从配置到打包分发

2022-05-22  本文已影响0人  _小方_

前提

1.Flutter版本2.10及以上
在发布的 Flutter 2.10 稳定版中,已经全面支持构建桌面端应用程序了!

2.已经配置好flutter移动开发环境配置步骤

一. 开启桌面应用开发

桌面端平台启用的命令 flutter config --enable-<platform>-desktop 只需要执行一次即可。你可以在任何时候通过 flutter config 命令来检查所有的配置内容。


// 开启平台
flutter config --enable-linux-desktop 
flutter config --enable-macos-desktop
flutter config --enable-windows-desktop
        
// 查看设备
flutter devices
加入了桌面端支持之后,请重启你的 IDE,然后 IDE 就能检测到新的设备了。

// 检查配置
flutter doctor 

二.其他要求

Windows平台

1.需要安装VisualStudio下载地址

cb170bd93dd14f2789b30e130c4a7613_tplv-k3u1fbpfcp-watermark.png
  1. 解决下载器无法安装问题(下载进度条不动)

原因:下载资源出错.无法访问https://aka.ms/vs/16/release/installer

解决方案:打开浏览器,访问链接地址,稍等片刻,会在表格中列出DNS数据,找到TTL值最小的那个

[图片上传失败...(image-f140ad-1653124310439)]

打开‘C:\Windows\System32\drivers\etc\hosts’文件,在最后添加一行数据,格式:23.63.47.52 aka.ms

打开命令行 cmd, 执行:

ipconfig /flushdns

参考链接: https://www.bilibili.com/read/cv12364240/?ivk_sa=1024320u

macOS平台

  1. xcode
  2. 如果使用插件,需要安装CocoaPods

三.创建应用参考链接

1.用AndroidStudio创建flutter项目勾选对应支持平台即可.
如果开启桌面应用指令成功,但创建时并不能勾选,请重启电脑再试.
2.指令创建:
  a.flutter create xxxxx
  b.flutter create --platforms=windows.macos,linux
3.GitHub克隆示例程序
// Flutter示例程序
git clone https://github.com/google/flutter-desktop-embedding.git
cd flutter-desktop-embedding

已有项目添加平台支持
执行命令以下(注意后面的代表当前目录)

flutter create --platforms=windows .

四.运行应用

特别提示

flutter的版本一定要和visual studio的版本相对应.
一般情况下都用最新的即可,如果需指定flutter版本,在运行时会报错需要哪个版本的visual studio.安装对应的visual studio版本即可.

五.打包

1.创建 release 版本的应用

 debug包和release包位置在项目的build->windows->runer文件夹中
 执行命令: flutter build windows
          flutter build macos
image.png

2.应用程序分发

Windows

为 Windows 平台构建压缩包文件

你可以在项目中的 {项目目录}\build\windows\runner\Release 看到可执行文件。除了该可执行文件之外,你还需要以下内容:

  1. 打开inno setup, 选择Create a new script file using the Script Wizard
image.png image.png

2.填写应用名,应用版本,发布厂商,应用官网,填写一下进入下一步

image.png

3.安装位置,文件名称

image.png

4.选择打包文件

image.png image.png image.png

5.证书信息,按需填写(也可不填)


image.png image.png image.png

6.这里选择输出的路径,输入的exe名称和exe文件的icon,安装密码,按需填写.

image.png image.png

7.下一步点击finish会有如下界面,这里选择"是"。

image.png image.png image.png

8.输入脚本保存名称,然后会开始编译,完成后会输出在第6选择的输出目录中


image.png

9.输出安装包.exe文件, 双击安装就ok了,也可以分发给其他人.

image.png
    Release
    │   flutter_windows.dll
    │   msvcp140.dll
    │   myapp.exe
    │   vcruntime140.dll
    │   vcruntime140_1.dll
    │
    └───data
    │   │   app.so
    │   │   icudtl.dat

...

macOS打包分发

不论选择什么方式发布你的 macOS 软件,你都需要在 Xcode 中操作。为了能够在 Xcode 内操作,你需要先使用 flutter build 命令生成所需的工程文件,然后打开工程。

    flutter build macos
    open macos/Runner.xcworkspace

打开xcode后,在菜单栏中找到 Product->Archive

image.png

在弹窗页面点击 Distribute App

image.png

出现四个选项,我们分发给别人选择第二个(Developer ID) ->next
四个选项的作用:

  1. App Store Connect 可以上传到AppStoreConnect(需要登录开发者账号)或者导出到本地,使用的是发布证书、发布配置文件。

  2. Developer ID 在 Mac App Store 之外分发由 Apple 公证或刚刚使用开发者 ID 证书签名的应用,以确保您是受信任的开发者。

  3. Development 只能导出到本地,使用的是开发证书、开发配置文件。

  4. Copy App 对于 macOS 应用,导出应用而不对其进行代码签名。

然后选择 Export


image.png

选择一个开发者团队进行签名


image.png

签名类型(自动或者配置文件)

image.png

签名完成后导出 (Export)


image.png

flutter桌面应用开发参考链接: https://flutter.cn/desktop

/******************以下内容暂时忽略 ******************/

  1. 安装go环境,下载解压,下载地址:link
    环境变量也都自动配好了,安装好后,新开命令行输入go version出现如图所示则表示安装成功。
image.png
  1. 安装hover构建工具
    执行命令
go get -u github.com/go-flutter-desktop/hover

更详细的看这里https://github.com/go-flutter-desktop/hover

如果遇到一下问题

go: go.mod file not found in current directory or any parent directory.
首先开启 go modules功能,命令行输入

go env -w  GO111MODULE=on

然后进入到项目根目录,命令行输入

go mod init xxxxx   //xxxxx项目文件夹名称
image.png

此时在输入项目文件夹下 执行hover命令

go get -u github.com/go-flutter-desktop/hover
image.png

报错了无法链接
国内需要设置GOPROXY环境变量

 GOPROXY=https://goproxy.cn
一些相关解释
go module介绍

go module是go官方自带的go依赖管理库,在1.13版本正式推荐使用
go module可以将某个项目(文件夹)下的所有依赖整理成一个 go.mod 文件,里面写入了依赖的版本等 使用go module之后我们可不用将代码放置在src下
使用 go module 管理依赖后会在项目根目录下生成两个文件 go.mod(会记录当前项目的所依赖)和go.sum(记录每个依赖库的版本和哈希值)
GO111MODULE
GO111MODULE是 go modules 功能的开关

GO111MODULE=off,无模块支持,go命令行将不会支持module功能,寻找依赖包的方式将会沿用旧版本那种通过vendor目录或者GOPATH模式来查找。
GO111MODULE=on,模块支持,go命令行会使用modules,而一点也不会去GOPATH目录下查找。
GO111MODULE=auto,默认值,go命令行将会根据当前目录来决定是否启用module功能。这种情况下可以分为两种情形:
(1)当前目录在GOPATH/src之外且该目录包含go.mod文件,开启模块支持。
(2)当前文件在包含go.mod文件的目录下面。
上一篇 下一篇

猜你喜欢

热点阅读