从Flutter开始聊聊跨平台移动开发框架

2022年05月11日 阅读数:5
这篇文章主要向大家介绍从Flutter开始聊聊跨平台移动开发框架,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

Flutter 是一款由 Google 开发的开源、跨平台移动端开发框架。Flutter 使用 Dart 做为开发语言,这是一门简洁、强类型的编程语言。它容许使用同一个代码库构建高性能、漂亮的 iOS 和 Android 应用,Flutter还提供了两套视觉库,能够针对不一样的平台有不一样的展现效果。此外,经过自定义的 Flutter 引擎能够将其嵌入到其余平台。程序员

一直以来,跨平台工具采用如下两种方法之一:web

在原生应用程序中嵌入 web view ,像构建网站同样构建应用程序。 封装原平生台里的控件并为它们提供一些跨平台的参数。编程

Flutter的特别之处

为了使移动端开发变得更好,Flutter 尝试了一种不一样的方法。它提供了开发人员工做的框架应用程序和可以托管应用程序的可移植运行时的引擎。该框架依托 Skia 图形库而构建,提供了实际渲染时用到的 widgets,而不只仅是原生应用控件的包装器。就像 web 包装器选项提供的那样,该方法能够灵活的以彻底自定义的方式构建跨平台应用程序,同时还会提供流畅的性能体验。与此同时,Flutter 自带的丰富的 widget 库以及一些开源的 widgets 使其成为一个功能丰富的平台。小程序

目前已经有很多大型项目接入Flutter,阿里的闲鱼、头条的抖音、腾讯的NOW直播,都将Flutter当作应用程序的开发语言。除此以外,还有一些其余中小型公司也在作。微信小程序

Flutter的总体架构

简单明了的说,Flutter 分为三大部分:由 Dart 语言负责的 Framework 层;Dart 语法执行器;Skia 图像处理引擎。缓存

Flutter 也能够理解为开发SDK或者工具包,其经过Dart做为开发语言,而且提供Material和Cupertino两套视觉控件,视图或其余和视图相关的类,都以Widget的形式表现。Flutter有本身的渲染引擎,并不依赖原平生台的渲染。Flutter还包含一个用C++实现的Engine,渲染也是包含在其中的。微信

Flutter的跨端优点

一、若是之后想在 Google 的新系统上跑程序的话,用Flutter来编写是必定没错的。网络

二、Flutter 用 Dart,学习 Flutter的同时会使咱们掌握一门新的语言,买一送一。架构

三、Flutter 天生支持 iOS 风格的控件, 称为 Cupertino,这样咱们能够一套设计, 一套code跑在两个系统上。app

四、学习Flutter的过程会改变手机端app开发的思惟,毕竟只有一个activity,全程跟个游戏引擎同样, 60帧每秒绘图。

五、Hot reload,极大地加速了开发效率。

六、Flutter 提供 method channel 给 Android 和 iOS,其实能够只用 Flutter 来开发UI,其余底层逻辑能够封装Android 和 iOS 分别的 lib package,而后直接Rx封装写回 method channel,也是一种新的开发模式。

七、性能更好, 兼容性更好,开发起来更有乐趣,这才是程序员的人生,正好 Flutter 都能知足。

跨平台方案的比较

NATIVE

原生应用程序在使用新功能时带来的困扰是最少的。因为应用程序是使用平台供应商本身(Apple 或 Google)的控件构建,为了让用户体验更加符合给定的平台,所以他们一般遵循这些供应商制定的设计指南。大多数状况下,原生的应用将会比那些跨平台构建的应用性能要好一些,尽管在不少状况下二者的差别能够忽略不计,不过具体还要取决于底层跨平台技术。原生应用的一大优点是:当须要时,他们能够当即采用 Apple 和 Google 在测试版中开发的新技术而不用等待第三方的集成。构建原生应用的主要缺点是缺少跨平台的代码复用,若是同时开发 iOS 和 Android 应用,那么开发成本可能会很高。

REACT NATIVE

React Native 容许原生应用使用 JavaScript 构建。应用中用到的控件实际上都是原平生台里的控件,因此用户使用起来感受和原生应用同样。对于那些 React Native 没有提供的须要自定义的应用,仍然须要使用原生开发。当须要定制的模块比较多时,某些状况下,在 React Native 中开发不如使用原生开发更合适。

XAMARIN

当谈到 Xamarin 时,有两种不一样的方法将会被说起。跨平台方法:Xamarin.Forms。该方法不一样于 React Native,可是从概念上讲是类似的,由于它也是抽象原生控件。一样的,在定制方面它也有和 React Native 一样的缺点。第二种方法:Xamarin-classic。该方法分开使用 Xamarin 的 iOS 和 Android 产品来构建适用于特定平台的功能,就像直接使用 Apple/Android 原生功能同样,只不过在 Xamarin 中须要使用 C# 或 F# 。使用 Xamarin 的好处是能够共享非平台特定的代码,例如网络、数据访问、Web 服务等。

NATIVE+小程序

提及这个可能首先会想到「原生 + HTML5」,至少一些业务功能经过H5的形式实现,能够节省安装包的体积,也能够实现快速更新。但会发现 HTML5 开发的方式,性能体验问题较大。好比,HTML5 页面在用户手机上常常出现打不开、一直加载中、卡顿,并且H5不少系统权限获取不了,也不支持本地缓存,须要访问通信录、调用硬件、访问蓝牙啥的这些 H5 都是没法支持的,致使仍是有大量的功能不得不放到客户端上实现。

因为国内的特殊的缘由,在微信、支付宝的带动下小程序成为移动端的时代搅局者,小程序具备强大的 Web 渲染引擎、提供丰富组件、支持本地缓存、避免 DOM 泄露等等这些都是,并且小程序技术也有利于帮助App实现「松散耦合」,好比当App的一些业务功能用小程序的形式替代,那么这个小程序可由团队或者我的独立开发、独立部署、独立管理生命周期,随时上下架而不影响APP主体,实现APP复杂业务动态化,多维发布。

目前国内也有成熟的解决方案 FinClip ,这个框架对标微信小程序的功能,相同的代码,既能在微信端跑,也能在本身的 App 里跑,效果是同样的,至关于把已经上架的微信小程序可以直接搬到本身的 App 能运行。开发一次就可以在包括 Linux、Windows、MacOS、麒麟等操做系统运行。这意味着,PC 端、车载设备、智能电视都能使用小程序了,实现了“一次开发,处处运行”。