13

发现一个神奇的移动跨平台开发框架

 3 years ago
source link: https://blog.csdn.net/foruok/article/details/103591026
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

发现一个神奇的移动跨平台开发框架

相当多的小伙伴对我的印象都是——Qt,嘿嘿,这是因为我凭一己之蛮力写作并出版了两本Qt方面的书《Qt on Android核心编程》和《Qt Quick核心编程》,在当时的Qt圈子里砸出了一点小浪花。

很少有人知道,我还做过Android开发和iOS开发,是使用Qt这个跨平台框架哦——Qt从2013年开始支持移动平台了。

不过用Qt开发移动端APP,有两个不大好的地方:1)安装包体积太大,会比原生APP增加40M左右;2)界面风格与原生平台适配较为麻烦。

鉴于这两个原因,强大的Qt在移动端的发展有些缓慢,后来我自己也没怎么用Qt开发移动端应用了,不过移动端跨平台开发真的是非常方便,对小公司、小团队来讲也真的是非常经济的选择,所以我一直在关注各种跨平台开发框架,比如Cordova、React Native、Weex、Flutter、Xamarin等,都有所了解。

最近在GitHub上浪的时候,忽然发现了一个新的框架——MLN,项目页面上介绍说MLN是一个高性能、小巧、易上手的移动跨平台开发框架。而且神奇的是,它居然是基于Lua语言的框架!

你知道吗?我在2008年时用过Lua ,还在CSDN上写了一系列的博客。

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ZvcnVvaw==,size_16,color_FFFFFF,t_70

当时还采用Lua作为脚本化的语言为我们的WebOS系统设计了一个热更新的插件框架。

所以当我看到MLN可以使用Lua开发时,兴趣一下子被调动起来,赶紧浏览它的GitHub主页,发现项目的README这么介绍MLN:

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

  • 易上手,MLN专为客户端开发者设计,iOS、Android程序员非常容易上手。使用MLN不需要学习Node.js、npm、vue、ES6这些对客户端开发陌生的前端技术,也不强迫使用响应式框架。花几个小时了解下lua语言和文档就能轻松上手,客户端开发者的整个技术栈在这里都派得上用场。
  • 增加包体积极小,1.2M。
  • 真正的原生性能。跨平台往往意味着性能受损,得益于lua虚拟机的高性能和MLN优化,我们极大减少了中间介质影响,即使在低端安卓手机加载页面也极快。
  • 支持热更新。

简单讲,就是跨平台、易上手、性能高、热更新、增加包体积超小。

想想我之前用的Qt,安装包体积增加几十兆,想想RN性能优化时的各种槽点,我对MLN到底怎么样,起了强烈的好奇心。刚好我手上有一个媳妇淘汰下来的iPhone 6,还有一个之前移动充话费送的OPPO A3,都是过时的机子,正好可以用来测试MLN。于是我就找了两个朋友,参照MLN项目主页上给出的DEMO,用MLN、Weex(0.28.0)、Flutter(1.13.2)、React Native(0.61.5)各整了一个DEMO,分增加包体积大小、页面加载速度、页面刷新帧率(fps)、内存占用四个方面进行了测试。

先说Android手机OPPO A3上的测试结果。

安装包大小测试结果(增量):

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ZvcnVvaw==,size_16,color_FFFFFF,t_70

页面加载速度测试结果:

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ZvcnVvaw==,size_16,color_FFFFFF,t_70

页面刷新帧率(fps)测试结果:

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ZvcnVvaw==,size_16,color_FFFFFF,t_70

内存占用测试结果:

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ZvcnVvaw==,size_16,color_FFFFFF,t_70

测试结果整理成表格如下:

20191218082414274.png

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

再来看iPhone 6 的测试结果。

安装到手机后包大小测试结果(增量):

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ZvcnVvaw==,size_16,color_FFFFFF,t_70

页面加载速度测试结果:

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ZvcnVvaw==,size_16,color_FFFFFF,t_70

页面刷新帧率(fps)测试结果:

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ZvcnVvaw==,size_16,color_FFFFFF,t_70

内存占用测试结果:

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ZvcnVvaw==,size_16,color_FFFFFF,t_70

测试结果整理成表格如下:

20191218082527119.png

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

综合两个平台,可以发现,采用MLN框架开发的APP,的确具有其项目首页(https://github.com/momotech/MLN)上所说的易上手、性能高、增加包体积超小等特点。

除了显著性能优势,MLN上手门槛也不高,甚至可以说非常低——它从页面布局方式到开发模式,都贴近客户端程序员开发习惯,通常一天就能上手。

说到这里可能有小伙伴会有疑问,这么好的移动跨平台开发框架,适合在什么场景下使用呢?

一个典型的场景是,MLN更适合嵌入到已有开发工程里使用,进行混合式开发。这种模式下,它能实现热更新并显著提高开发效率。

第二个典型场景是,使用MLN独立开发完整APP。这个也经过验证,可以明显节省人力并能达到原生一样的高性能。

到这里,又有小伙伴会问:有没有App在用呢?

其实推出MLN的陌陌公司,其App就有多处是用MLN开发的,包括陌陌APP的首页(陌陌第一帧)、直播帧(陌陌第二帧)、直播页面在线榜单等,陌陌里面的附近群组、僵尸派对、聊天室等,也是用MLN开发的。

可能很多人对陌陌的印象还停留在陌生人社交软件这个标签上,而实际上,陌陌的产品最近几年有很多变化,短视频、直播、游戏等,都有涉猎,而这些产品的发展,也打磨出一支实力雄厚的研发技术团队。

MLN就是陌陌技术团队的对外技术输出,已经在陌陌的商业化场景下验证过,是经得起考验的框架,值得一试。

如果你对MLN感兴趣,可以访问 https://github.com/momotech/MLN 了解更多。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK