移动 APP 开发模式
目前移动 APP 主要分为三种开发模式:Native APP、Web APP 和 Hybrid APP。包含以下技术栈:
一、Native APP
1.1 概述
Native APP 也称为原生开发,主要指直接使用相应平台特有的开发工具和语言进行开发。
主流的移动平台主要是 iOS 和 Android。
平台 | iOS | Android |
---|---|---|
开发工具 | Xcode | Android Studio |
开发语言 | Objective-C/Swift | Java/Kotlin |
官方资源 | developer.apple.com | developer.android.google.cn |
三方资源 | Awesome iOS | Awesome Android UI、Awesome Android |
系统架构 | iOS 基于 UNIX 系统,系统架构采用了分层的架构,共分为四层,从高到低分别是可触摸层(Cocoa Touch layer)、媒体层(Media layer)、核心服务层(Core Services layer)、核心操作系统层(Core OS layer) | Android 基于 Linux 系统,系统架构采用了分层的架构,共分为四层,从高到低分别是应用层、应用框架层、系统运行库层、Linux 内核层 |
1.2 优点
- 可以访问手机所有功能(GPS、摄像头等)、可实现更加全面的功能;
- 运行速度快、性能高,可以实现最佳的用户体验;
- 支持大量的图形和动画,不卡顿,反应速度快;
- 稳定性高,每个代码都是经过开发者精细设计,极少出现崩溃和异常
- 安全性高,可以有效防止病毒和漏洞的出现;
- 能够更快速的兼容和实现手机系统最新的功能。
1.3 缺点
- 开发时间周期长;
- 开发人力成本较高;
- 可移植性差,同样的业务逻辑需要 iOS、Android 各自研发人员利用不同开发工具和开发语言实现两次;
- 对动态化的限制,一旦发布较难变更已实现页面及内容;
- 功能升级需要至应用商店重新审核,并重新下载安装包进行安装。
二、Web APP
Web APP 也称为 H5 APP(主流的移动 Web APP 依赖 HTML5 开发),主要指通过传统 Web 开发模式来实现手机 APP 开发模式。
Web 语言包括 HTML5、CSS 及 JavaScript(TypeScript),开发工具则相对多样化,包括 VSCode、Sublime Text、WebStorm 等。
2.1 优点
- 开发时间相对较短;
- 开发人力成本较低;
- 跨平台性好,基于 WebView 运行的 H5 APP 通常可以同时运行在 iOS 和 Android 多平台上;
- 动态性好,通常在服务端部署最新代码后,APP 端可以很快访问实现更新;
- 不要依赖应用商店审核,直接打开 APP 及可以体验新功能。
2.2 缺点
- 无法使用很多移动硬件设备的独特功能;
- 运行速度慢、性能较差,用户体验不好;
- 无法支持大量的图形和动画,会有较明显卡顿;
- 稳定性较差,对于不同浏览器兼容性复杂,难以预知风险;
- 安全性较差,Web 相关的漏洞和风险均可能存在于 Web APP。
三、Hybrid APP
Hybrid APP 也称为混合开发 APP,其产生的原因主要是希望融合原生及 H5 APP 的优点,实现一套代码多端运行,规避各自的缺点。
关于移动端跨平台开发的解析,可以参考《移动端跨平台开发的深度解析》
跨平台技术主要为三类:
- H5+原生(Cordova、Ionic、微信小程序)
- JavaScript开发+原生渲染 (React Native、Weex、快应用)
- 自绘UI+原生(QT for mobile、Flutter)
技术类型级 | UI渲染方式 | 性能 | 开发效率 | 动态化 | 框架代表 |
---|---|---|---|---|---|
H5+原生 | WebView渲染 | 一般 | 高 | 支持 | Cordova、Ionic、微信小程序 |
JavaScript+原生渲染 | 原生控件渲染 | 好 | 中 | 支持 | React Native、Weex、快应用 |
自绘UI+原生 | 调用系统API渲染 | 好 | F 高 QT低 | 默认不支持 | QT for mobile、Flutter |
混合应用的优点是动态内容是H5,web技术栈,社区及资源丰富,缺点是性能不好,对于复杂用户界面或动画,WebView不堪重任。
另:在游戏开发领域,Unity 技术栈同样实现了跨端开发模式,但通常仅针对游戏领域。
3.1 优点
- 开发时间相对较短;
- 开发人力成本相对较低;
- 跨平台性好,主流的跨端技术栈均支持 iOS 和 Android 平台同时运行;
- 动态性较好,主流的跨端技术栈均可以实现动态更新,但受限与应用市场审核,非紧急情况下不建议使用;
- 较好的用户体验,最新的 React Native、Flutter 技术栈均已实现接近原生的用户体验,日常使用过程中用户较难感受与原生的体验区别。
3.2 缺点
- 开发时间周期较长;
- 开发人力成本较高;
- 仍然需要原生侧技术支持实现;
- 遇到问题可能涉及跨端技术栈及原生技术栈,较难排查;
- 对于中大型应用实现,仍然存在一定的性能问题。
参考文档
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 宁静至远,博雅多通!