【flutter填坑】使用flutter进行Windows开发

本文将介绍,如何在windows上,使用flutter开发。
目录:
一、Windows安装环境配置
讲述了如何在Windows上搭建flutter环境及开发工具
二、为项目创建Windows支持
讲述了如何创建包含Windows环境的flutter项目,以及如何为已有项目添加Windows支持
三、Flutter在Windows上的数据库支持
讲述了如何在Windows上使用Flutter的数据库
四、Flutter在Windows上的Webview支持
讲述了如何在Windows上使用Flutter的Webview
五、将项目打包成exe安装包
六、将项目打包时,添加额外的环境安装文件,使引导程序自动为用户安装

一 Windows安装环境配置

想要在Windows桌面平台使用flutter进行开发,首先需要安装如下的环境:
flutter sdk
visual studio 2022
另外,本文将采用android studio作为IDE为例

1.flutter sdk安装

点击这里跳转到flutter sdk页面
请使用stable channel中最新版本的安装包

安装完成后,我们并没有完成sdk的配置:

(1)配置系统变量

在此电脑-属性-高级系统设置-环境变量中,打开Path(如果没有请新建),添加:

你的flutter路径\bin

例:D:\flutter\bin
这是为了我们能够在命令行工具中直接使用flutter指令

(2)网络环境配置

考虑到中国的网络环境问题,请进行如下配置:
在环境变量中,新建变量

第一组:
变量名称:FLUTTER_STORAGE_BASE_URL
变量值:https://storage.flutter-io.cn

第二组:
变量名称:PUB_HOSTED_URL
变量值:https://pub.flutter-io.cn
(3)gradle环境配置

考虑到中国的网络环境问题,请进行如下配置:
使用文本编辑打开此文件:

你的flutter路径\packages\flutter_tools\gradle\flutter.gradle

随后在buildscript标签下,修改repositories的值
默认值是

repositories {
    google()
    mavenCentral()
}

修改成:

repositories {
    maven { url 'https://maven.aliyun.com/repository/public' }
    maven { url 'https://maven.aliyun.com/repository/google' } 
    maven { url 'https://maven.aliyun.com/repository/gradle-plugin'} 
    maven { url 'https://maven.aliyun.com/repository/central' } 
    maven { url 'https://maven.aliyun.com/repository/jcenter' } 
}

这里使用的是阿里云的镜像,想了解请点击云镜像说明

2.Visual Studio 2022安装

请点击这里安装Visual Studio 2022。注意,Visual Studio和Visual Studio Code不是一个东西
在安装时候,注意要勾选使用C++的桌面开发。如果需要开发webview相关内容,请勾选通用Windows平台开发

如果已经安装过Visual Studio,使用以下方式扩展安装内容
打开此文件:

C:\Program Files(x86)\Microsoft Visual Studio\Installer\setup.exe

点击修改,即可进入配置页面。

3.开发工具Android Studio安装

本文章使用Android Studio作为开发IDE,当然,也可以选择其他IDE进行开发。
请点击这里安装Android Studio

为Android Studio提供flutter支持:
打开 File-Settings-Plugins,搜索Flutter,安装插件,搜索Dart,安装插件
重启Android Studio后生效

打开Fils-Settings-Appearance&Behavior-System Settings-Android SDK
安装需要的SDK版本。
在SDK Tools标签下,确保安装Android SDK Build-Tools, Android SDK Platform-Tools

4.疑难杂症处理

在完成以上安装环境配置后,请打开CMD命令行工具,执行

flutter doctor -v

可能遇到的问题:

(1)Visual Studio报错,CMD中产生大量红色错误提示

错误问题:

Bad UTF-8 encoding(U+FFFD;REPLACEMENT CHARATER) found while decoding string

解决方案:
点击这里下载最新版本vswhere.exe
复制到以下目录覆盖原文件

C:\Program Files(x86)\Microsoft Visual Studio\Installer
(2)Android license问题

解决方案,执行:

flutter doctor --android-licenses
(3)Android sdk与jdk配置问题

有些情况下可能想要修改flutter所使用的android sdk路径,请使用以下命令指定:

flutter config --android-sdk 你的SDK路径

如果需要升级flutter使用的jdk版本,请升级flutter doctor -v下面输出的路径,它和系统中配置的java路径可能不一样

执行flutter doctor -v,这一项是你的flutter真正使用的jdk
Java binary at: /jdk

二 为项目创建Windows环境

1.创建支持Windows的新的flutter项目

执行

flutter config --enable-windows-desktop

来允许创建windows flutter项目,完成后,在Android Studio中新建项目即可选择Windows平台

2.为已经存在的flutter项目创建Windows支持

同样的,先执行

flutter config --enable-windows-desktop

随后,切换到项目所在路径根目录下,执行

flutter create --platforms=windows .  
 (注意,这里最后有个点 . )

三 Flutter在Windows上的数据库支持

Flutter数据库主要使用sqlite,点击这里查看sqflite_common_ffi
但是推荐使用Floor框架来简化开发:
点击这里查看Floor

这里面有一个问题需要注意,虽然sqflite_common_ffi支持Windows平台,但是在release环境下,需要手动安装sqlite3.dll这个动态链接库。
如果不手动配置,那么表现现象是,在debug版本中数据库正常,但发布的版本中数据库无法正常初始化。
Floor本质上依赖了sqflite_common_ffi,问题是同样的。
sqlite3.dll,放在执行文件同目录下即可正常。

四 Flutter在Windows上的Webview支持

Windows上的内嵌Webview问题,可以使用Webview2解决,目前已经有可使用的插件
webview_windows插件

使用插件需要安装Webview2 Runtime环境
Webview2 Runtime环境
Evergreen Bootstrapper,这是一个下载+安装的包,打开后会自动下载最小的runtime包安装
Evergreen Standalone Installer,这是完整的离线安装包
注意,如果你的软件使用了Webview2 Runtime,那么你必须保证用户的电脑上安装了同样的环境,否则Webview功能无法使用。这一点会在后面的打包中提到

Fixed Version,这是一个固定版本的,可以内嵌到软件内部的压缩包。你可以在软件里嵌入Webview2,这样可以独立于系统中的Webview2存在,软件会使用你自己的Webview2 Runtime,但是会增加安装包的体积。

五 将项目打包成exe安装包

1.为Visual Studio安装installer project

这里以Visual Studio 2022为例
点击菜单中的扩展-管理扩展,搜索installer project,安装Microsoft Visual Studio Installer Projects 2022
(注意网络情况)
安装完成后,关闭Visual Studio,会自动执行安装,按步骤完成即可。

2.打开项目中的sln文件

这个文件位置一般是

项目路径\build\windows\runner\runner.sln
3.创建Setup Project工程

解决方案资源管理器中,右键点击解决方案runner,添加-新建项目
搜索Setup Project,然后按步骤创建即可

4.配置Setup Project工程

在创建完成后,会有三条内容,分别是
Application Folder
User's Desktop
User's Programs Menu
首先在Application Folder中,右键点击,添加项目输出,这里选择你的主项目名称。
完成后Visual Studio会为你创建基本的dll库文件,比如MSVCP140D.dll,VCRUNTIME140D.dll等等,以及你的项目build产生的exe和dll文件。

注意,flutter默认会build出存放资源的文件夹,这个需要手动拖拽到Application Folder下面。
此外,还需要手动添加我们自用的一些库文件,如上文说到的flutter数据库需要的sqlite3.dll等,根据自己情况添加。

每次修改后,需要右键点击setup工程,并选择重新生成
每次生成一个msi文件,包含了所有dll和资源等,以及setup安装文件,它会对系统环境进行检测,并考虑为用户安装缺失的环境包(参考六中的配置)。

User's DesktopUser's Programs Menu是配置桌面快捷方式图标和开始菜单快捷方式图标,这里暂不赘述,可根据需要添加。

六 将项目打包时,添加额外的环境安装文件,使引导程序自动为用户安装

如果你的软件需要其他的环境,如.net framework,webview2环境等,需要添加到打包中,使用户安装软件时候时候自动为用户安装环境。
右键点击解决方案资源管理器中的setup工程,打开属性-Prerequisites
Visual Studio中自带了一些可以使用的环境,包括.net framework, .net runtime等,其中也包括WebView2。

这里有三种方案:
1.从组件供应商的网站上下载系统必备组件
2.从与我的程序相同的位置下载系统必备组件
3.从下列位置下载系统必备组件

如果使用1或3,那么就可以直接确定结束。
它的意思是,用户在安装时候,需要去下载这些环境进行安装,安装程序会进行引导。
3的意思是,将这些需要的环境包配置在自己的服务器上,并在这里指定。而1是从供应商网站上下载。

如果选择2,它表示我们提供好安装包,安装过程自动使用我们提供的环境安装包。我们需要在本地下载好安装包,并将它配置好,需要配置在

C:\Program Files(x86)\Microsoft SDKs\ClickOnce Bootstrapper\Package

具体配置什么,需要看自己的需求。
比如配置 .net framework 4.7.2,需要在

C:\Program Files(x86)\Microsoft SDKs\ClickOnce Bootstrapper\Package\DotNetFX472

路径下,放置.net framework 4.7.2的安装包。
DotNetFX472根目录放置安装包以后,还需要在需要的语言下,比如zh-Hans中放置语言包。它的用处是在安装时候为用户提供对应语言的协议和描述。
语言包下载路径可以在各自目录的Package文件中搜索包含http://go.microsoft.com/fwlink的类似链接中下载。

对于Webview2 Runtime环境,如果想使用以上方式,需要手动创建WebViewRuntime文件夹,并在其中放入MicrosoftEdgeWebview2Setup。
同时需要提供Product,package和eula文件
可以参考官方给出的实例,(官方实例可以直接使用)

你可能感兴趣的:(【flutter填坑】使用flutter进行Windows开发)