[Flutter翻译]在Windows机器上使用Flutter开发Linux应用程序

686 阅读4分钟

原文地址:medium.com/flutter-com…

原文作者:medium.com/@imaachman

发布时间:2020年9月19日 - 6分钟阅读

Flutter给我们提供了从单一代码库开发和维护跨平台应用的能力。虽然它仍然是一项正在进行中的工作,但平台支持正在迅速改善。随着最近Flutter和Canonical团队宣布合作,在Linux上开发和部署Flutter应用比以往任何时候都要容易。

我迫不及待地想测试一下,但我只有一台Windows笔记本。当然,我有双启动、虚拟化等选项,但它们都不能提供无缝的开发体验。更不用说设置这一切的麻烦了。

上周,Kali Linux的最新版本引入了许多功能,包括kali-win-kex,它在WSL 2上提供了一个看似原生的桌面体验。接下来我想到的是 "让我们在这个东西上运行一个Flutter吧!"。

它真的是

Linux的Windows子系统

WSL是Windows 10的一个兼容层,它允许我们运行基于Linux的命令行工具。微软更进一步,将WSL 2构建在真正的Linux内核之上,这就意味着在性能和功能上有了显著的提升。 WSL 2提供了足够的速度和稳定性,以获得良好的开发体验。所以,让我们开始设置吧。

第一步:安装WSL

以管理员身份启动Powershell,然后运行这个。

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

第二步,重新启动

第三步:启用WSL和虚拟机平台。

以管理员身份启动Powershell,运行这两个命令。

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

第四步,重新启动!

第五步:安装Linux内核

从这里下载并安装WSL 2 Linux内核:aka.ms/wsl2kernel。

步骤6:将默认版本设置为WSL 2。

以管理员身份启动Powershell并运行。

wsl --set-default-version 2

现在WSL 2已经安装完毕,我们准备安装Kali Linux Distro。

Kali Linux

去微软商店下载一份Kali Linux。

是的,就是这么简单;)

我们可以像其他应用程序一样简单地启动Kali。第一次启动时,需要一些时间来设置,并要求你创建一个用户名和密码。

Win-Kex

Windows Kali Experience或win-kex提供了带有XFCE桌面的Kali图形用户界面,通过虚拟网络计算(VNC)连接到Windows。所有的东西都是本地的,所以它可以立即启动,滞后性可以忽略不计。 通过执行这个命令来安装win-kex。

$ sudo apt update && sudo apt upgrade && sudo apt install kali-win-kex

这个命令将安装许多组件,包括XFCE DE,TigerVNC服务器和查看器。这需要一些时间,请耐心等待:) 安装完成后,我们可以用这个小命令启动GUI。

kex

这个小命令可以在Linux端启动VNC服务器,在Windows端启动查看器,然后一次性连接它们. 真棒!

这就是它的样子

我已经为Flutter项目建立了一个文件夹;)

几件事情

  • 确保你在启动$ kex命令时不在Windows目录下。
  • 每次会话后运行$ kex stop

牢记这两点,避免不必要的错误,保持顺利。

让我们Flutter?

Canonical已经让使用snapd在Linux上安装Flutter变得超级简单。但是WSL官方并不支持snapd,变通的方法也不是很简单。所以,我们还是采用手动的方式,从这里下载Flutter。

下载后,只要解压到你喜欢的地方就可以了:)

Flutter文档中建议更新路径,跨终端会话使用Flutter。但是这里有一个小问题,我们不是只运行在Linux上。我们把它运行在Windows之上,它可以访问Windows文件系统。

这意味着,如果我们在Windows上安装了Flutter,每当我们运行flutter命令时,它就会查看Windows方面的东西,而忽略Linux安装的Flutter,即使我们更新了路径。我知道,这很奇怪,而且超级烦人(不得不硬着头皮学这个😢)。

所以这里有一个变通的办法! 我们可以通过这样的访问来运行flutter doctor

$ <DIRECTORY_WHERE_FLUTTER_IS_EXTRACTED>/flutter/bin/flutter doctor

# for me, it's ~/Documents
$ ~/Documents/flutter/bin/flutter doctor

运转得很好!但是,它太长了! 这不是应该的,对吧?

为了解决这个问题,我们将使用Bash的别名功能。简单地运行这个命令来创建flutter别名。

$ alias flutter='<DIRECTORY_WHERE_FLUTTER_IS_EXTRACTED>/flutter/bin/flutter'

这将会在当前终端会话中完美地工作。

现在,为了使它在终端会话中持久存在,我们必须编辑.bashrc文件。

$ nano ~/.bashrc

在文件中,在准确的位置添加以下一行。

# enable color support ls and add handy aliases
if [ -x /usr/bin/dircolors ]; then
  test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
  alias ls='ls --color=auto'
  alias flutter='~/Documents/flutter/bin/flutter' // add right here!
  ...
fi

ctrl+x退出编辑器 按yenter保存修改内容。

现在,只需键入这个命令,使别名在当前会话中可用。

$ source ~/.bashrc

好吧,有很多步骤,但我们已经完成了! 现在flutter命令就像我们期望的那样工作了 :)

开发Linux

我们需要设置一些东西来开发Linux上的桌面应用。

将Flutter通道改为开发。

$ flutter channel dev

启用Linux桌面的开发。

$ flutter config --enable-linux-desktop

我们现在需要的是Linux开发的一些实用工具。你可以运行flutter doctor来检查你所需要的一切。一切都可以在一个命令中安装。

$ sudo apt-get install clang cmake ninja-build pkg-config libgtk-3-dev

等待安装,然后再次运行flutter doctor,检查最后一次。

在这里,我们有它! Flutter,完全配置好了,可以在Windows 10上开发Linux应用。

现在我们可以直接在发行版上编写Flutter应用程序了。或者,我们可以使用VS Code Remote WSL扩展来在Windows上编写代码并在Linux上运行。这是一种更流畅的体验。

VS Code

安装扩展。

进入所需的目录,然后输入。

$ cd ~/Desktop/Flutter ## go to desired directory
$ code . ## open VS Code

现在,VS Code将在Linux文件系统的那个目录下打开。甚至集成的终端也会默认为Bash。

你还需要安装WSL的Flutter和Dart扩展。

好了!

一切都会像你期望的那样工作。只是flutter run只会在从Linux GUI(kex)调用时构建应用程序。当从集成终端调用时,它将无法定位显示,应用程序将无法运行。

那么,我们来看看开发体验是怎样的吧!

www.loom.com/share/80b33…

好了,就到这里吧!

希望你喜欢这个试图简化跨平台开发、提高开发者效率的指南/小技巧。Flutter的目标是成为通用SDK,而Windows则在积极尝试成为开发者的终极平台。而从目前的进展来看,这似乎并不遥远。

看看我之前的作品吧!

Flutter GetX Ecosystem ~状态管理。

使用BLoC架构的Flutter日历

有什么问题或建议吗?把它们都放在评论区 :D

喜欢这篇文章吗?请按住👏 按钮! 这将激励我写出更多更多的文章!你可以在LinkedIn上找到我,跟踪我的GitHub,关注我的Twitter或电子邮件。

你可以在LinkedIn上找到我,跟踪我的GitHub,在Twitter上关注我,或者给我发邮件:imaachman@gmail.com,进行任何形式的技术讨论。