Flutter

2020年APP-Flutter混合开发之路丨01 - Flut

2020-01-13  本文已影响0人  Skywen天问信息


为什么选择Flutter

在使用Flutter开发之前,我是一个标准的iOS开发人员。我至今认为苹果的整个体系,甚至整个技术框架都是业内最牛逼,最完善的,你甚至挑不出太多毛病。尤其在苹果发布Swift并宣布开源后,苹果的整个技术生态体系已到顶峰(Swift甚至可以用来做Web后端的开发,并且被谷歌人工智能团队所采取作为首选语言)。但是,iOS开发中也有一些不足之处:

• 在Swift发布之前,所有的苹果体系都是采用Objective-C,C,C++作为开发语言,尤其OC语法繁琐,开发效率极低

• 平台限制严重,你需要准备以下必要设备:Mac电脑,iPhone手机,Apple开发者账号(99美刀),一套组合拳下来大致需要2W人民币;

• 岗位需求逐年降低,大部分的iOS开发都转到了后端或者跨平台开发。

基于以上原因,我尝试了学习一些跨平台的技术,最终确定了Flutter,着实让人惊艳,以下为我学习中最直观的感受:

• 你甚至可以完全不懂Android和iOS即可进行开发;

• Flutter SDK的分层架构清晰,入门简单,上手快;

• 参考了React的状态管理设计,只用关注用户界面和业务逻辑,不用花功夫在状态维护上;

• 第三方插件,组件丰富,90%以上的开发需求都能在Flutter插件&组件市场找到;

舒适区待的太久,灾难降临时,你已无从躲避。作为一个移动开发人员,你应该掌握一项必杀技,对我而言,Flutter是一个不错的选择。

本篇解决问题

如果以下问题都知道,可跳过本文档。

• 对原生开发,Hybrid了解有多少?

• Flutter不同版本(Stable,Beta,Dev,Master)的特点?

•  flutter doctor命令是做什么用的?

• 配置Android Studio还需要额外下载SDK吗?为什么?

• 如何在Win上配置Flutter和Android环境变量?

原生开发,Hybrid,Flutter对比

在Flutter出现之前,App开发一般就两种形式:纯原生以及混合(Hybrid)开发,随着Flutter在2018年发布第一个预览版本后,俨然形成了三分天下的局面。

/ 原生开发 /

原生开发特指一套代码跑在单独的一个操作系统上,比如可以使用Java或者Kotlin开发Android平台应用,使用Objective-C或者Swift开发iOS平台应用,目前移动操作系统基本被Android和iOS瓜分。原生开发的显著特点就是,可以通过代码直接使用平台所提供的SDK(软件开发工具包,是一整套功能丰富的API集合),两个平台的工具集分为Android SDK与Cocoa Touch。

原生开发的优势

• 无障碍访问平台所有功能,如蓝牙,录音,定位,传感器等;

• 因为直接访问原生API,所以运行速度快,性能高,可以实现非常复杂的动画效果和交互。

原生开发的缺点

• 平台特定,一套代码只能在一端运行,所以对于企业而言,开发及维护成本相对较高;

• 原生开发,一旦有功能变动,需要重新打包发布,动态下发能力(热更新)差。

/ Hybrid /

如今,移动互联网逐渐成熟,纯原生开发已经很难应对各种变态需求。针对开发成本,动态内容的问题,衍生了一些基于前端技术栈的一些跨平台框架。

• H5 + 原生

• JavaScript开发 + 原生渲染

H5 + 原生的开发形式,目前是混合开发的主流。使用原生技术搭建APP框架,使用H5动态下发内容。由于H5代码只需要一次开发,就能同时在Android和iOS两个平台运行,这也可以减小开发成本。也就是说,H5部分功能越多,开发成本就越小。我们称这种H5+原生的开发模式为混合开发 ,采用混合模式开发的APP我们称之为混合应用Hybrid APP,如果一个应用的大多数功能都是H5实现的话,我们称其为Web APP。混合开发的技术难点主要是原生和H5之间的交互。一般情况下,我们称H5与原生交互的方式叫JSBridge

JavaScript开发 + 原生渲染的开发方式目前特指Facebook开源的React Native以及阿里开源的Weex。其核心技术点就是:把DOM树映射会原生的控件树。框架会把DOM树自动的转化为不同平台的控件树,其最终还是调用的原生API来绘制。

混合开发的优点:

• 社区庞大,开发成本低;

• 使用前端技术框架,原生渲染,性能尚可;

• 支持热更新;(目前iOS端有风险,热更新应用禁止上架App Store)。

混合开发的缺点:

• 因为要和原生通信,难以胜任复杂的绘制和动画工作;

• JS为脚本语言,解释执行,性能和原生开发编译后运行,有一定差距;

• 调用系统硬件功能非常麻烦。

/ Flutter /

鉴于Hybrid的一些缺点,谷歌开源了Flutter框架。Flutter是Google发布的一个用于创建跨平台、高性能移动应用的框架。Flutter使用自绘引擎,使用自身的布局、绘制系统。

Flutter的优点:

• 生态活跃,目前GitHub的Flutter项目Star高达84.5K;

• 大厂支持;

• 采用Dart语言开发(后面会讲一些Dart的特点,及Flutter中需要知道的Dart知识);

• 开发效率高,Flutter同时支持JIT(解释执行,开发模式下)和AOT(编译后执行,生产环境)两种运行模式。

盗用一个表格,三种开发方式的高下立判:

Swift

四年软件开发经验,熟悉Objective-C/Swift/JavaScript/Java,对iOS开发有深入研究,目前从事前端和Flutter工作,欢迎QQ交流805433115。

/ 团队介绍 /

我们是一家以信息数据研发和互联网应用研发为主的互联网公司。我们的核心服务目标,是助力企业级主体使用互联网信息化模式改善企业效率和互联网上云方式企业全面数据化,并在小程序以及PC端应用开发和融媒体运营两个核心需求上,提供从策划、运营、开发、执行、反馈全部整体解决方案。

作者 / Swift

排版 / 大野鱼头

上一篇下一篇

猜你喜欢

热点阅读