原生App vs 移动Web App
jopen 12年前
<p><span style="font-family:'Microsoft YaHei';">每当你打算开发移动应用程序时,都要考虑你的应用如何创建以及如何部署。如今已有两个主要的方向:<b>原生App</b> 以及 <b>移动Web App</b>。那么在今天这篇文章中就来比较一下两者的区别来供大家参考。<br /> <img style="cursor:pointer;" alt="原生App vs 移动Web App" src="https://simg.open-open.com/show/63c79cd69d0ad80503656df70090a2dd.jpg" width="550" height="200" /><br /> </span></p> <div> <br /> </div> <div> <span style="font-family:'Microsoft YaHei';"><b><span style="font-size:18px;">原生App vs 移动Web App : 定义</span></b></span> </div> <div> <span style="font-family:'Microsoft YaHei';"><b>什么叫做原生App?</b></span> </div> <div> <span style="font-family:'Microsoft YaHei';">原生App是专门针对某一类移动设备而生的,它们都是被直接安装到设备里,而用户一般也是通过网络商店或者卖场来获取例如 </span> <span style="text-align:left;line-height:20px;font-family:Verdana, Arial, Helvetica, sans-serif;color:#333333;"> </span> <a href="/misc/goto?guid=4958348780796295245" rel="nofollow" target="_blank">The App Store</a> <span style="text-align:left;line-height:20px;font-family:Verdana, Arial, Helvetica, sans-serif;color:#333333;"> 与 </span> <a href="/misc/goto?guid=4958348781609724770" rel="nofollow" target="_blank">Android Apps on Google Play</a> <span style="text-align:left;line-height:20px;font-family:Verdana, Arial, Helvetica, sans-serif;color:#333333;">.</span> </div> <div> <br /> </div> <div> <span style="font-family:'Microsoft YaHei';">随便说几个原生App的例子,比如 iOS 的</span> <a href="/misc/goto?guid=4958341145123624190" rel="nofollow">Camera+</a> <span style="font-family:'Microsoft YaHei';">以及 Android 的 </span> <a href="/misc/goto?guid=4958348783145348822" rel="nofollow">KeePassDroid</a> </div> <div> <br /> </div> <div> <span style="font-family:'Microsoft YaHei';"><b>什么叫做移动Web App?</b></span> </div> <div> <span style="font-family:'Microsoft YaHei';">一般说来,移动Web App都是都是需要用到网络的,它们利用设备上的浏览器(比如iPhone的Safari)来运行,而且它们不需要在设备上下载后安装。</span> </div> <div> <br /> </div> <div> <span style="font-family:'Microsoft YaHei';"><b><span style="font-size:18px;">原生App 与 移动Web App的比较</span></b></span> </div> <div> <span style="font-family:'Microsoft YaHei';"><b><span style="font-size:16px;">用户界面</span></b></span> </div> <div> <span style="font-family:'Microsoft YaHei';">有些公司为同样的产品制作了原生App与移动Web App,下图就是非死book的原生App与移动Web App的界面比较:</span> </div> <div> <span style="font-family:''Microsoft YaHei'';"><img style="cursor:pointer;" alt="原生App vs 移动Web App" src="https://simg.open-open.com/show/5db356e1ebbcfb5243c2d27de9c6e07e.jpg" width="550" height="458" /><br /> </span> </div> <div> <span style="font-family:'Microsoft YaHei';">注意这两者的不同地方会产生不同的用户体验结果。</span> </div> <p><b><br /> </b></p> <p><b><span style="font-size:16px;">开发方面<br /> </span></b><span style="font-family:'Microsoft YaHei';"> </span><b>原生App</b></p> <ul> <li><span style="font-family:'Microsoft YaHei';"> </span><span style="font-family:'Microsoft YaHei';"> </span><span style="font-family:'Microsoft YaHei';">每一种移动操作系统都需要独立的开发项目</span></li> <li><span style="font-family:'Microsoft YaHei';"> </span><span style="font-family:'Microsoft YaHei';">每种平台都需要独立的开发语言。Java(Android), Objective-C(iOS)以及Visual C++(Windows Mobile)等等</span></li> <li><span style="font-family:''Microsoft YaHei'';"> </span><span style="font-family:'Microsoft YaHei';">需要使用各自的软件开发包,开发工具以及各自的控件</span></li> </ul> <div> <span style="font-family:'Microsoft YaHei';"> <b>移动Web App</b></span> </div> <div> <ul> <li><span style="font-family:'Microsoft YaHei';"> </span><span style="font-family:'Microsoft YaHei';"> </span><span style="font-family:'Microsoft YaHei';">因为运行在移动设备的浏览器上,所以只需要一个开发项目</span></li> <li><span style="font-family:''Microsoft YaHei'';"> </span><span style="font-family:'Microsoft YaHei';">这种应用可以使用HTML5,CSS3以及JavaScript以及服务器端语言来完成(PHP,Ruby on Rails,Python)</span></li> <li><span style="font-family:''Microsoft YaHei'';"> </span><span style="font-family:'Microsoft YaHei';">这里可没有标准的SDK,基本任意选择</span></li> </ul> </div> <div> <span style="font-family:'Microsoft YaHei';"><i>别忘了有一些跨平台的开发工具,比如PhoneGap, Sencha Touch 2以及Appcelerator Titanium等等。</i></span> </div> <div> <br /> </div> <div> <span style="font-family:'Microsoft YaHei';"><b><span style="font-size:16px;">能力方面</span></b></span> </div> <div> <span style="font-family:'Microsoft YaHei';"> <b> 原生App</b></span> </div> <div> <ul> <li><span style="font-family:'Microsoft YaHei';">能够与移动硬件设备的底层功能,比如个人信息,摄像头以及重力加速器等等</span></li> </ul> </div> <div> <span style="font-family:'Microsoft YaHei';"> <b> 移动Web App</b></span> </div> <div> <ul> <li><span style="font-family:'Microsoft YaHei';">只能使用有限的移动硬件设备功能。</span></li> </ul> </div> <div> <br /> </div> <div> <span style="font-family:'Microsoft YaHei';"><b><span style="font-size:16px;">赢利</span></b></span> </div> <div> <span style="font-family:'Microsoft YaHei';"> <b>原生App</b></span> </div> <div> <ul> <li><span style="font-family:'Microsoft YaHei';">可以使用专门的移动平台的广告,比如AdMob</span></li> </ul> </div> <div> <span style="font-family:'Microsoft YaHei';"> <b>移动Web App</b></span> </div> <div> <ul> <li><span style="font-family:'Microsoft YaHei';">基本没有限制,但也没什么优势</span></li> </ul> </div> <div> <span style="font-family:'Microsoft YaHei';"><i>注意原生App能够直接在对应的官方商店进行定价就能马上赢利,然而移动Web App需要你自己完成付款的系统,这可不是一件简单的事情。</i></span> </div> <div> <br /> </div> <div> <span style="font-family:'Microsoft YaHei';"><b><span style="font-size:16px;">获取方法</span></b></span> </div> <div> <span style="font-family:'Microsoft YaHei';"> <b>原生App</b></span> </div> <div> <ul> <li><span style="font-family:'Microsoft YaHei';">直接下载到设备</span></li> <li><span style="font-family:'Microsoft YaHei';">以独立的应用程序运行(并不需要浏览器)</span></li> <li><span style="font-family:'Microsoft YaHei';">用户必须手动去下载并安装这些原生App</span></li> <li><span style="font-family:'Microsoft YaHei';">有一些商店与卖场来帮助用户寻找你的App</span></li> </ul> </div> <div> <span style="font-family:'Microsoft YaHei';"> <b> 移动Web App</b></span> </div> <div> <ul> <li><span style="font-family:'Microsoft YaHei';">从移动设备上的浏览器访问</span></li> <li><span style="font-family:'Microsoft YaHei';">不需要安装额外的软件</span></li> <li><span style="font-family:'Microsoft YaHei';">软件更新只需要服务器就够了</span></li> <li><span style="font-family:'Microsoft YaHei';">因为现在没有什么商品或卖场提供这种App,所以如何搜索这些移动Web App相当不简单</span></li> </ul> </div> <div> <br /> </div> <div> <span style="font-family:'Microsoft YaHei';"><b><span style="font-size:16px;">版本控制</span></b></span> </div> <div> <span style="font-family:'Microsoft YaHei';"> <b> 原生App</b></span> </div> <div> <ul> <li><span style="font-family:'Microsoft YaHei';">用户可以自由地选择是否更新软件版本,所以会出现不同用户同时使用不同版本的情况</span></li> </ul> </div> <div> <span style="font-family:'Microsoft YaHei';"> </span> <b>移动Web App</b> </div> <div> <ul> <li><span style="font-family:'Microsoft YaHei';">所有的用户都是用同样的版本</span></li> </ul> </div> <div> <b><span style="font-size:16px;">优势</span></b> </div> <div> <span style="font-family:'Microsoft YaHei';"> <b> 原生App</b></span> </div> <div> <ul> <li><span style="font-family:'Microsoft YaHei';">比移动Web App运行快</span></li> <li><span style="font-family:'Microsoft YaHei';">一些商店与卖场会帮助用户寻找原生App</span></li> <li><span style="font-family:'Microsoft YaHei';">官方卖场的应用审核流程会保证让用户得到高质量以及安全的App</span></li> <li><span style="font-family:'Microsoft YaHei';">官方会发布很多开发工具或者人工支持来帮助你的开发</span></li> </ul> </div> <div> <span style="font-family:'Microsoft YaHei';"> </span> <b>移动Web App</b> </div> <div> <ul> <li><span style="font-family:'Microsoft YaHei';">跨平台开发</span></li> <li><span style="font-family:'Microsoft YaHei';">用户不需要去卖场来下载安装App</span></li> <li><span style="font-family:'Microsoft YaHei';">任何时候都可以发布App,因为根本不需要官方卖场的审核</span></li> <li><span style="font-family:'Microsoft YaHei';">如果你已经有了一个Web App,你可以使用 responsive web design来辅助改进(这也是优势?)</span></li> </ul> </div> <div> <b><span style="font-size:16px;">缺陷</span></b> </div> <div> <span style="font-family:'Microsoft YaHei';"> <b>原生App</b></span> </div> <div> <ul> <li><span style="font-family:'Microsoft YaHei';">开发成本高,尤其是当需要多种移动设备来测试时</span></li> <li><span style="font-family:'Microsoft YaHei';">因为是不同的开发语言,所以开发,维护成本也高</span></li> <li><span style="font-family:'Microsoft YaHei';">因为用户使用的App版本不同,所以你维护起来很困难</span></li> <li><span style="font-family:'Microsoft YaHei';">官方卖场审核流程复杂且慢,会严重影响你的发布进程</span></li> </ul> </div> <div> <br /> </div> <div> <span style="font-family:'Microsoft YaHei';"> <b>移动Web App</b></span> </div> <div> <ul> <li><span style="font-family:'Microsoft YaHei';">无法使用很多移动硬件设备的独特功能</span></li> <li><span style="font-family:'Microsoft YaHei';">要同时支持多种移动设备的浏览器让开发维护的成本也不低</span></li> <li><span style="font-family:'Microsoft YaHei';">如果用户使用更多的新型浏览器,那问题就更不好处理了</span></li> <li><span style="font-family:'Microsoft YaHei';">对于用户来说,这种App很难被用户发现</span></li> </ul> </div> <div> <br /> </div> <div> <span style="font-family:'Microsoft YaHei';"><b><span style="font-size:18px;">原生App vs 移动Web App : 你如何选择?</span></b></span> </div> <div> <span style="font-family:'Microsoft YaHei';">所以在你准备做移动App时,你应该先问问自己以下几个问题:</span> </div> <div> <ol> <li><span style="font-family:'Microsoft YaHei';">你的应用是否需要使用某些设备的特殊功能,比如摄像头,摄像头闪光灯或者重力加速器</span></li> <li><span style="font-family:'Microsoft YaHei';">你的开发预算</span></li> <li><span style="font-family:'Microsoft YaHei';">你的应用是否一定需要网络</span></li> <li><span style="font-family:'Microsoft YaHei';">你的应用的目标硬件设备是所有的移动设备还是仅仅只是一部分而已</span></li> <li><span style="font-family:'Microsoft YaHei';">你自己已经熟悉的开发语言</span></li> <li><span style="font-family:'Microsoft YaHei';">这个应用对于性能要求是否苛刻</span></li> <li><span style="font-family:'Microsoft YaHei';">如何靠这个应用赢利</span></li> </ol> </div> <div> <span style="font-family:'Microsoft YaHei';">我想这几个问题应该能让你做出明智的选择。</span> </div> <div> <br /> </div> <div> <span style="font-family:'Microsoft YaHei';"><b><span style="font-size:18px;">结论</span></b></span> </div> <p><span style="font-family:'Microsoft YaHei';">你的选择是原生App还是移动Web App,主要受商业目标,目标用户,以及技术需要这些因素影响的。其实更多时候你也不要为选择那种App模式烦恼,正如上文提到,类似非死book这 样的公司就为用户提供了两种选择。然而对于大部分人来说,预算,资源限制将会逼迫我们只能选择其中一种(或者只能以其中一种为重点)。</span></p>