android 原生应用、Web应用、混合应用优缺点分析
近期开发几个项目,牵涉到android的几种开发模式。对于原生态开发、web 应用开发以及混合模式开发,本人觉得并非哪一种就是最好的,哪一种就是最差的,这个全然是依据项目的实际需求,选择一种合适的开发模式。他们同一时候具备自己的长处,同一时候也有自身的缺点,我们依据实际情况,取当中的长处,尽量避免掉缺点,才是最好的开发模式。以下,我们就一同看看,这三种开发模式,究竟有什么差别。以下结合现有网上资料,感觉还是非常不错,和大家分享一下。
一、原生应用 (也称本地开发 Native App)
你使用过微软PowerPoint 或者 Word吧?这些可直接在你电脑上执行或者在智能手机上执行,简单来说,原生应用是特别为某种操作系统开发的,比方iOS、Android、黑莓等等,它们是在各自的移动设备上执行的。
长处:
- 可訪问手机全部功能(GPS、摄像头);
- 速度更快、性能高、总体用户体验不错;
- 可线下使用(由于是在跟Web相对地平台上使用的);
- 支持大量图形和动画; easy发现(在App Store里面)和又一次发现(应用图标会一直在主页上);
- 应用下载能创造盈利(当然App Store抽取20-30% 的营收)。
缺点:
- 开发成本高;
- 支持设备很有限(通常是哪个系统就在哪个平台专属设备上用);
- 上线时间不确定(App Store审核过程不一);
- 内容限制(App Store限制);
- 获得新版本号时需又一次下载应用更新。
举例:Yellow Pages Group 就开发了是几个版本号(iOS、黑莓、Android),他们在每个原生应用市场都有上架。
二、Web 应用
Web应用本质上是为移动浏览器设计的基于Web的应用,它们是用普通Web开发语言开发的,能够在各种智能手机浏览器上执行。
长处:
- 支持设备广泛;
- 较低的开发成本;
- 可即时上线;
- 无内容限制;
- 用户能够直接使用最新版本号(自己主动更新,不需用户手动更新)。
缺点:
- 表现略差(对联网的要求比較大);
- 用户体验没那么炫;
- 图片和动画支持性不高;
- 没法在App Store中下载、无法通过应用下载获得盈利机会;
- 要求联网;
- 对手机特点有限制(摄像头、GPS等)。
对于这些缺点,假设能把HTML 5的长处用到Web上的话就会得到非常大改善,虽然技术在提高, 眼下它还不能做原生应用能够做的每件事。
有些公司,比方金融时报继原生应用后也开发了Web应用,用户通过浏览器来訪问他们的应用,由于他们的应用要採取应用内购买,而App Store是不同意应用内购买的,不然它们就无法拿到那20%-30% 的抽成了。
三、混合应用(HyBrid App 开发)
混合应用大家都知道是原生应用和Web应用的结合体,採用了原生应用的一部分、Web应用的一部分,所以必须在部分在设备上执行、部分在Web上执行。
只是混合应用中比例非常自由,比方Web 占90%,原生占10%;或者各占50%;再或者原生占80%,Web占20%。
长处:
- 兼容多平台;
- 顺利訪问手机的多种功能;
- App Store中可下载(Wen应用套用原生应用的外壳);
- 可线下使用。
缺点:
- 不确定上线时间;
- 用户体验不如本地应用;
- 性能稍慢(须要连接网络);
- 技术还不是非常成熟。
比方Facebook如今的应用属于混合应用它能够在很多App Store畅通无阻,可是掺杂了大量Web特性,所以它执行速度比較慢,而如今为了提高性能FB又决定採用原生应用。
结论
如今假设你在想哪种应用是最好的,那答案就是,看情况而定:
- 比方,你的预算是多少?预算充足的话能够开发几个本地应用加一个Web应用。
- 你的应用须要什么时候面市?Web应用能够非常快地开发然后直接推出来。
- 你的应用须要包括什么特点和功能?假设跟手机的某些功能深度整合了,比方摄像头,须要呈现大量图形和动画就选原生应用好点。
- 在现实开发过程中,非常多开发者往往是自己熟悉那种开发就会用自己擅长的,也是情理之中的。可是,由于自己擅长,就肯定是最好的,排斥其它不熟悉的开发模式,这样下结论,就有点目光短浅和草率了。
--------------------------------------------------------------------------------------------------
android 原生应用、Web应用、混合应用优缺点分析的更多相关文章
- 《React Native 精解与实战》书籍连载「Android 平台与 React Native 混合开发」
此文是我的出版书籍<React Native 精解与实战>连载分享,此书由机械工业出版社出版,书中详解了 React Native 框架底层原理.React Native 组件布局.组件与 ...
- App原生、混合、纯WEB开发模式的优劣分析
什么叫做原生App? 什么是混合app? 什么是Web App开发? Native App开发即我们所称的传统APP开发模式(原生APP开发模式),该开发针对IOS.Android等不同的手机操作系统 ...
- RN与android原生开发混合后的环境报错问题
RN与android原生开发混合后的环境报错问题 需要先安装nodejs$ yarn --version1.12.1更新当前版本yarn upgrade --latest安装 | Yarnhttps: ...
- uni-app&H5&Android混合开发三 || uni-app调用Android原生方法的三种方式
前言: 关于H5的调用Android原生方法的方式有很多,在该片文章中我主要简单介绍三种与Android原生方法交互的方式. 一.H5+方法调用android原生方法 H5+ Android开发规范官 ...
- Android原生和H5交互;Android和H5混合开发;WebView点击H5界面跳转到Android原生界面。
当时业务的需求是这样的,H5有一个活动商品列表的界面,IOS和Android共用这一个界面,点击商品可以跳转到Android原生的商品详情界面并传递商品ID: 大概就是点击H5界面跳转到Androi ...
- Android进阶(二十七)Android原生扰人烦的布局
Android原生扰人烦的布局 在开发Android应用时,UI布局是一件令人烦恼的事情.下面主要讲解一下Android中的界面布局. 一.线性布局(LinearLayout) 线性布局分为: (1) ...
- 将React Native集成至Android原生应用
将React Native集成至Android原生应用 Android Studio 2.1 Preview 4生成的空项目 react-native 环境 0.22.2 初次编译后apk有1.1M, ...
- 如何在android studio中cordova的混合开发
基于Android Studio 中Cordova的开发 cordova简介 Cordova的前身是PhoneGap 官网: (http://cordova.io) Cordova应是运行在客户端本地 ...
- 像写Flutter一样开发Android原生应用
要问到Flutter和Android原生App,在开发是有何区别,编程方式是绕不开的话题.Flutter采用声明式编程,Android原生开发则采用命令式编程. 声明式编程 VS. 命令式编程 我们首 ...
随机推荐
- iText操作word文档总结
操作word文档的工具有很多,除了iText之外还有POI,但是POI擅长的功能是操作excel,虽然也可以操作word,但是能力有限,而且还有很多的bug,技术并不成熟,下面就重点介绍一种操作wor ...
- HTML——UL+CSS设计
截图例如,下面的: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/ ...
- 远程centos改动yum源
yum -y install unzip发现运行不了,说是找不到unzip的包,搜索发现时由于yum源的问题,那我就改动yum吧, 在网上找到的方法是这么说的: 1. cd /etc/yum.repo ...
- asp.net用户身份验证时读不到用户信息的问题 您的登录尝试不成功。请重试。 Login控件
原文:asp.net用户身份验证时读不到用户信息的问题 您的登录尝试不成功.请重试. Login控件 现象1.asp.net使用自定义sql server身份验证数据库,在A机器新增用户A,可以登录成 ...
- Android 5.0 开发者官方网站疏理知识结构
Android 5.0 开发人员官网知识结构疏理 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公 ...
- Mysql学习笔记(一)数据类型
原文:Mysql学习笔记(一)数据类型 学习内容: Mysql基本数据类型. 1.数字类型.. i.整型 Mysql数据类型 含义(有符号) tinyint(m ...
- 由于空间,注定的结果——第五届山东省ACM编程比赛总结
应该是,这是一个很失败的结果.目前省赛玩具.作为志愿者说,,铁匠是一个很丢人的事. 作为队长.全然没有想到会是这种一次旅程.尽管由于去baidu的实习和各种offer的申请,对acm抱着能水就水绝不深 ...
- fscanf()功能具体解释
一旦文件被解析常规时间或使用正则表达式.或者是敲自己太傻代码来解析一个普通文件. 今天突然发现c该图书馆有一个现成的文件可以解析常规功能,这是fscanf()功能.哎 曾经自己做了这么多无用功.在这里 ...
- Swift语言教程中文文档
Swift语言教程中文文档 Swift语言教程(一)基础数据类型 Swift语言教程(二)基础数据类型 Swift语言教程(三)集合类型 Swift语言教程(四) 集合类型 Swift语言教程(五)控 ...
- C#读书
C#读书雷达 大家都知道,ThoughtWorks的技术雷达每年都会发布两到三次,它不但是业界技术趋势的标杆,更提供了一种卓有成效的方法论,即打造自己的技术雷达.在这种思想的驱动下,我们诞生了自己 ...