关于移动端跨平台开发的选择Flutter/MAUI

今天是2021年10月13日,目前最适合移动端跨端开发的答案的确是Google开发的Flutter

Flutter

它有如下优点:

  • 渐进式开发,作为部分页面嵌入到已有程序中(我认为最大的优点)
  • 和原生代码进行相互调用,解决移动操作系统新版本发布导致API变化,但是flutter自身API没更新的问题
  • flutter自己保证了数据逻辑的双端一致性。
  • 开源
  • 社区活跃
  • 国际化
  • 图片尺寸适配

听说的缺点:

  • 代码嵌套有点难受
  • 因为没有实际进行过开发,只是比较占内存,有时候有点可接受的卡。

Flutter的UI采用的是直接把控件的样式当做图片绘制到屏幕上的方案,类似于DirectUI(Windows QQ),WPF,UWP,QT等无控件绘制方案,后面提到的几个都\color{#00FFFF}{不开源}

MAUI

另外一个Microsoft正在开发的MAUI,也称为一次开发多个平台,今天特地把他的源码下载下来研究,它的界面控件是原生控件。MAUI的思路是,利用xaml来描述抽象的界面,解析xaml的时候,创建不同平台的实例, 然后利用C#来写事件。

在移动端,MAUI借助的是比较成熟的.net库(xamarin.ios或者xmarian.android)来创建不同平台实例。
如果发布正式版,它的UI性能是最好的,因为是原生的控件,调试阶段不会有性能问题因为C#性能本身很好,在发布的时候C#代码会被编译成本机代码,无需.net运行环境。
它的一些特性如下

  • 是否支持渐进式开发,在已有的开发项目中开发部分页面
    还不支持

  • 是否支持和原生代码的相互调用
    理论上支持,但是现在没有看到实际的例子,说理论上支持的原因是C#和C语言的互操作已经是非常成熟了,加上xamarin.ios中发现存在对C语言操作的实例,比如objc_msgsend,或者其他C形式的iOS API

  • 是否支持操作系统新特性更新
    比较容易支持,拿iOS(不懂Android)为例子,原因包含

    1. responseToSelector,performSelector, iOS版本判断,这三个函数在MAUI中可以使用
    2. xamarin.ios的源码比较容易修改
    3. 如果不想修改xamarin.ios源码,**也许**可以采用C#语法的扩展类方法来实现,因为大部分的API到最后都根据函数名转发给了obj_msgsend
    

如果MAUI也支持渐进式开发,我想我会选择它吧,不过Flutter发展的太快,不知道等不等得到MAUI的发布。

image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容