欢迎参加“决胜Flutter” 实训课程,这里是你这次实训之旅的起点。
本章将带您快速了解移动开发的现状,而后向您介绍Flutter的发展历史以及优点特色,最后一块儿动手,搭建高效的开发环境。
因为Flutter 跨平台(同时支持Android、iOS、Web以及PC)的特性,本书将以Mac OS做为操做系统环境,版本号为10.14。若是读者使用的是Windows或者Linux,请结合Flutter官方网站的配置指导进行操做。须要指出的是,Windows和Linux是没法编译生成iOS版本App的。
好了,闲话很少说,咱们立刻进入正题!java
今天,咱们不得不认可,移动互联网的出现和兴起,给咱们的生活和社交带来了史无前例的改变。一部小小的手机不只是通讯的工具,更有着平常生活、移动办公、社交网络等实用工具的属性,已经成为大部分人可信赖的“伙伴”,不断冲击着报纸、广播、电视等传统媒体。
事实上,移动互联网发展得如此迅速,操做系统只提供了“平台”,更多得益于其丰富的App生态。也正是由于这样的缘由,诞生了一个又一个爆款App。在这些爆款的背后,则是无数的UI/UE设计师、软件工程师、测试工程师等幕后英雄的贡献。
同时,随着移动互联网的高速发展,移动App的开发模式也在快速更迭中发展。
最初,为了可以在不一样系统环境上运行,一般要求开发团队进行多平台并行开发。一般,开发Android和iOS App一共须要两个开发团队,维护两套源代码,分别进行测试。
后来,人们逐渐意识到,这样的开发效率并不高,成本却不低。所以诞生了一个接一个的跨平台解决方案。好比React Native、PhoneGap、DCloud等等。但无一例外地,它们都没法摆脱低性能的JavaScript或者原生代码依赖,或多或少地存在不足,某些知名的App技术团队已经宣布弃用它们。
亟需一个真正可以打通多平台且高性能的框架来“救场”,Flutter则应运而生。能够说,Flutter的出现有必定的“必然性”。python
先让咱们和Flutter这个新伙伴说声“你好”,而后了解一下这位新伙伴吧!android
说到Flutter的诞生,要追溯到2014年。一开始,它被叫作Sky,同年10月在GitHub上开源。一年后,Sky正式改名为Flutter。首次对外公布Flutter是在2017年5月的Google I/O大会上,今后,Flutter正式进入你们的视野,当时的版本号是Alpha 0.0.6。2018年2月,发布了Flutter 1.0测试版,即Beta1。同年6月份发布预览版,即Preview版本。12月发布1.0正式版。2019年2月,在1.2版本中,首次增长了对Web的支持。
截至目前,GitHub上的Flutter SDK已经有201个发布版本,超过15000屡次代码提交,400多位知名工程师参与其中,其问题的响应速度和处理效率一样很是之迅速……这些都奠基了Flutter终将成为开发者趁心如意的开发框架。ios
那么,Flutter 究竟有哪些特性呢?抑或是有哪些优势呢?git
Flutter框架采用的是“分层结构”。每一层都创建在另外一层的基础上,以下图所示:github
显而易见地,整个Flutter框架由三层组成,从上到下分别是Framework(框架)层、Engine(引擎)层以及Embedder(嵌入)层。算法
框架层:框架层由Dart编程语言实现,涵盖了界面组件、动画、手势等等;编程
引擎层:引擎层由C/C++编程语言实现,涵盖了Skia、Dart和Text:swift
嵌入层:嵌入层能够理解为“兼容层”。正是嵌入层的出现,才确保了Flutter App能够在不一样的平台上运行,该层实现了平台无关性。xcode
到此,是否是有点跃跃欲试,想不想亲手开发出一款Flutter App呢?
不如立刻行动,让Flutter App在设备上跑起来!
动手时间到!第一次,咱们先来完成“教学关卡”——配置开发环境。
中国有句古话:“工欲善其事,必先利其器。”没有顺手的工具是不行的。经过这一节的学习和实践,相信每位读者都能有一把“开发利器”。
让咱们开始吧!
配置Java开发环境的目的是为了让咱们的电脑能够编译Android应用程序。
和安装其余软件相似地,在Mac OS上配置Java开发环境很是简单。只需下载对应的安装包文件,而后启动安装便可。Java 开发工具包能够在Oracle官方网站找到,而后下载对应版本便可。这里推荐你们安装JDK 8版本。
下载好后启动安装,片刻等待,进度条满即宣告安装结束。
以后,能够启动终端,在终端窗口中键入
java –version
并回车。能正常输出Java版本信息则代表安装配置无误。
接下来配置Android开发环境,咱们将使用Android Studio做为集成开发环境(也称为IDE)。
首先,咱们到Android开发者网站下载Android Studio安装包文件。和前文中所述的Java开发工具包相似,下载后安装便可完成配置过程。
当咱们点击“DOWNLOAD ANDROID STUDIO”按钮后,网页会自动识别当前系统并下载最合适的版本。
一般,Android Studio的安装会比Java开发工具包的安装更耗时。静候进度条满,咱们即可以启动Android Studio了。
首次启动会弹出向导,这个向导会指引咱们对IDE进行初步配置,并下载缺失的SDK。
须要注意的是,经过首次启动向导下载的SDK,默认只包含了最新版本的内容。若是读者要下载更多的SDK版本,便于往后开发,能够在启动Android Studio后,进入Settings(设置),并查找SDK Manager(SDK管理器)。在这里能够下载到Android SDK全部的内容。
接下来,让咱们为Android Studio添加编译Flutter App的能力。
进入Settings(设置),而后查找Plugin(插件),在上方的搜索框中键入flutter,并回车。以下图所示:
点击INSTALL(安装),会提示安装Dart,点击YES(是)继续。安装完成后,从新启动Android Studio。启动界面上已经能够看到新建Flutter 工程的入口了:
最后,往后方便地使用adb等命令,还须要把Android SDK的路径加入到环境变量中。启动终端窗口,输入
sudo vi ~/.bash_profile
并回车,开始编辑用户级环境变量。在文件的末尾添加以下内容:
ANDROID_HOME=/Users/wenhan/Library/Android/sdk export PATH=$PATH:$ANDROID_HOME/tools export PATH=$PATH:$ANDROID_HOME/platform-tools
保存,而后退出vi编辑器。最后,输入:
source ~/.bash_profile
而后回车,使环境变量当即生效。测试一下adb命令,正常状况将会出现adb使用说明文档。
在Mac OS中配置iOS开发环境再简单不过了,只要启动Mac上的App Store,而后搜索Xcode,安装便可。这一步骤可能会耗时很长,在安装时还有可能表现为卡住不动,其实是安装的内容较多致使的,须要耐心等待。
安装好后,启动终端,输入
sudo xcode-select –switch /Application/Xcode.app/Contents/Developer
并回车,配置Xcode命令行工具。
最后,输入
sudo xcodebuild –license
并回车,接受许可协议。
除了上述IDE的配置外,Flutter还依赖某些命令行工具,才能成功完成编译。这些工具包括:
好消息是,Mac OS系统自己已经内置了上述命令,咱们仅需确认这些命令可否正常运做便可。
此外,因为Flutter服务器在国内访问可能出现不稳定的现象,咱们须要添加两对环境变量,将Flutter包管理网站指向国内的镜像站。该镜像站由GDG China管理和维护,所以无需担忧安全性问题。还记得环境变量的配置方法吗?尝试添加以下两对值:
PUB_HOSTED_URL=https://pub.flutter-io.cn FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn
若是不慎忘记了配置方法,请参考1.3.2节末尾的内容,如法炮制就好。
对于编译iOS App,咱们还须要安装一些附加工具,这些附加工具被homebrew管理,它堪称Mac OS平台不可或缺的组件管理器。所以,咱们须要先安装homebrew软件包管理工具。方法是启动终端,而后输入以下命令后回车:
/usr/bin/ruby -e "$(curl -fsSL raw.githubusercontent.com/Homebrew/in…)"
系统会自动完成安装。以后,依次执行下列几条命令,完成剩余的配置:
brew update
brew install –HEAD usbmuxd
brew link usbmuxd
brew install –HEAD libimobiledevice
brew install ideviceinstaller ios-deploy cocoapods
pod setup
在正式进行Flutter App开发前,咱们须要学习一种全新的编程语言——Dart。学习Dart编程语言无需Android Studio,也无需任何移动设备。与此相反,一款驾轻就熟的文本编辑器会更加合适,因此更推荐各位读者使用Visual Studio Code。
Visual Studio Code一样是跨平台的IDE,所以不管您是使用Mac OS,Windows或者是Linux,均可以使用Visual Studio Code。
官方网站下载Visual Studio Code,运行安装程序进行安装,以后不要忘记安装Flutter插件。
接下来,咱们须要下载和配置Flutter SDK。
下载Flutter SDK的方式有两种选择。第一种是经过Flutter官方网站提供的下载连接;第二种则是经过Git Clone(克隆)的方式下载。因为服务器偶尔会出现链接不稳定的现象,所以,第二种方式最更稳妥的选择。
启动终端,定位到要存放Flutter SDK的目录下,输入:
git clone -b stable github.com/flutter/flu…
此处的stable表示要下载稳定版,也能够改成dev来下载最新的开发版。
根据网络链接情况,这个过程一般会持续几分钟,须要耐心等待。
下载好后,别忘了配置环境变量,它能够帮助咱们在任何位置执行flutter命令。按照前文中提过的方法,这里只需追加PATH变量值便可,以下所示:
export PATH="$PATH:~/Development/flutter/bin"
到此,关于环境变量的配置就所有完成了,咱们回顾一下全部配置的环境变量,以下图所示:
须要特别注意的是,上述环境变量配置的值并不是在全部电脑上都一致。请各位读者结合自身电脑的具体状况进行配置,并在配置后执行相应的指令测试,以确保环境配置无误。
运行终端,输入
flutter doctor
并回车,等待诊断完成。出现下图所示的输出则表明配置准确无误。
诊断进程结束后,会出现相似上图的诊断报告,除了表示正确的对勾外,还可能会遇到感叹号或者叉号。出现感叹号表示它是一条警告,可能不会影响工程的正常编译运行;而叉号则要引发重视了,它表示一种错误。不进行处理的话将会影响工程的编译和运行。
若是不幸出现了由叉号的项目,别担忧,您能够在1.3.7 疑难排查小节中找到解决它们的办法。
因为Flutter处在快速发展迭代中,时刻保持最新不但能够体验到新版本带给咱们的新功能,并且能够规避老版本中存在的某些问题。
当咱们按照前文所描述的方法配置好环境变量后,随时能够在终端执行
flutter upgrade
命令检查并更新到最新版本的flutter SDK了。
git clone速度过慢甚至报错:出现该问题,能够尝试访问官网,进入SDK下载页面,直接下载,并在完成后解压。压缩包内存在.git文件夹,不影响往后的版本升级;
出现警告(Android toolchain - develop for Android devices…):执行
flutter doctor --android-licenses
并赞成全部的许可协议;
出现错误(Missing Xcode dependency: Python module "six"):执行
pip install six或 sudo easy_install six或依次执行: brew reinstall python@2 pip install six;
升级SDK过程当中出错:检查是否配置了正确的环境变量,或者直接从新下载最新版本。
接下来,咱们建立一个计数器应用,用户每点击依次屏幕右下方的按钮,屏幕中间的数值增长1,以下图所示:
计数器App是建立Flutter 工程后的默认App,咱们无需修改代码,直接运行便可实现。
有两种方式建立Flutter工程,第一种是经过Android Studio的新建工程向导;另一种是经过flutter命令行。
做者建议使用flutter 命令行建立项目,而后在Android Studio中打开。由于在网络链接不稳定时,新建工程向导可能会致使Android Studio中止响应。
使用命令行建立项目的方法很是简单,首先来到要存放工程代码的目录,而后执行:
flutter create hello_flutter
稍等片刻,便可完成工程的建立。有关flutter的更多命令行用法,将在1.4.3节中说起。
建立好工程后,启动Android Studio,选择“Open an existing Android Studio project”,在弹出的目录选择对话框中,定位到代码所在目录,点击OK,便可打开工程。
怎么样,还算简单吧?
最后,咱们把代码运行在设备上。您能够选择在电脑上启动模拟器,或者链接一台开启了调试权限的手机。
做者建议各位使用实体设备,而非模拟器。一方面,实体设备最接近用户最终体验,而且更加流畅;另外一方面,某些传感器,如NFC、蓝牙等,是很难经过模拟器实现的。本书也将结合实体设备——一台真正的手机(Android)进行讲解。
启动手机,开启开发者选项中的USB调试,而后链接电脑。点击Android Studio右上角的绿色小三角图标,稍等片刻,像图1.15那样,一个简单的flutter App就部署到手机上了。尝试和它互动一下吧!
在实际开发中,咱们有必要掌握一些flutter的经常使用命令,这将帮助咱们更有效率地进行开发。
建立项目:
获取工程中引用的库:
flutter packages get
更新工程中引用的库:
flutter packages upgrade
运行App:
进入调试模式:
flutter attach
打包生成安装文件:
请回顾如下几个知识点,确保这些内容都已经了然于心:
你可能会注意到,上述内容并未涵盖本章的全部方面。这是由于上述的知识点是必需要掌握的,而非仅做了解。 请您确认上述内容已经彻底掌握后,再进入下一章的学习。 在下一章中,咱们要进行一场“特训”,目的是让各位读者快速入门并掌握Dart开发语言。咱们还将结合计算机领域的某些经典算法进行强化练习,请作好准备,咱们即刻出发!