MLN -- 陌陌团队一个支持热更新的移动跨平台框架

9,746 阅读5分钟

前言

最近偶然在Github发现了一个跨平台的新框架 -- MLN,项目介绍上说是一个基于Lua语言的高性能、小巧、易上手的移动跨平台开发框架,并且支持热更新。引起了我的兴趣,怎么来说也要去尝试一番,一个兴趣点当然是因为陌陌这个名字,另一个就是热更新(毕竟连flutter都不支持热更了)。

MLN项目介绍(来源于Readme)

MLN是一个移动跨平台开发框架,让开发者用一套代码构建Android、iOS应用。MLN设计思路贴近原生开发,客户端开发者的经验,可以迅速迁移到MLN上,轻易构建出跨平台移动应用。

移动跨平台开发中flutter、weex、react native,已经各自拥有大量粉丝。MLN为什么突然以黑马姿态闯入?

  • 专为客户端开发者设计。

  • 增加包体积小,1.2M

  • 真正的原生性能。跨平台往往意味着性能受损,得益于lua虚拟机的高性能和MLN优化,我们极大减少了中间介质影响,即使在低端安卓手机加载页面也极快。

  • 支持热更新。

尝鲜

有看到陌陌团队的设计初衷:我们最初开发Lua Native的目的,只是让程序员早下班半小时

我个人非常喜欢这句话,身为程序员,我也想早点下班啊,可准时下班仿佛成为了一种奢望。

搭建环境

按照ReadMe的文章开始搭建环境,MLN开发环境搭建,官方的文档已经相当详细了,我也就不再啰嗦了,亲自体验一下。本人也尝试过,在很短的时间内装上了这些开发环境,主要是安装IDEA开发工具和它上面的两个插件。

热重载

热重载: 修改代码,立即生效,免去编译等待阶段

通过使用下载下来的demo,然后进入到热重载页面,用USB或扫码的方式连接到手机,就可以进行热重载体验了,使用起来很方便,操作很容易懂!

打开自动同步的开关,更是方便,亲测可用。

专为客户端开发者设计

MLN专为客户端开发者设计,iOS、Android程序员非常容易上手。使用MLN不需要学习Node.js、npm、vue、ES6这些对客户端开发陌生的前端技术,也不强迫使用响应式框架。花几个小时了解下lua语言和文档就能轻松上手,客户端开发者的整个技术栈在这里都派得上用场。

关于这个,我在体验的时候确实感觉上手比flutter要快,更不用说RN了,熟悉文档还挺快的。毕竟lua这个开发语言,本身就具有速度快、易上手的特点。页面布局使用熟悉的 FrameLayout、LinearLayout。感觉对安卓开发者更友好,毕竟这些布局经常用到,不过对于iOS开发者这也不是什么难事。

各平台安装包大小和性能对比

本来自己想去尝试一番最热门的几个跨平台框架在安卓和苹果手机上的各个方面的对比,正好偶然看到有位大佬已经做了这个测试了,就没有再尝试一番了,用了两台测试机分增加包体积大小、页面加载速度、页面刷新帧率(fps)、内存占用四个方面进行了测试。

由此可见,在安卓平台上,相比Weex、Flutter、React Native,使用MLN开发的APP,安装包体积增量最小,fps和页面加载速度都更接近原生APP。

由此可见,在iOS平台上,相比Weex、Flutter、React Native,使用MLN开发的APP,安装到手机后包大小增量最小,页面加载速度和内存占用都更接近原生APP。

应用场景

  1. 支持开发完整的APP,能明显节省人力。

  2. 嵌入到已有开发工程里使用,能显著提升开发效率。

陌陌首页、直播帧、更多帧部分内容、附近群组、狼人圈等一系列功能都是用MLN开发的。MLN的稳定性和性能在一年多的时间里,经受住了陌陌过亿量级MAU的考验。

相对来说,如果准备应用的话,可能还是会考虑嵌入方式吧,某些页面如果能热更新还是非常不错的,对项目很有帮助。

关于热更新

由于它是用lua语言开发的,只要把lua文件打包到工程就好了,当然通过网络下载的方式可以替换这个lua文件做到热更新咯。

至于这个过审会不会被拒,陌陌是采用这种方式的,不过我暂时还没有提审尝试过。至于能够使用热更新多久,那就看苹果的审核规则咯。

缺点

分析了解了一大堆,感觉各个方面都优秀的样子,但其实缺点还是非常明显的。

  1. 暂时主要应用于陌陌,缺少第三方验证。
  2. 后期的技术支持和扩展性未知。

总结

其实这些跨平台框架的诞生,都有着自己的技术背景。只有选对了场景才能发挥出他们真正的威力, 不过MLN还是值得尝试一番的 !

参考链接

github.com/momotech/ML…

zhuanlan.zhihu.com/p/97925879

github.com/momotech/ML…