前言

工欲善其事,必先利其器

所以第一篇我们来说说 Flutter 环境的搭建。

笔者这边使用的是 MAC 电脑,因此以 MAC 电脑的环境搭建为例。

Windows 或者 Linux 也是类似的操作。

Flutter 有英文版的官网和中文网,大家可以根据自己的喜好和情况进行选择。

点击下面的链接可以到对应的安装页面。

Flutter 官网安装链接

Flutter 中文网安装链接

我们这边以官网为例进行说明。

目录

1. 配置镜像

点击进入官网,可以看到下图:

我们点击 Using Flutter in China 进入:

可以看到主要是让我们配置镜像站点。

所以我们就将要求的两个环境变量添加到系统就可以了。

打开 terminal,看下当前用户下面是否有 bash_profile 文件,执行命令:

vi ~/.bash_profile

如果底部有

"~/.bash_profile" [New File]

说明之前没有存在过这个文件。

不管之前是否存在过该文件,我们在末尾追加上面的两个环境变量即可。

如果不熟悉 vi 操作,可以参考下面两篇文章或者额外了解。

linux Vi操作和使用方法详解

Linux vi/vim

将上面两个环境变量添加到 bash_profile 文件,文件新增的两行应该类似下面(镜像地址可能有变动,以上面官网为主,笔者此刻就是下面的):

export PUB_HOSTED_URL=https://pub.flutter-io.cn
export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn

接着执行命令:

source ~/.bash_profile
echo $PUB_HOSTED_URL

如果打印出了你输入的镜像,说明没有问题,设置成功了。

主要目的是追加两个环境变量,如果你习惯用文件打开,也可以打开文件后直接追加

回到安装页面,点击 macOS。

2. 获取 Flutter SDK

从图中可以看到,当前的目标是获取 Flutter SDK。

点击蓝色按钮,下载 Flutter SDK。

下载完成之后解压到自己想放置的目录(建议路径不要包含中文)。

这里假设我们将压缩包解压到的路径为 ~/flutter。

首先把下载下来的压缩包移动到 ~/flutter。

我这边下载的压缩包为flutter_macos_v1.0.0-stable.zip,执行命令

unzip flutter_macos_v1.0.0-stable.zip

执行完成之后可以看到当前目录多了一个 flutter 文件夹。

接下来就是要把 flutter 设置到环境变量以便在任何地方都可以执行 flutter 命令。

执行如下命令:

cd flutter/
pwd

控制窗口会打印 flutter 根目录。我这边为/Users/nesger/flutter/flutter。

跟上面设置两个环境变量操作类似,首先打开文件~/.bash_profile。

添加下面语句:

export FLUTTER_ROOT=/Users/nesger/flutter/flutter
export PATH=$FLUTTER_ROOT/bin:$PATH

这里定义了 flutter 根目录并将其下面的 bin 目录设置到 PATH 里面。

保存退出后执行

source ~/.bash_profile

NOTE:执行该命令后你当前窗口和新开的窗口就都可以直接运行 flutter 命令了。但是之前开的窗口就不可以了。如果需要之前的窗口也可以,就需要在对应窗口执行上面的 source ~/.bash_profile 命令

3. 执行 flutter doctor 完善相关工具链

运行

flutter doctor

会打印 flutter 需要的工具链是否完善。(NOTE: 这个命令后面会多次用到)

可以看出一些端倪。

显示一些警告。

按照上面提示进行处理即可。

举个例子:

✗ Android licenses not accepted.  To resolve this, run: flutter doctor --android-licenses

这边说 Android licenses 没有 accepted,执行

flutter doctor --android-licenses

然后不断点击 y 表示同意就可以了。

我们运行之后,再使用

flutter doctor

可以看到已经修复了

接下来就是 iOS toolchain 以及 Android Studio 两个插件的安装。

对于 Android 开发来说,其实 iOS toolchain 不修复也没问题。

我们先修复 flutter 插件安装。

NOTE:Android Studio 版本需要 3.0 或者更高版本,不然会有坑,这边为了演示一下坑及遇到的解决方法。所以这边先用版本 2.3.3 进行演示。读者最好先升级版本到 3.0。步骤是一样的。

第一步:Android Studio->Preferences



第二步:点击左侧 Plugins



第三步:输入 flutter,点击 Search in repositories



第四步:点击 Install



第五步:dart 一起安装

安装完成之后重启 Android Studio,然后在终端执行命令

flutter doctor

可以看到 Flutter 插件安装好了,只不过这里提示版本不够新。

如果你的 Android Studio 版本为 3.0 或者更高,就不会报错,那么可以忽略下面的修复步骤。

修复步骤:

重启 Android Studio 并没有看到直接创建 Flutter 项目。

笔者这边 Android Studio 版本为 2.3.3。

而 Flutter 需要 Android Studio 3.0 或者更高版本支持。

这边更新 Android Studio 之后重启。

可以看到执行 flutter doctor 命令之后 Android Studio 确实是 3.3 版本了。

但是 Flutter 依然不是最新的,需要到 plugins 去更新。

此外,还需要更新 dart。

更新完之后就可以看到创建 Flutter 项目了。

到了这里基本上对于 Android 开发的你来说环境搭建就完成了。

4. 扩展

可以看到上面有个 iOS toolchain,基于下面几点,我想修复这个。

  1. 我的机器安装了 Xcode。
  2. 刚接触 Flutter,想多点尝试,也想看看 Flutter 代码在 iOS 运行效果。
  3. 听说 iOS 开发都用模拟器,想体验下 iOS 模拟器。

    Android 的模拟器大家都懂,反正我大部分是用真机调试。

所以按照上面的提示,Xcode 完全安装以及运行相应命令。

但是遇到了一个坑,就是依然报错。

所以我直接将提示的命令一步执行,结果可以了。

在 GitHub 上面还帮助到了一个 iOS 开发者。

flutter doctor 提示 iOS toolchain 有些错误

更多环境搭建问题和解决方案大家都可以提 issue 哦~

也许别人刚好就解决了你遇到的问题

Flutter Issue 集合

Flutter 即学即用系列博客——01 环境搭建的更多相关文章

  1. Flutter 即学即用系列博客——05 StatelessWidget vs StatefulWidget

    前言 上一篇我们对 Flutter UI 有了一个基本的了解. 这一篇我们通过自定义 Widget 来了解下如何写一个 Widget? 然而 Widget 有两个,StatelessWidget 和 ...

  2. Flutter 即学即用系列博客——04 Flutter UI 初窥

    前面三篇可以算是一个小小的里程碑. 主要是介绍了 Flutter 环境的搭建.如何创建 Flutter 项目以及如何在旧有 Android 项目引入 Flutter. 这一篇我们来学习下 Flutte ...

  3. Flutter 即学即用系列博客——09 EventChannel 实现原生与 Flutter 通信(一)

    前言 紧接着上一篇,这一篇我们讲一下原生怎么给 Flutter 发信号,即原生-> Flutter 还是通过 Flutter 官网的 Example 来讲解. 案例 接着上一次,这一次我们让原生 ...

  4. Flutter 即学即用系列博客——08 MethodChannel 实现 Flutter 与原生通信

    背景 前面我们讲了很多 Flutter 相关的知识点,但是我们并没有介绍怎样实现 Flutter 与原生的通信. 比如我在 Flutter UI 上面点击了一个按钮,我希望原生做一些处理,那么原生怎么 ...

  5. Flutter 即学即用系列博客——06 超实用 Widget 集锦

    本篇文章我们来讲讲一些比较常用的 Widget. 大家验证的时候使用下面的代码替换 main.dart 代码,然后在 //TODO 语句返回下面常用 Widget 示例的代码. import 'pac ...

  6. Flutter 即学即用系列博客——03 在旧有项目引入 Flutter

    前言 其实如果打算在实际项目中引入 Flutter,完全将旧有项目改造成纯 Flutter 项目的可能性比较小,更多的是在旧有项目引入 Flutter. 因此本篇我们就说一说如何在旧有项目引入 Flu ...

  7. Flutter 即学即用系列博客总结篇

    前言 迟到的总结篇,其实大家看我之前发的系列博客最后一篇,发文时间是 3 月 29 日.距离现在快两个月了. 主要是因为有很多事情在忙,所以这篇就耽搁了. 今天终于可以跟大家会面了. 系列博客背景 F ...

  8. Flutter 即学即用系列博客——09 MethodChannel 实现原生与 Flutter 通信(二)

    前言 上一篇我们讲解了如何通过 EventChannel 实现 Android -> Flutter 的通信. 并且也看到了 Flutter 内部 EventChannel 源码也是对 Meth ...

  9. Flutter 即学即用系列博客——02 一个纯 Flutter Demo 说明

    前言 上一篇文章我们搭建好了 Flutter 的开发环境. Flutter 即学即用--01 环境搭建 这一篇我们通过 Flutter 的一个 Demo 来了解下 Flutter. 开发系统:MAC ...

随机推荐

  1. 易用性测试、本地化测试、部署测试、无障碍测试、回归测试、冒烟测试、A/B测试

    1.易用性定义: 易用性测试是指测试用户使用软件时是否感觉方便,是否能保证用户使用的测试类型2.本地化测试: ·定义:针对软件的本地化版本实施的针对性测试 ·测试内容: (1)语言,书写习惯 (2)时 ...

  2. 杨老师课堂之JavaScript定时器_农夫山泉限时秒杀案例

    预览效果图: 使用到的知识点: 定时器 setInterval(函数,毫秒):在指定的毫秒数后调用函数或执行一段代码 取消定时器 clearInterval:取消由setInterval设置的定时器 ...

  3. linux中普通的文件查看操作(cat、more、less、head、tail)

    cat:基本是最常用的查看文件内容的linux命令. more 也是用来查看一个文件的内容.当文件内容太多,一屏幕不能占下,而你用cat肯定是看不前面的内容的,那么使用more就可以解决这个问题了.当 ...

  4. WPF 毛笔字

    1.先来看看InkCanvas的一般用法: <InkCanvas>     <InkCanvas.DefaultDrawingAttributes>           < ...

  5. xml序列化和反序列化(二)

    上篇讲到关于xml入参实体序列化,下面给出出参实体反序列化,代码如下: /// <summary> /// 反序列化 /// </summary> /// <param ...

  6. 解决持久化数据太大,单个节点的硬盘无法存储的问题;解决运算量太大,单个节点的内存、CPU无法处理的问题

    需要学习的技术很多,要自学新知识也不是一件容易的事,选择一个自己比较感兴趣的会是一个比较好的开端,于是,打算学一学分布式系统. 带着问题,有目的的学习,先了解整体架构,在深入感兴趣的细节,这是我的计划 ...

  7. Java 面试知识点解析(七)——Web篇

    前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...

  8. Python爬虫-尝试使用人工和OCR处理验证码模拟登入

    刚开始在网上看别人一直在说知乎登入首页有有倒立的汉字验证码,我打开自己的知乎登入页面,发现只有账号和密码,他们说的倒立的验证码去哪了,后面仔细一想我之前登入过知乎,应该在本地存在cookies,然后我 ...

  9. spring boot整合shiro

    安全框架Shiro和Spring Security比较,本文主要围绕Shiro进行学习 一 Shiro 是一个强大而灵活的开源安全框架,能够清晰的处理认证 授权 管理会话以及,密码加密 01 .认证与 ...

  10. JSON数据格式转换

    json格式 (JavaScipt Object Notation):是一种数据交换格式!json语法规则:01.对象表现形式 key:value 键值对02.如果有多个数据,之间使用逗号隔开 k1: ...