平臺開發的說法由來已久,但卻從未像今天這樣被各大廠商所重視。Google、Facebook、英特爾、微軟相繼推出重大舉措,支持和推動App開發商開發兼容Android、iOS、Windows Phone等平臺的應用。而面對語言眾多、平臺眾多、終端適配和開發成本高昂等問題時,App開發商自身也迫切希望能具備跨平臺開發的能力,以期達到降低開發成本、縮短開發周期、增多商業收益的目的。跨平臺開發時代已經來臨,你做好準備了嗎?
流行的跨平臺開發工具
在過去的一年,業內涌現出了一大批優秀的跨平臺開發工具,大致上主要分為三類:Web應用、Native應用、混合應用。
自適應網頁設計(也稱“響應式網頁設計”,如圖1所示),是一種時下比較流行的網頁設計技術,也算是一種在線Web應用。該設計使得網頁可根據訪問設備的特點以不同的風格樣式進行展現。也就是說,可以讓一個網站在手機上打開后,展現得像個本地應用一樣,只要用戶在手機瀏覽器上輸入網址就可以使用該“應用”的功能。這節省了開發App的成本,也不必為了在各個應用商店上更新發布App而煩惱——只要網站更新了,用戶的“App”就會隨之更新。時下比較流行的此類框架有:Bootstrap、Pure、Foundation、Ink、Skeleton、ChocolateChip-UI等。
PhoneGap是一個推出時間相對較早的開源免費的跨平臺移動App開發框架,一直以來都受到大量開發者的喜愛,從iOS、Android、Windows Phone到Amazon、Firefox OS等各大小主流移動平臺一應俱全,而且也能使用地理位置、加速器、聯系人等智能手機常見的核心功能。PhoneGap框架主要使用的還是基本的Web開發技術(HTML、JavaScript、CSS),所以它在各平臺上具有優越的兼容性,熟悉網頁開發的開發者能低成本地快速開發跨平臺應用。應用的性能在經過分別優化后也大多可以接受。
Hybrid(混合)模式應用開發,其實質上就是一種中間件機制的應用程序框架,有人形容它是“Native搭臺,HTML5唱戲”,近來受到了大量開發團隊的追捧,成為一種主流開發模式。Titanium、AppCan、ionicFramework等都是其中的佼佼者,尤其AppCan作為國產貨,因為有較強的本地化文檔和技術支持,被大量國內開發者關注。Web前端開發工程師幾乎可以零成本介入,快速做出漂亮的UI并滿足大部分跨平臺需求。無論是在什么系統下,混合應用可以實現幾乎完全相同的交互體驗。
Xamarin,雖然我們可以通過組織多個團隊或雇用全棧程序員的方式,針對各個平臺使用原生語言和開發工具分別開發出同一應用的Native版本,實現跨平臺,但這個做法顯然成本過高,而且應用程序生命周期也很難控制。Xamarin則可以通過一種編程語言搞定所有平臺的Native App開發,這個語言就是C#。時下依然有很多人把C#語言跟.NET做等同認知,認為C#只能編寫.NET應用程序,而且只能在微軟的平臺上跑,這是一種非常錯誤的觀點。C#是一種優秀的計算機編程語言,支持.NET、Mono,但也可以編寫非托管應用,甚至是操作系統。Xamarin是開源項目Mono的商業化運作公司,它的跨平臺開發工具名也叫Xamarin。Xamarin可以使用C#調用各個平臺系統的原生UI和底層API,可以極高程度地保證應用性能和UI流暢性。用Xamarin開發跨平臺應用程序,可以方便地使用C#語言的很多先進特性和第三方類庫,例如LINQ、Lambdas、XDocument、事件與委托、并行運算、JSON.NET等。在商業版訂閱下,還可使用Visual Studio開發,當然也可以使用TFS讓團隊協作更便捷。需要注意的是,時下最流行的游戲引擎Unity也是主要用C#開發的。
LiveCode是一種相對比較特殊的跨平臺開發工具,它使用了近乎人類語言的方式開發應用程序,使得開發簡單應用時的效率大幅增加,而且相當親民。其客戶也不乏類似大型航空公司等極重量級的企業。
跨平臺開發工具的對比
Web應用可以完全由Web前端工程師開發,只要智能設備連上網絡并安裝了合適的瀏覽器就可以通過URL訪問“應用”,而Web工程師只要更新服務器上的文件,就可以實現對此“應用”的更新,無論時間成本還是維護成本都非常低廉。但恰恰是Web應用的優點導致了它的如下缺點。
1. Web應用必須連線訪問,在網絡條件不好的情況下啟動速度會極慢。而且每次啟動都會因為網絡訪問和UI資源(比如圖片)的下載,造成用戶手機流量的浪費,這在2G網絡條件下就會尤其明顯。優化不好的話,還可能造成用戶手機欠費停機。
2. 各平臺下的瀏覽器多種多樣,頁面渲染效果和JavaScrip的運行效率有較大差異,要想保證UI一致性,需要做大量CSS Hack和JavaScript代碼優化工作,但很多情況下你的優化不一定起到正面作用。
幾乎無法使用設備本地的API,尤其是底層API,這使得Web應用的能力十分有限。
Hybrid(混合)應用開發模式,兼顧了Web和Native。既有Web應用的低開發成本和跨平臺相同UI交互的優點,又可以通過JavaScript訪問常見的Native API,還可以利用HTML5的Local Storage技術在本地離線存取數據。但既然稱之為混合應用,就無法逃避混合技術的缺點。
1. Web頁面的渲染受限于CSS,雖然可以到達各種設備幾乎相同的UI交互,但喪失了平臺默認的交互習慣,與Native App形成體驗差別,增加了單平臺用戶的學習成本,降低了平臺應用認同感。
各種智能手機平臺對其內置的瀏覽器內核大多做過一些定制化“改進”,對于一些事件處理存在差異,尤其是Android系統,在全球有幾千款不同的設備,再加上操作系統版本的差別,Web App很難做到真正意義上的跨平臺。
2. 雖然是混合應用,但應用界面依然沒有脫離瀏覽器,所以混合應用依然無法達到Native App的性能和流暢性。
3. 對非穩定網絡的運行環境難以細化控制,復雜條件下用戶體驗可能極差。
4. 在內存管理方面近乎無能,常會因此造成應用崩潰。
5. 受JavaScript語言的限制,一些相對底層的功能實現難度明顯增加。
Xamarin可以通過C#這一種語言編寫主流平臺的真正Native App,其通過強大的編譯器平衡了應用開發效率和應用執行效率,尤其是對使用C#開發的程序員而言,是莫大誘惑。Google、蘋果、微軟三大巨頭與其都有深層合作關系,這使得Xamarin總能在第一時間推出新平臺的SDK。以iOS7為例,iOS7發布當天下午,Xamarin就跟進發布了iOS7 SDK的正式版,這使得App開發商幾乎可以零滯后地跟進新系統平臺的App開發。在北美市場,Xamarin開發工具已經非常火熱。當然,Xamarin目前也存在不少缺點。
1. 相對于HTML、CSS、JavaScript而言,C#的學習成本偏高,無法使無編程經驗者達到幾天入門的程度。
2. iOS的應用開發雖然可以在Windows上做,但調試過程依然無法脫離Mac系統,團隊內至少要有一臺Mac系統的機器作為Build Host。
3. 對于iOS、Android、Windows Phone系統平臺分別做UI時,尚未推出統一的可視化設計工具。不過慶幸的是,目前Xamarin內部已開發了測試版,相信不久便可以正式公開發布。
4. 對中國個人開發者而言,商業授權版本價格有些偏高,難以大規模普及推廣。
5. 中文資料偏少,尚需官方和社區共同參與完善。
跨平臺開發工具選型
前面對主流跨平臺開發方案做了一些對比,大家應該有了一些基本概念,那么,如何選擇最適合自己的跨平臺開發工具,則成為了一個不小的難題。這里我根據自己的經驗給出一些建議,供大家參考。
1. 選擇開發工具就像娶媳婦兒,不要選擇最好的,要選最合適的。
2. 如果開發團隊成員完全沒有App開發經驗,客戶應用場景也不會受到網絡影響,功能主要是數據的增刪改查,不需要平臺本地API,那么Web App是個不錯的選擇,尤其是響應式設計,客戶接受度會比較高,尤其是企業應用的客戶。
3. 如果需要使用少量平臺本地API,對應用程序也沒有較為嚴苛的性能要求,Hybrid應用絕對是最佳選擇,因為它的性價比極高。
4. 當碰到Web性能瓶頸無法逾越;希望使用完善的應用程序生命周期;希望縮減Native App開發團隊成本;希望使用一種開發語言,卻還希望使用各平臺下特有的第三方類庫時,Xamarin是個不錯的選擇。雖然看起來授權價格不低,但從總體成本來看,節省了不少。
5. 微軟在最近的Build大會上將WinJS開源了,并且承諾將會支持iOS、Android等平臺。一旦目標達成,這也是一種不錯的選擇,尤其是對苦逼的Windows Phone開發者們而言。
6. LiveCode從某種程度上來說,更應該算是一種親民的編程語言,期望讓所有人都能輕松開發一個App,但作為一種解釋性語言,是否能被專業開發者接受是個值得探討的問題。
結束語
跨平臺開發即將成為主流趨勢,作為開發商或開發者,具備跨平臺開發能力成為必需。想一想,就連過去最不愿意提及跨平臺和開源的微軟都敞開胸懷,擁抱跨平臺,并且開源和免費了,我們還有什么理由原地踏步,固步自封呢?行動起來,一起邁步進入跨平臺開發時代!
本文來自《程序員》雜志電子刊2014年05期。
大量的應用程序構建平臺可以創建和開發應用程序,而不會破壞規則或要求使用者知道如何編碼。相反地,開發者在使用中可以快速創建移動應用程序,并且可以使用教程和豐富的模板,這些模板無疑也會很棒。所謂最佳工具,對開發者而言無疑是最省時省力地,對企業而言,無疑是花錢最少,東西最好地。以下是TOP 23個最佳移動應用程序開發平臺,如果你有更棒的分享,歡迎留言。
1. Appery.io
Appery.io是一個基于云的平臺,具有可視化開發工具和集成的后端服務,已經被AT&T,ESPN和三星等企業使用,這是一個強大的和可視化的應用程序生成器工具。
Appery.io提供了許多有用的模板,并支持響應式Web應用程序開發。
2. Appcelerator
Appcelerator的移動平臺在其組件市場提供了預集成云服務和廣泛的應用程序擴展庫。
這非常適合需要利用基于Web技術進行多操作系統應用程序開發的企業。
它還包含令人印象深刻的應用使用情況見解,這意味著監視應用程序性能將變得非常簡單
3. AppInstitute
基于Nottingham的AppInstitute成立于2011年,為iOS和Android提供了一個無需編碼的應用構建平臺。
AppInstitute提供了一系列的應用程序模板和有用的拖放編輯器——更不用說CRM應用程序來監視應用程序銷售,推送通知和分析等功能了。
4. AppMachine
AppMachine是聲稱使應用程序制作變得簡單和為任何人所用的工具。它的工作原理是掃描網站并創建內容。然后,AppMachine允許迭代它所謂的“構建塊”。
這是獲得最小可行產品的一個既經濟又便宜的方法。
5. AppMakr
AppMakr將幫助開發者獲取內容或服務,并創建本機iPhone和Android應用程序以及HTML5移動網站。
這是一個無代碼的解決方案,只需要幾分鐘的時間,但要注意所有服務的使用要求。
借助AppMakr,開發者將能夠利用內置通知,完全自定義和進行實時應用程序更新。
6. AppYourself
AppYourself可以創建一個約50歐元的Android應用程序。
用戶可以通過與Open Table和Resmio的合作獲益,電子商務功能相對比較簡單。AppYourself界面非常易于使用。
它確實為構建應用程序提供了一個流暢且可訪問的平臺。
7. Appy Pie
Appy Pie允許編輯應用程序,并發布在幾乎每個可用的平臺。
開發者能夠創建適用于Windows手機,黑莓和Fire OS(Kindle)以及Android和iOS的應用程序,這是非常令人印象深刻的。雖然,需要支付一定費用,每個月花費50美元。
如果想制作僅限Android應用程序,則每個月有15美元的基本費用。
8. Bizness Apps
作為面向小型企業的應用程序制造商,Bizness Apps提供了一種簡單方法匯總來自網站和社交媒體的現有內容。
開發者可以實時查看更改,絕對不需要任何編程專業知識。這對現在只需要一個應用程序的中小型企業來說是有用的,對于那些以應用程序為中心的人來說,它們的用處不大。
9. Como
Como用戶可以選擇模板和導航風格,甚至添加自己的個性化內容,可用于創建的主要應用程序以日歷,音樂播放器,點餐等為中心,具備一些例如可添加會員卡方案的功能。
10. GameSalad
GameSalad是一個有區別的應用程序制作工具,Gamesalad聲稱,開發者可以在一個小時內建立一個游戲。
GameSalad支持所有主流操作系統,包括Amazon和Windows。
11. Good Barber
Good Barber是通過簡單的四步來建立漂亮的應用程序。與大多數簡單的應用程序制造商不同,它將設計放在前面,讓開發者稍后添加內容。
這就是說,它的內容管理功能是非常可觀的。同時,Good Barber制作應用程序很簡單。
12. iBuildApp
借助簡單的拖放編輯器,內置的CMS和超過1,000個應用程序模板,iBuildApp在創建設計良好的應用程序方面看起來就像是全能的,開發者只需掌握很少的編碼知識。
使用iBuildApp,開發者可以選擇所工作的部門并篩選相關模板。根據iBuildApp的統計,全球超過15,000家企業正在使用它,積累了超過200萬的用戶。
13. jQuery Mobile
作為非盈利軟件自由保護協會jQuery開源項目的一部分,jQuery Mobile非常適合那些需要開源移動web框架的企業,這些框架將允許開發者利用現有的jQuery技能。
該框架提供了使用HTML,JavaScript和CSS為一系列智能手機構建交互式移動Web應用的能力,并且可以與PhoneGap一起使用來構建混合移動應用程序。
它沒有其他人列出的圓滑感,但它不應該被忽視。
14. Kalipso
Kalipso為Windows,Android和Microsoft操作系統提供移動應用程序開發,重點關注流程,而不是代碼。
主要功能包括拖放編輯器,免費運行時,內置GPS,數據庫同步,多語言和技術支持。
Kalipso還提供了很多可愛的主題供開發者選擇。
15. Kony
Kony于2007年首次推出時,專注于面向消費者的應用程序,但隨后增加了B2E功能。
Kony平臺非常適合需要在一系列移動設備上使用原生功能的項目。該環境可用于為平板電腦,智能手機,功能手機,移動瀏覽器甚至桌面瀏覽器構建應用程序,然后部署到所有設備。
16. LiveBlox
Apulus公司的LiveBlox允許用戶通過“Blox”開發無需編碼的應用,這些代碼塊可以鏈接在一起以創建一個有意義的應用程序。
主要功能包括:拖放編輯器,GUI構建器,視頻,導出應用程序,3D引擎和插件系統。
17. Mobile Roadie
Mobile Roadie已經相當有名氣了。它與眾不同之處在于漂亮的設計模板數量和可用的附加功能。
Mobile Roadie擁有粉絲墻,聊天,音樂播放和定位功能,但是所有這些功能都是有代價的。
18. NativeScript
作為被Gartner在2017年魔力象限中任命為移動應用程序開發的領導者,開源框架NativeScript是一個相當強勁的競爭者。
用戶可以使用JavaScript,Agular和TypeScript創建原生應用程序,并且可以輕松地重復使用代碼,為開發者節省大量時間。NativeScript從一個代碼庫創建iOS和Android應用程序,并提供許多有用的指導來幫助縮短學習曲線。
19. Outsystems
Outsystems是一個低代碼應用程序平臺,旨在創建,部署和管理定制應用程序。
所有應用程序都是安全集成的,所以對于那些希望構建可能包含敏感信息的應用程序來說是一個很好的選擇。
20. TheAppBuilder
TheAppBuilder是一個針對企業的移動開發工具。憑借包括Heathrow Airport在內的令人印象深刻的客戶名單,TheAppBuilder已經成為應用程序和面向外部的軟件構建模式的重要平臺。
21. Viziapps
Viziapps是一個易于使用的平臺,用于創建商業應用程序。用戶可以使用簡單的拖放編輯器來設計,測試和發布應用程序,因此非常適合缺乏編碼技能的用戶。
Viziapps還提供了大量的第三方插件和ViziApps Studio,使用戶可以在自己的移動設備上看到他們的應用程序。
22. Verivo Software
Verivo軟件專注于輕量級本地客戶端應用程序,使其成為企業需要以有限的開發資源支持各種設備類型和平臺的強有力的選擇。
為了幫助跨平臺提供一致的原生用戶體驗,Verivo提供了可跨平臺共享的視覺/功能元素
23. Xamarin from Microsoft
2016年2月,微軟收購了移動應用開發平臺Xamarin。
開發人員可以使用C#輕松創建應用程序,為iOS,Android和Windows生成原生應用程序。 更重要的是,Xamarin提供了一個交互式儀表盤,提供有關活躍用戶,會話和其他有用指標的實時數據。
據說這次收購增加了微軟在開放平臺上的軟件創新動力。
者 | 陳峻
審校 | 孫淑娟
眾所周知,根據使用場景的不同,我們往往需要針對智能手機、平板電腦以及可穿戴設備等不同平臺,開發相應的應用。如果為每一類應用都去編寫獨特的程序代碼的話,不但耗時,而且無法實現代碼的重用。因此,我們需要引入混合應用開發的機制。
通常,我們可以使用各種現成的框架,去編寫一個混合應用,然后將其存儲在原生的容器中,以實現在不同的平臺上,部署此類原生應用。可見,合適的平臺框架,能夠給混合應用的開發,帶來事半功倍的效果。下面,我將向你介紹目前6種最為實用的開發框架。
作為一個JavaScript框架,React Native可以被用于開發跨平臺的移動應用。由于該框架帶有一種可用于開發用戶界面的獨特語言—JSX,因此用戶可通過React編寫出HTML和CSS。同時,它的用戶界面組件也被設計成為能夠給最終用戶帶來快速且愉快的體驗形式。
與其他大多數需要重新編譯代碼、或重新啟動應用,才能見效的開發框架不同,React Native的誘人之處在于,它能夠快速展示應用被更改的效果。
由于React Native在每個平臺上都會使用JavaScript引擎,因此你可以去訪問由庫和開源工具所組成的龐大生態系統。同時,它也允許用戶無縫地將部分應用代碼移植到另一個平臺上。
對于某些具有動態、復雜或高級設計的接口來說,React Native可能并非完美的框架。由于可供你使用的自定義模型數量比較有限,因此你往往需要針對應用中重要的復雜性部分,從頭開始開發與構建。初學者則需要花費一段時間,去掌握該框架的全面功能。
總的說來,React Native不但縮短了開發時間,而且能夠與第三方應用相兼容,值得大家學習。
曾為NHS(英國國家醫療服務體系)和西南航空等組織提供數百萬強大應用的Ionic,是業界領先的混合應用工具包。它允許用戶使用單一的代碼庫,為多個平臺開發出混合移動應用。
Ionic擁有一套為移動優化了的HTML庫、CSS背景模式以及JavaScript組件。這些基本工具都能夠幫助用戶構建出用戶友好的、交互式的多平臺應用。
Ionic的另一個優勢是,它包含了一套針對攝像頭、GPS以及健康套件的額外功能,以便你增加自己的應用功能集。同時,你也可以在編寫代碼時,通過測試每個組件,以盡早地發現各種錯誤與缺陷。
由于Ionic包含了一組高效的響應式部件,因此它在保證了靈活的用戶體驗的同時,也節省了你在開發過程中花費的寶貴時間和精力。
不過,Ionic最大的局限在于,其開發出的應用程序嚴重依賴于原生的插件。雖然此類插件旨在達到與原生應用相當的性能,但是并非所有實例都可以用到它們。也就是說,你可能很難為自己正在開發的應用找到其合適的插件。
作為相對較新的原生編譯框架,Xamarin可以被用來開發出那些需要保持原有的外觀和用戶體驗的高性能應用。2016年,微軟收購了Xamarin項目社區,并使之成為微軟生態系統中,用于開發應用程序的流行工具。
由于Xamarin能夠使用C語言,以及基于.NET層面的其他原生庫,來開發應用程序,因此它可以在不犧牲性能的情況下,將帶有原生庫的高端應用,部署到不同平臺的程序中。這與其他流行的混合框架相比,顯然提供了更好的用戶體驗。
不過,與原生應用相比,Xamarin在性能上存在著一定的局限性。因此,它不一定是某些復雜應用的最佳選擇。同時,由于該框架中也不提供熱重載的相關功能,因此其某些功能可能無法在特定的平臺上被實時更新。
總的說來,作為混合開發需求的一項不錯的選擇,Xamarin具有強大的支持、全面的資源,并能夠讓你的應用具有接近原生的性能。
根據Google的定義,Flutter通過一個直觀的UI工具箱(其中包括插件庫和創新的用戶界面),讓用戶控制應用的組件,進而實現類似原生的性能。例如,Flutter的App Builder就能夠讓你混合和匹配各種功能。而使用其hotloader特性,你可以在調試代碼時,即時進行更改,進而簡化了整個開發過程。此外,由于Flutter能夠支持開發出不限于Android或iOS的應用,因此它已得到了廣泛的使用。
對于初學者來說,由于Flutter使用的是Dart,這種并非針對應用開發的流行語言,因此其學習曲線較為陡峭。而且,雖然由其提供的內置小部件(widgets)對于應用而言非常重要,但是一旦缺少了第三方庫,就意味著開發者需要額外地用自己的代碼去實現。
總的說來,Flutter仍然是不錯的選擇。它不但能夠通過一流的UI元素來提供字體選項,而且可以通過各種小部件,來改善應用的整體性能與用戶體驗。
作為一個開源的框架,NativeScript可以讓用戶使用JavaScript和CSS等Web技能來構建應用程序。而憑借著出色的特性和整體性能,NativeScript能夠與最新的移動版本、資源庫以及命令行界面相兼容。
該架構的一項實用特性是它可以實時地更新應用,而無需手動刷新。當然,與大多數其他混合應用框架不同,NativeScript并不使用Web技術。
總的說來,該框架不僅功能豐富,便于使用,而且性價比高,能夠給開發人員帶來流暢的使用體驗。
Cordova使用CSS3、JavaScript以及HTML5,來創建跨平臺的應用。通過擴展其HTML5和CSS3特性,該框架增加了諸如:加速器、指南針、麥克風以及文件系統等額外功能,從而能夠與目標設備協同工作。
同時,憑借著此類額外功能,開發者既可以快速、靈活地構建原生應用,又能夠訪問第三方的插件和工具箱。
雖然Cordova自身已包含了大量的平臺插件與功能,但是就算你沒找到合適的插件,也可以輕松地編寫出自己的插件,并通過JavaScript代碼的形式連接到系統級的代碼中,以確保提供原生的性能。
與Ionic類似,該框架也包含了近似原生的小部件、選項卡以及可重排的列表等特性。同時,由于Apache Cordova能夠提供兩種工作流方法以及一種跨平臺的工作流方法(即:CLI),因此由其開發的應用程序可以在不同的移動操作系統上運行。
此外,CLI還提供一個獨特的接口以協助開發者將插件植入應用之中。也就是說,以平臺為中心的工作流,可以幫助你先構建單個平臺應用,然后再將其修改為并不復雜的形式。
綜上所述,不同的混合框架有著適合不同應用場景的獨特賣點。例如,NativeScript的主要吸引力在于,你不需要事先了解應用會運行在iOS還是Android平臺上。你更應該仔細考慮的是,待開發應用的并發性、兼容性以及成本等因素,并據此來選擇適合的框架。
原文鏈接:https://www.makeuseof.com/hybrid-app-development-best-frameworks/
陳峻 (Julian Chen),51CTO社區編輯,具有十多年的IT項目實施經驗,善于對內外部資源與風險實施管控,專注傳播網絡與信息安全知識與經驗。
來源: 51CTO技術棧
*請認真填寫需求信息,我們會在24小時內與您取得聯系。