独立开发者如何选择移动开发技术

作为APP独立开发者,身兼数职。开发技术的选择不仅关系到开发效率,学习成本,用户体验,所以尤为重要。 如何选择移动开发技术呢,你必须先要了解移动开发技术史,然后结合自身特点和项目特点来选择。

原生开发技术

目前主流的移动开发都基于Android和iOS系统。我们可以使用java或者kotlin开发Android应用,使用Objective-C或者swift开发iOS应用。使用原生语言开发出来APP性能好用户体验好,但如果你的APP要支持两个平台那你必须用各自的原生语言分别开发。

H5跨平台开发技术

由于使用原生开发需要写两套代码导致 工作量翻倍。为了解决这个通点,产生了像Cordova和Ionic这样的通过H5页面实现跨平台开发的技术。

  • 原理:

cordova/ionic简单来说就是用H5技术栈(js、react、vue…)开发,依靠浏览器绘制UI、然后通过桥(js和java间的通讯机制)来使用原生功能。

  • 性能方面:

由于是浏览器绘制,以及依靠桥通讯性能一般。

  • 开发效率:

任何Web的技术栈都能使用,所见即所得的开发模式,很方便。但是使用的开发者数量有限,导致现成插件数量有限,有时不得不自己开发。

  • 生态环境:

广大的Web生态库,cordova插件生态。

  • 版本更新:

支持热更新。

  • 学习成本:

需要学习js、cordova、基础的iOS和Android

如果你只会原生js开发,想要开发移动APP,你可以尝试下,用js开发的html都不需要改动就能直接在APP中打开。但由于性能一般,适合做少交互,多更新(热更新可以频繁推送)的展示型的APP。

使用Web语言开发通过原生渲染的技术

由于浏览器绘制效率不高,而移动APP又是重交互的。为了解决这个通点,出现了像React Native这样的技术。

  • 原理:

Reacr Native简单来说就是用React技术栈开发,然后通过桥(js和java间的通讯机制)来使用原生功能和映射原生组件绘制UI。

  • 性能方面:

由于是原生绘制性能好,但仍然是依靠桥通讯,频繁通讯影响性能。比如滑动动画,在UI频繁变动的时候,频繁通讯导致性能降低。

  • 开发效率:

使用最流行的React的技术栈,同样所见即所得很方便。开发者数量多,插件数量较丰富。

  • 生态环境:

react native插件生态库。

  • 版本更新:

支持热更新。

  • 学习成本:

react语法、react native、基础的iOS和Android

如果你会React,虽然不能只开发一套代码就能同时在浏览器和移动APP里使用,但是你可以使用一种语法来支持全端开发。同时RN实现的APP绘制性能还不错,支持热更新,基本没有短板,很多商业项目已经使用。

跨时代的Flutter技术

由于React Native同样存在桥的通讯,性能不能达到最佳。Flutter抓住这一点横空出世,使其性能与原生开发一样好。 为什么是跨时代的,因为之前技术都是从开发者的角度出发解决了跨平台(由于js开发人员众多)。而flutter是从用户角度出发反过来倒推开发人员学习。

  • 原理:

flutter简单来说就是不同平台嵌入了统一的绘制引擎直接调用系统API进行绘制,所以性能基本和原生相当。

  • 性能方面:

调用原生API性能很好。

  • 开发效率:

同样支持所见即所得的开发模式。

  • 生态环境:

flutter毕竟刚出,生态还没完善。但是有google背书,急剧上升的人气,相信很快能完善。

  • 版本更新:

目前不支持热更新。

  • 学习成本:

dart语法、flutter、基础的iOS和Android,毕竟冷门语法

如果你不会web只会Android或iOS,flutter是最好的选择,不仅是趋势,同时让你有了全端的能力。虽然不支持热更新,但凭借超高的性能,APP体验最好。

所以要根据自己的技术栈和APP的性能要求综合起来选择最合适自己的方式开发。

作者简介

鱼籽酱yzh,独立开发者

协作创业鱼塘Club创始人

践行每日探索与分享互联网知识