发布时间: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退出编辑器 按y和enter保存修改内容。
现在,只需键入这个命令,使别名在当前会话中可用。
$ 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)调用时构建应用程序。当从集成终端调用时,它将无法定位显示,应用程序将无法运行。
那么,我们来看看开发体验是怎样的吧!
好了,就到这里吧!
希望你喜欢这个试图简化跨平台开发、提高开发者效率的指南/小技巧。Flutter的目标是成为通用SDK,而Windows则在积极尝试成为开发者的终极平台。而从目前的进展来看,这似乎并不遥远。
看看我之前的作品吧!
有什么问题或建议吗?把它们都放在评论区 :D
喜欢这篇文章吗?请按住👏 按钮! 这将激励我写出更多更多的文章!你可以在LinkedIn上找到我,跟踪我的GitHub,关注我的Twitter或电子邮件。
你可以在LinkedIn上找到我,跟踪我的GitHub,在Twitter上关注我,或者给我发邮件:imaachman@gmail.com,进行任何形式的技术讨论。