美文网首页Android
【flutter填坑】使用flutter进行Windows开发

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

作者: 咸鱼本鱼丶 | 来源:发表于2022-06-30 17:54 被阅读0次

    本文将介绍,如何在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开发

        本文链接:https://www.haomeiwen.com/subject/gmmcbrtx.html