关于APP开发目前已经过了火热的阶段,现在学习APP开发的人越来越多,但在实际的业务场景中,APP开发还是有一部分的市场需求。
所以,这里简单记录一下APP开发的几种思路和方案。
首先,目前APP开发主要有两大平台,一个是安卓,一个是IOS,其他的比如微软的移动系统都没有太大市场,所以暂且不做讨论。
而基于安卓开发使用的主要语言是java,而IOS开始主要使用swift和oc(objects-c),oc是C语言的面相对象编程语言,它是C语言的超集。
当然,APP开发还有其他的方式,比如手游开发中基于UNITY引擎,使用C++开发的王者荣耀等。
和unity游戏引擎对应的是unreal引擎,简称UE,也就是虚幻游戏引擎。
当然游戏引擎可以使用多种语言进行开发,比如js,c#,c++等。
目前抛开手游开发之外,普通的APP开发大概有三种方式:
native开发
native开发就是基于安卓和Ios原生APP开发,使用的是安卓或ios官方提供的接口,也就是传统的app开发方式,其优点是性能最高,定制化最完善;缺点是移植性比较差,不同的平台需要编写多套不同的代码。比如使用native开发一款APP,这时安卓和ios要写两套完全一样的业务代码。
其主要使用的技术就是基于安卓的java和基于ios的swift和oc .
hybird app
混合APP开发,其实就是使用原生native+webview的方式进行开发。
因为h5跨平台的特性,可以一次开发,多平台部署,但又需要原生native的支持,所以才有了混合开发的模式。
混合模式开发,几个大厂有其各自不同的实现。
有hybird APP框架,其是基于jsbridge桥接的方式实现,使用jsbridge实现h5和native接口之间的双向通讯。
和hybird app类似的还有react native app实现,其是facebook为了解决hybird app的缺陷而设计的一款ui框架,原理和hybird app相同。
weex app是阿里开发的一款混合开发的框架,其功能和react native app大致相同,只是侧重点不同。
flutter APP是由谷歌开发的一款混合模式APP开发框架,其原理是自己设计了一种开发语言,然后渲染引擎能够把代码直接编译成原生的native代码,所以其具有更高的性能。
uni-app 是DCloud基于vue开发的一款APP框架,其功能和和hybird app差不多,只不过是使用vue进行开发。
其实说白了,所谓的混合开发就是基于native + h5来实现的,利用其不同的特性来实现代码的复用和性能的最优解。
还有一种native + 小程序的方式,是微信小程序带火的一种开发方式,其就是一种比native + h5开发更加定制化的一种方式。
所以,混合开发的核心技术就是在原生Native开发中加入webview技术,然后再实现webview和native接口之间的双向通讯过程,比如jsbridge就是典型的webview和native通讯的一种方式,比如微信小程序开发中的wx对象就是典型的jsbridge对象。
webapp
webapp就是纯前端开发的APP项目比如利用vue的移动端库,或者其他的移动端开发库实现的一种无需安装和上传应用商店的webapp,其特点是简单方便,一次开发多平台使用。
缺点是功能有限,性能比较差,只能满足一些特定场景的开发需求。
其核心思想就是利用浏览器跨平台的特性,把浏览器引擎打包中APP,直接在浏览器引擎中渲染h5页面。
关于混合APP开发模式原理可以看博客——Hybrid App技术解析 -- 原理篇 - 郭东东的文章 - 知乎