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

news/2024/7/20 22:50:17 标签: android, ios, 移动开发, 编程语言, lua

相当多的小伙伴对我的印象都是——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上写了一系列的博客。

当时还采用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上的测试结果。

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

页面加载速度测试结果:

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

内存占用测试结果:

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

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

再来看iPhone 6 的测试结果。

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

页面加载速度测试结果:

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

内存占用测试结果:

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

由此可见,在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 了解更多。


http://www.niftyadmin.cn/n/817344.html

相关文章

(2)Python解释器的安装

鉴于有同学在安装Python解释器出现了问题,这里再安装一下 step1,下载安装包,链接https://www.python.org/downloads/ 这里我安装的是3.6.4版本 我选择的是64位下载并安装, step2,安装文件 我选择的是install now 自动安装,注意要勾…

数据结构18:递归的应用(1):任意进制转换

前面讨论过这个算法,这里考虑用递归的方法实现。 首先我们用最熟悉的十进制分析这个问题 十进制有十个不同的符号:convString0123456789,比10小的数转换成十进制,直接查表就可以:convString[n],那么比10大…

程序员的第二曲线:突破瓶颈避免等死

Andy Hunt 的《程序员思维修炼》一书中介绍过一个德雷福斯模型的&#xff0c;描述人对技能的掌握和运用水平。如下图所示&#xff1a; 据统计&#xff0c;就某一项技能的掌握水平而言&#xff0c;五个阶段占比如下&#xff1a; 新手&#xff0c;<10%高级新手&#xff0c;5…

数据结构19:递归调用的实现

目录 一、递归调用的实现 二、python中的递归深度限制 一、递归调用的实现 当一个函数被调用的时候&#xff0c;系统会把调用时的现场数据压入到系统调用栈。 每次调用时&#xff0c;压入的现场数据称为栈帧。当函数返回时&#xff0c;要从调用栈的栈顶取得返回地址&#xf…

程序员如何应对年龄这样的职场瓶颈?

有位小伙伴提了一个问题&#xff1a; 技术人遇到瓶颈怎么办&#xff1f;上升通道虽然明确&#xff0c;但个人会有无力感&#xff0c;是否可以操作&#xff1f;长期看&#xff0c;技术换代新人不断&#xff0c;到一定年龄后&#xff0c;面临淘汰&#xff0c;周边有哪些工作可以考…

springCloud集成zookeper

最近梳理springboot相关知识。看到分布式锁&#xff0c;其中有一种是使用zookeeper实现的&#xff0c;就学习一下zookeeper。本来是使用springboot和zookeeper集成的&#xff0c;但是试了半天&#xff0c;好像不行。pom文件一直冲突。无奈&#xff0c;参考 https://start.spri…

数据结构20:递归可视化(分形树)

目录 一、图示 1、python的海龟作图系统turtle module 二、自相似递归图形 三、分形树 一、图示 前面的递归算法展现了其简单而强大的一面&#xff0c;但还是难有个直观的概念&#xff0c;下面通过递归作图来展现递归调用的视觉影响力。 1、python的海龟作图系统turtle mod…

华为的OD,值得去吗?

最近有不少小伙伴接到了华为OD的面试邀约&#xff0c;但搞不清楚OD到底怎么回事儿&#xff0c;要不要去。所以今天来说说华为的OD到底是怎么回事儿&#xff0c;怎么判断是否值得去。 1、华为的OD是怎么回事儿 OD&#xff0c;是Outsourcing Dispacth的缩写&#xff0c;简单粗暴地…