最近一段时间,阿里巴巴旗下闲鱼客户端团队完成了基于Flutter混合架构的闲鱼客户端的整体架构设计,在工程体系上完善了针对Flutter的持续集成以及高可用体系的支撑,同时推进了闲鱼主链路业务的Flutter化,未来也将持续推进该终端技术的产品演变。
正文共:3148 字 6 图
预计阅读时间: 8 分钟
Flutter是Google一个全新的移动UI框架,用以创建高质量的native接口,真正跨平台,打包编译成apk或者ipa在Android 和iOS平台上都可以运行。Flutter是免费开源的,当然现在flutter的布局更宽泛,google在支持web前端和lOT领域也是并驾齐驱并出了优秀框架供,全球开发者及组织均可以使用。
Flutter有又几个特点:
1.快速开发毫秒级的热加载快速地将修改应用到app。使用丰富的可完全自定义的组件在几分钟内就可以构建native界面。
2.极具表现力,灵活的UI
快速地将特性集中到native终端用户体验。利用分层结构可以完整地自定义UI,进而完成快速绘制及灵活的设计。
3.native性能
Flutter组件包含了所有平台的关键差异,例如滚动,导航,图标和字体。使得Flutter在iOS和Android上使用可以获得完全的native性能体验。
快速开发
Flutter热加载技术有助于你快速且简单地进行试验,构建UI,增加特性,并且快速修复bug。体验不到一秒的重新加载体验。
漂亮的UI
Flutter内置MD设计风格及iOS组件,更有丰富的手势API,流畅的滚动体验和平台认同感会让用户感到愉悦。
现代的响应式框架(Modern,reactiveframework)
利用Flutter响应式框架和丰富的平台,布局和功能组件是的UI构建非常简单。使用灵活并且强大的API(2D,动画,手势,性能等)可以解决在UI上各种问题。
int counter = 0; void increment() { // Tells the Flutter framework that state has changed, // so the framework can run build() and update the display. setState(() { counter++; }); } Widget build(BuildContext context) { // This method is rerun every time setState is called. // The Flutter framework has been optimized to make rerunning // build methods fast, so that you can just rebuild anything that // needs updating rather than having to individually change // instances of widgets. return new Row( children: <Widget>[ new RaisedButton( onPressed: increment, child: new Text('Increment'), ), new Text('Count: $counter'), ], ); } }
Native特性和SDKs
我们使用平台APIs,第三方SDKs和native代码开发APP。Flutter可以让你在iOS和Android继续使用Java,Swift,Objective-C代码并且使用native特性。
访问平台特性很简单。下边的代码片段开始:
var batteryLevel = 'unknown'; try { int result = await methodChannel.invokeMethod('getBatteryLevel'); batteryLevel = 'Battery level: $result%'; } on PlatformException { batteryLevel = 'Failed to get battery level.'; } setState(() { _batteryLevel = batteryLevel; }); }
学习如何使用包(packages),或者写platform channels,使用native代码,APIs和SDKs。
统一的开发标准
Flutter拥有工具及库帮助你简单快速地在iOS和Android上实现你的想法。若你还没有任何移动开发经验,那么Flutter将会是你构建漂亮的移动APP的一种简单快速的额方式。若你是有经验的iOS或者Android开发人员,那么你可以使用Flutter组件,并且继续使用已有的Java/Objective-C/Swift程序。
安装Flutter
在国内安装Flutter需要首先需要一个值得信任的国内镜像。在镜像上边保存着Flutter需要的依赖及相关库,包等。为了使用Flutter,需要使用一个备用存储位置,我们需要配置环境变量。
配置环境变量名:
PUB_HOSTED_URL 和 FLUTTER_STORAGE_BASE_URL。
在windows系统中,需要在环境变量设置中添加:
PUB_HOSTED_URL : https://pub.flutter-io.cn
FLUTTER_STORAGE_BASE_URL : https://storage.flutter-io.cn
然后运行Git命令(前提是安装了GitBash工具):
git clone -b dev https://github.com/flutter/flutter.git Flutter
Flutter文件夹需要注意:文件夹存放的路径上不要出现空格,否则在IDE中进行工程创建后会有警告,SDK环境路径上存在分隔符。
在clone完成之后,即Flutter Sdk下载完毕,还需要配置Flutter环境: xxxx/Flutter/bin目录下。
重新打开一个命令行,在其中输入命令
flutter doctor
进行环境及缺失的依赖检查,并下载需要的依赖。
运行效果如下图:
在环境及相关依赖检查完成之后,可以开始在Android Studio中进行创建工程行为。
注意:Android Studio 预览版中无法保证运行Flutter成功。因此需要使用稳定版AS,且需要3.0版本以上。
Android Studio中需要安装Flutter Plugin,Dart Plugin两个插件。
Dart SDK也需要手动安装,直接下载zip包免安装。
成功准备好IDE环境之后,就可以创建Flutter Project了,默认创建Flutter Application就可以了,按照IDE创建提示一直到最终完成。
需要注意:同样由于网络环境,直接运行Flutter
Project是不可行的,UI会一直停留在Gradle正在初始化工程。这时需要修改build.gradle配置中的中央Maven库到一个可信赖的公共Maven库。
这里我修改成Ali的Maven库
buildscript { ext.kotlin_version = '1.1.51' repositories { maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' } google() }// ......}?// ......?allprojects { repositories { maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' } } google()}// ......
然后再次sync工程,进行运行。成功准备好IDE环境之后,就可以创建Flutter Project了,默认创建Flutter Application就可以了,按照IDE创建提示一直到最终完成。
今天的分享到这里,我们的实训邦平台近期也将上线Flutter技术的项目课程,敬请关注,同时可以点击链接,学习谷歌同门的-基于Android Kotlin技术的电商APP开发项目,迈出成为移动开发工程师的新一步。