如何做一個有高性能混合開發iOS/Android應用?

想做一個高性能的H5 iOS應用,應該用哪一款的混合開發框架最好?

現在市場上存在的幾種開發方式如下:

a.web網頁加殼生成APP

web網頁加殼生成APP的開發方式,先花幾百塊錢買個現成的手機網站模板,在加殼打包一個APP只需要5分鐘,但是做出來的效果很差,耗流量,瀏覽體驗極差,訪問速度慢等等。部分開發商利用客戶不懂,把這種5分鐘速成的東西,當成原生態開發的APP去欺騙創業者。賣幾千到幾萬的價格。而創業者很多時候還自以為撿了便宜(問了十幾家這家最便宜)。

b.Web網頁+原生態混編(網頁部分佔80%以上)

混編方式的APP效果比第一種稍好。但是如果要做出接近原生態的效果,需要不斷的優化和改版,花的錢不比原生態少。而如果不對網頁和系統優化,只是簡單的拼湊。那麼做出來的效果和web加殼的差不多.

c.HTML5開發

成本大概是原生態APP的50%到30%,也是比較接近原生開發能達到效果的一種方式。但受到很多限制。各大平台兼容性還不足,相對來說還處於過渡期,同時比較耗系統資源。在低配的手機上更卡。手機淘寶的APP目前就是HTML5+原生態混編的,相對來說在很多低配的手機上還是比較卡的。最近優化了很多,但是早期的表現很不盡人意。Facebook和京東都嘗試過HTML5,同時也吃了不成熟的虧。HTML5的未來或許是美好的,但是這期間的試錯成本小公司不一定承受得起。

d.原生態開發

是目前最常用和最成熟的方式。越重視細節成本越高。一般根據具體功能要求一個APP的開發成本從幾千塊到幾千萬不等。

根據實際情況,想做一個高性能的H5 iOS應用,那麼問題來了~應該用哪一款的混合開發框架最好?好用且後期維護也方便


謝邀,其實問題的補充已經回答的挺好了。

先回答主問題吧。混合開發的模式,從HTML代碼佔比來看現在主要有這麼幾類,名字都是我自己啟的,不用在意:

1. Web App: 將Native APP僅僅作為一個瀏覽器使用,裡面跑在線或者離線的HTML代碼,H5代碼佔比超過90%。

這個方案的主要工作量在於寫一個兼容性好的H5頁面,包括解析度、性能、瀏覽器支持等問題。如果對於分別多平台(不光iOS、Android,可能還有移動網頁版和微信公眾平台)做Native應用來說,肯定總成本是低的。

選擇這個方案的好處是如果能一套H5代碼搞定多平台的話相當省時省力。如果H5代碼寫的好的話,其實在主流機型上的適配和體驗也都過得去。

這個方案的缺點也很明顯,在低配機上性能很差,如果H5代碼寫的不好,兼容性問題一堆,功能、安全性也受到很大的限制。

但隨著Native APP開發的成本逐年提高,預算有限情況下,選擇這種方式做開發的公司也是有的。當然,還有種情況是本來公司做APP只是為了交差,成本越低越好,這和十年前每個單位基本都必須有一個網站,結果誕生了無數奇葩網站的情況一樣。

2. Hybrid APP:應用中包含了Native代碼,並且實現了部分H5體驗不好、或者難以實現的邏輯(比如定位、埋點、本地持久存儲、體感等)。有些情況下,程序的底層框架、核心邏輯、界面框架也會用Native來完成,H5隻用來實現業務邏輯,H5代碼佔比在40%~80%左右。

製作這樣的APP,一般會用到一個Hybrid框架來做bridge,同時也不用自己去做JSApi。市面上的框架實在太多,主流的幾個上面也提到了,wex5、bootstrap和cordova等。我也不想花時間去比較各自的好壞,因為這類文章網上已經很多了,而且框架變化太快,值得注意的是在選擇開源庫的時候,要選一個社區活躍、更新比較及時比較好。剩下的需要Native實現的業務邏輯、tab+navigation界面等,自己稍微做一下就行了。

這個方案的好處是比較兼顧開發成本、跨平台和體驗。如果業務的H5代碼使用在線地址的話,其實就可以做到很大程度的內容動態化。再深入一點的話,在本地緩存一下JS和Resource,甚至做一個差量更新系統,其實流量也不會太厲害。

這個方案的局限性還是在於用戶體驗和性能,在低端機型上,H5的性能不是一個好的框架可以彌補的。同時,開發時間來說,這樣的方式比起全Native優勢不大,主要的好處在於做到最簡單的動態化而非成本。

大量的傳統行業+外包開發的APP採用的是這樣的模式,比如人人都會用到的手機銀行。這樣的模式比較適合業務比較穩定、同時容易抽象的系統,對於乙方來說,比較能夠復用已有的技術方案,對於甲方來說,對體驗、交互創新沒太多需求,業務結構穩定,但單個業務變化很快,使用這樣的方式,其實是很適合的。

3. 當H5代碼佔比繼續下降,達到20%~40%左右,APP中有些業務也開始使用Native的時候,就是第三類混編應用了。

這類實現方式,和上一類的區別在於,它針對不同的業務場景使用了不同的技術方案。如果是業務複雜、用戶使用頻繁、體驗要求高的業務模塊,就使用Native開發;如果是用戶較少,體驗要求不高,但變化頻繁的業務模塊,使用H5進行開發。

這種編碼方式其實能玩出很多花活,比如資源足夠情況下可以對某些模塊即做Native也做H5版本,通過服務端下發Router指定打開哪一個,這樣一方面可以做A/B testing,另一方面也可以在Native代碼出錯時做failback。

至於劣勢么,主要在於整個APP的複雜性,和對於多類型業務模塊的兼容、信息傳遞等。開發成本在這個時候,甚至已經大於純Native應用了。

業內很多大型APP使用的都是這種方式,比如Ctrip,Alipay等。

4. 第四類應用理論上講已經不太能歸類到Hybrid開發的範疇了。這類應用使用了頁面動態化框架,可以讓Native通過執行動態化的腳本(可以本地也可以下發),但渲染出Native的界面和邏輯。最出名的框架就是Facebook的React Native了,當然,每個大廠都會有自己造的輪子,比如阿里系的Weex,但影響力比起RN都小了一點...

這類技術方案是現在移動客戶端的技術熱點之一,很多高級工程師和專家級別的從業人士都花了大量的時間使用、改進、設計這樣的方案來兼顧性能、開發成本和動態化,從今天看來,還沒有一個很完美的解決方案。

使用(或者說試水)這樣方式做開發的廠商已經很多很多了,這裡就不舉例了。


性能的部分用 native,信息的部分嵌 web view 唄。


題主說到了 H5,

樓上不少提到了 RN,

我個人建議試試: alibaba/weex


「高性能」跟「混合開發」在現階段是互斥的


目前國內主要的混合開發框架有wex5,appcan,apicloud,HBuilder,國外有cordova,boostrap,國外的東西好是好,但是除非有你紮實的基本功加卓越的編寫能力,要不然勸你不要嘗試,還是用國內的比較適合我們,簡單的說一下國內的這幾款開發工具,我只是說下個人使用感受。。。不喜歡的請自行屏蔽就可以了。

WeX5是起步推出的,起步是一家做開發開發平台十幾年的公司,一直不溫不火的做著,wex5的市場份額不是太大,不過現在版本更新很快,裡邊自帶的domo有外賣,電商、旅遊什麼的,如果你想做類似的APP,那麼恭喜你,可以省事了,wex5是在bootstrap和cordova的基礎上做的優化,與很多東西都是無縫對接的,後期比較省心,可以說是國內開發工具中前景較好的一隻了。

appcan是做開發工具比較早的一家,不過即使早也沒有佔到太多的市場份額,反而目前呈下滑趨勢,因為我們作為開發者去看appcan的很多東西只能用一個 亂 字形容,目前appcan主要也走收費路線了,免費版的支持很差,收費版咱沒用過,不做評論。

apicloud的設計風格我很喜歡,簡單的綠色,第一印象很賞心悅目,他很多東西都是融合的,有的很好用,不過還是有很多不夠成熟的對Android的生命周期支持非常不到位,常見的onPause,onResume都無法實現;onCreate也沒有使用,很多東西都是二手的,抄襲無疑是apicloud讓開發者最反感的一點,去年, APICloud因抄襲、反編譯DCloud產品代碼被DCloud起訴侵權。

HBuilder的前身是編輯器,但是作為框架的話只有180MB。。。好在我對他的期望不是太大,所以失望也沒有太大。

國內開發工具其實都沒有太成氣候的,基本都在摸索的過程中,不斷完善,html5本身也在不斷完善,所以無論用WeX5還HBuilder,還是別的,請帶著包容心去用吧,畢竟是免費的,畢竟是國內開發團隊努力的結晶,支持國產!


現在不是有React Native了嗎?好像iOS和Android共用js代碼可以達到70%以上,性能也算不錯,就是內存佔用比較大,我現在已經在研究了。


react native

實測,公共代碼處理的好,可以達到80以上,性能高的地方,可以用原生寫好,js直接調用就好。

已經做了幾個項目了。


他山跨平台混合應用開發框架(OHUI),是使用Gecko(v1.9~v52)嵌入,實現跨平台混合應用開發的框架。支持xp/2003/win7 x32,x64/win8+...,Linux,Android系統,支持xul, html(5), css(3), js,c/c++/java混合編程開發界面。OHUI v22.0發行包大小13MB(Linux下21MB).


React Native 是目前最能滿足題主需求的技術選型


推薦一下前端框架Amaze UI,沒有以上各位說得三種產品那麼複雜,一個簡單的前端類庫,用得人很多,可以嘗試下。


如果追求性能那還是要用Native開發,H5心裡高性能上差距挺大


你是要做什麼類型的app


推薦閱讀:

BiliBili客戶端中瀑布流的圖片是怎麼做到寬度固定,根據圖片比例來設置長度呢?
Android應用開發大神用過這個網站嗎?該怎樣學習和使用?
Android 開發中有什麼經典的輪子值得自己去實現一遍?
做用戶界面設計,1920*1080 解析度智能電視的 SafeZone 應該是多大?
安卓手機上有哪些應用可以開發軟體?

TAG:iOS開發 | Android開發 | iOS工程師 | html5開發app | ReactNative |