項(xiàng)目經(jīng)理感悟:AppCan與PhoneGap跨平臺開發(fā)框架
做過跨平臺開發(fā)的人都知道,跨平臺開發(fā)主要是通過一次開發(fā),將應(yīng)用進(jìn)行多次打包,可以同時生成多個平臺的應(yīng)用開發(fā)模式。目前有很多跨平臺開發(fā)框架供開發(fā)者選擇。但是在選擇跨平臺開發(fā)框架時就需要從長遠(yuǎn)考慮,尤其是在跨平臺開發(fā)過程中的各種體驗(yàn),以及框架本身的基礎(chǔ)性能。
作為一名從事多年Hybrid應(yīng)用開發(fā)以及跨平臺移動應(yīng)用開發(fā)多年的項(xiàng)目負(fù)責(zé)人,在這里,我與大家分享一下我對Phonegap和AppCan前端開發(fā)框架這兩大跨平臺開發(fā)框架的心得。
不同的開發(fā)體驗(yàn)
從開發(fā)體驗(yàn)上講,我認(rèn)為AppCan和PhoneGap從設(shè)計(jì)時的目標(biāo)用戶群體是不同的。我不是 PhoneGap的設(shè)計(jì)者,只能從其開發(fā)模式進(jìn)行推測。我感覺PhoneGap的目標(biāo)用戶群是希望能夠通過跨平臺開發(fā)方式降低開發(fā)成本原生開發(fā)者。在項(xiàng)目 開發(fā)中,PhoneGap是以原生開發(fā)人員為主,開發(fā)人員安裝原生開發(fā)環(huán)境,配置工程,引入HTML、CSS、JS文件,編譯生成應(yīng)用。
AppCan的開發(fā)團(tuán)隊(duì)來自于原來的手機(jī)設(shè)計(jì)團(tuán)隊(duì),設(shè)計(jì)思想來源于2005~2008年間非智能終端MMI(人 機(jī)界面)開發(fā)方案。那個時代的手機(jī)設(shè)計(jì)團(tuán)隊(duì)承接眾多廠商的定制終端需求,每家公司的手機(jī)終端當(dāng)時還沒有現(xiàn)在這樣有相對統(tǒng)一的平臺,相對統(tǒng)一的MMI體系。 各家公司對UI的需求都會有很大不同。這就造成了定制終端開發(fā)成本的大頭在MMI的實(shí)現(xiàn)。當(dāng)時團(tuán)隊(duì)采用了自有瀏覽器引擎實(shí)現(xiàn)MMI開發(fā)框架,極大地降低了 開發(fā)成本。
2010年初,AppCan剛剛火起來的時候就認(rèn)為在智能終端開發(fā)領(lǐng)域,標(biāo)準(zhǔn)的HTML技術(shù)依然是最合適的跨平 臺開發(fā)方案。當(dāng)時定位AppCan技術(shù)方案時,目標(biāo)就是使無原生開發(fā)經(jīng)驗(yàn)的HTML開發(fā)人員完成移動應(yīng)用的開發(fā)。隨著多個版本的推出,目前AppCan已 經(jīng)實(shí)現(xiàn)了以網(wǎng)頁開發(fā)人員為主,原生開發(fā)人員為輔的混合開發(fā)模式。
通過減少原生開發(fā)人員在應(yīng)用邏輯、數(shù)據(jù)對接等方面的工作,使其只關(guān)注于某個功能控件的開發(fā),降低項(xiàng)目原生人員開 發(fā)工作比率,減少項(xiàng)目開發(fā)成本。由于網(wǎng)頁開發(fā)界面間耦合性小,更利于團(tuán)隊(duì)開發(fā),并且開發(fā)人員不需要專用的蘋果開發(fā)機(jī)和安裝Andorid開發(fā)平臺,有效地 減低了開發(fā)成本。AppCan為了更好的組織網(wǎng)頁開發(fā)人員、原生開發(fā)人員、項(xiàng)目管理人員、UI人員,為網(wǎng)頁開發(fā)人員提供了專用的IDE開發(fā)環(huán)境、模擬器調(diào) 試環(huán)境和本地打包環(huán)境,可以在無原生人員參與下完成應(yīng)用的大部分功能調(diào)試和開發(fā)。
為原生開發(fā)人員提供了插件開發(fā)SDK,專為開發(fā)原生功能控件,并可直接編譯網(wǎng)頁開發(fā)人員的工程代碼,生成目標(biāo)版 本,它等同于PhoneGap的開發(fā)環(huán)境。為項(xiàng)目管理人員、UI人員、網(wǎng)頁原生開發(fā)人員提供了云端代碼管理、項(xiàng)目管理、應(yīng)用資源管理、插件管理、引擎管理 服務(wù),用于快速發(fā)布正式版本。目前AppCan.cn網(wǎng)站是為個人開發(fā)者提供的免費(fèi)代碼、項(xiàng)目管理平臺。為企業(yè)開發(fā)用戶有專用的企業(yè)云SDK開發(fā)環(huán)境。
不同的前端框架
從HTML,CSS,JS技術(shù)組成的前端框架上來講,PhoneGap與AppCan也有很大區(qū)別。由于PhoneGap更多的是一種All In One Page的設(shè)計(jì)方案,因此開發(fā)者需要將應(yīng)用功能整合在一個網(wǎng)頁內(nèi)部或通過異步加載方式加載到頁面的方式實(shí)現(xiàn)用戶操作流。在這種方式下不例外的都需要一個龐大的JS框架來幫助管理頁面內(nèi)內(nèi)容的變化。例如JQuery Mobile、Sencha Touch方案。
AppCan則是參考原生開發(fā)模式,認(rèn)為頁面間是獨(dú)立的,每個頁面需要完成其主要功能,通過引擎的頁面管理,把這些獨(dú)立的頁面串聯(lián)起來就是一個應(yīng)用。每個頁面有其自身的生存期和上下文。這樣可以組織更多的開發(fā)人員到一個項(xiàng)目中,且可以很少關(guān)心界面間的耦合性。
也就是說PhoneGap常使用JS框架進(jìn)行窗口管理,AppCan采用引擎中的窗口管理器管理窗口。由于窗口 管理機(jī)制的不同,AppCan可以在窗口切換、窗口間數(shù)據(jù)交互中更多的引入原生開發(fā),來提高應(yīng)用的感受性。AppCan的窗口管理器和窗口生存邏輯參考了 Android的Activity,在很多地方可以找到其相似性。與UI開發(fā)框架有直接關(guān)系的還有分辨率適配方案。
不同分辨率的移動終端,瀏覽器為了展示網(wǎng)頁時的適配,默認(rèn)都會設(shè)定窗口縮放比率。假設(shè)480分辨率寬度的終端, 網(wǎng)頁中看到的依然是320寬度,縮放比率為1.5。這樣網(wǎng)頁適配320寬度的分辨率就可在大部分移動終端中正常顯示。這雖然減小了適配問題,但是造成的后 果卻是,寬度為1的線在屏幕上顯示時,實(shí)際并不是一個點(diǎn),由此移動項(xiàng)目中無法充分發(fā)揮手機(jī)屏幕硬件的能力,應(yīng)用界面無法和原生應(yīng)用媲美。但如果調(diào)整了默認(rèn) 比率參數(shù),使其直接采用屏幕硬件分辨率或者更小的縮放比率,都會造成不同分辨率下的界面適配問題。
AppCan 提供了整套的UI開發(fā)框架,應(yīng)用引擎自動調(diào)整瀏覽器默認(rèn)縮放比率,使其接近或等于屏幕硬件分辨率,采用彈性盒子框架,自動適配各種屏幕分辨率。采用相對大 小方案,使應(yīng)用在不同分辨率、不同屏幕精度,依然使界面保持最符合人體感受的大小和操作體驗(yàn)。通過這種方式,可以幫助開發(fā)者更有效的融合原生控件和網(wǎng)頁界 面,使其保持完美的布局。在適配新分辨率終端時,AppCan可以保證最小的網(wǎng)頁代碼修改。
作為一名跨平臺開發(fā)團(tuán)隊(duì)的負(fù)責(zé)人,我認(rèn)為團(tuán)隊(duì)在選擇跨平臺開發(fā)框架的時候還是需要選擇一套適合自身團(tuán)隊(duì)的框架。尤其是對于技術(shù)力量薄弱以及初創(chuàng)型團(tuán)隊(duì)來說選擇一套適合的框架更加重要。