Flutter开发环境搭建及相关Shell知识
引言
开发环境搭建是一个非常令人苦恼的过程,总会有一些莫名其名的问题出现。既然如此苦恼,不如找点乐子,将这个过程中涉及到的一些概念进一步研究,这样便可学到一些新知识,岂不美哉?本文以MacOS为例,介绍Flutter的安装过程。
SDK下载及环境变量设置
下载及安装
首先去官网下载最新的SDK:[下载链接] ,并根据电脑芯片架构下载最新版本的SDK压缩包到磁盘中。
接着切换到期望安装SDK的目录,本文将SDK安装到用户目录,命令过程如下:
1 | 切换到用户目录 |
环境变量设置
SDK已经安装到相应目录中,为了在任何目录下都能运行flutter命令,还需要将该目录添加到环境变量当中。
首先,我们需要知道当前使用的Shell发行版本,输入如下命令查看:
1 | echo $SHELL |
- 若是
zsh
- 则打开
~/.zshrc
。
- 则打开
- 诺是
bash
- 则打开
~/.bash_profile
- 则打开
接着,在文件中追加并保存如下命令: 1
export PATH=~/flutter_sdk/bin:$PATH
zsh
用source ~/.zshrc
刷新bash
用source ~/.bash_profile
刷新
最后,输入echo $PATH
命令查看是否有SDK目录。
如果已存在,在命令行任意目录中输入flutter doctor
,可以出现如下界面:
该命令用于检测Flutter的配置环境存在的问题,诸君可根据它的提示去排查问题。
我们还可以进一步设置以下几个环境变量:
1 | # 禁用代理 |
最后,你的.zshrc
或./bash_profile
文件中的内容应该像下图这样:
相关知识补充
Shell
在一开始,我们下载了SDK的压缩包,并在命令行通过cd
、mkdir
、unzip
等命令完成了安装。
实际上,这个过程就是我们在与Shell(壳)进行交互的过程。Shell是一种应用程序,是用户和系统内核的沟通桥梁。下图很好地阐述了这种关系。
为什么需要用Shell?我个人认为是因为系统内核较为复杂,直接给普通用户使用的话不太现实,因此早期设计了一种基于文本命令的人机交互程序。随着技术的发展,像GNOME、KDE等图形界面其实也算是一种Shell(广义的),它们都是基于图形的人机交互程序。
我们一般常说的Shell,在狭义上是指基于文本命令的,如bash
、zsh
等。
还需要说明一点,Shell支持编程,也就是说会有变量、函数、条件语句、循环语句等功能,这极大地增强了用户使用Shell的灵活性。以下是一段Shell的脚本代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14a=10
b=20
if [ $a == $b ]
then
echo "a 等于 b"
elif [ $a -gt $b ]
then
echo "a 大于 b"
elif [ $a -lt $b ]
then
echo "a 小于 b"
else
echo "没有符合的条件"
fi
bash vs zsh
Shell有很多发行版本,常见的有sh、bash、csh、tcsh、ash、dash、zsh等,各版本在功能、语法上都有可能不同,一般我们用的较多的是bash和zsh,因为:
- bash是Linux的默认Shell
- zsh是MacOS的默认Shell
环境变量
前面我们提到Shell支持编程,不得不聊聊编程中一个最基本的概念:变量作用域。
Shell的变量作用域有三种,分别为:
- 局部变量
- 只能在函数内部中使用,需要加
local
关键字,如local a=6
- 只能在函数内部中使用,需要加
- 全局变量
- 在当前Shell进程中全局共享。不需要加任何关键字,如
a=6
- 在当前Shell进程中全局共享。不需要加任何关键字,如
- 环境变量
- 当前Shell进程及其子进程都共享,需要加
export
关键字,如前文中提到的export PUB_HOSTED_URL=https://pub.flutter-io.cn
。可以看出,它也是作用范围最大的。 - 环境变量并非是永久的,关闭当前Shell进程(关闭命令行窗口)后这些变量就被销毁了。
- 想要让环境变量持久化,需要将环境变量的定义写在
.zshrc
或./bash_profile
中。zsh的Shell进程在启动时会执行.zshrc
中的代码,bash的Shell进程在启动时会执行./bash_profile
中的代码。 - 写入环境变量到
.zshrc
或./bash_profile
后并不会马上生效,可以重启Shell进程或用source filename
命令重新加载这两个文件。 - 最后再补充一个知识点,
source
命令是在当前进程中执行脚本文件,因此当前命令行也可以读到环境变量。而sh
等命令会建一个子进程执行脚本文件,当前命令行窗口无法读取环境变量,这也是为什么我们写入环境变量到启动文件后都会用source
命令的原因。
- 当前Shell进程及其子进程都共享,需要加
我们可以通过env
查看当前Shell进程的所有环境变量。比较常用环境变量的是$PATH
,它为Shell提供了可执行文件的搜索目录。
在前文中,我们设置了环境变量export PATH=~/flutter_sdk/bin:$PATH
,就是为了追加SDK的可执行文件目录到$PATH
中。当我们在命令行中输入flutter
时,Shell会在$PATH
提供的目录列表中搜索是否含有名为flutter
的可执行文件,有则直接执行。
我们可以通过echo $PATH
查看所有目录列表,可以看到SDK的目录已在其中了。
VSCode安装与配置
经典的轻量级编辑器,可用于Flutter的开发与调试。
从官网下载并安装完后,在扩展中搜索并安装Flutter插件。
安装完成后,中文用户在查看->命令面板搜索Flutter,选择Flutter: New Project即可新建项目。英文用户在View->Command Palette中执行相同的操作即可。
Xcode安装与配置
1.从App Store最新的Xcode版本。
2.配置Xcode命令行工具以使用新安装的Xcode版本
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer。
3.确保Xcode许可协议是通过打开一次Xcode或通过命令sudo xcodebuild -license同意过了.
模拟器调试
安装完后,即可在VSCode进行调试,其中在模拟器中运行的方法如下图:
启动模拟器后再点击右上角的运行按钮。
真机调试
若想要进行真机调试,我们还需要安装:
- homebrew,一种软件包管理器,你甚至可以用它安装Chrome浏览器。
- libimobiledevice,一个允许开发者通过USB连接与iOS设备进行通信的库。
- ideviceinstaller,基于libimobiledevice的一个工具,有安装ipa包、卸载应用等功能。
- 例:安装应用
ideviceinstaller -I app.ipa
、卸载应用ideviceinstaller -U [bundleID]
- 例:安装应用
- ios-deploy,一个用于安装和调试iOS应用的命令行工具
- cocoapods,一个用于管理iOS/MacOS项目中第三方依赖库的工具。
在命令行中输入如下命令即可安装homebrew(要注意网络环境):
1
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
1 | brew update |
完成上述设置后,还需在项目的iOS目录下找到Runner.xcworkspace
,并在TARGETS>Runner>Signing
& Capabilities中登录Apple开发者账户及Bundle
Identifier。这些都做完后就可以选择真机并运行了!
Android Studio安装与配置
首先在官网下载并安装Android Studio:[下载地址]
安装完后,还需要安装Android Studio的命令行工具(未安装的话,flutter doctor会有警告提示),下图是安装步骤:
模拟器调试
首先需要在Android Studio中创建一个模拟器。点击右侧安卓手机按钮>点加号>选择一个模拟设备。
点击下一步后,还需要下载一个系统镜像。这里有各个版本的系统镜像(安卓14、安卓13、安卓12等),我们只要选择最近一个下载即可。
以上步骤都完成后,就可以在VSCode的设备列表中选择刚创建的模拟器了并运行了!