1前言
隨著移動互聯(lián)網(wǎng)技術(shù)的發(fā)展以及移動設(shè)備計算能力的提升和普及,移動互聯(lián)網(wǎng)應(yīng)用在人們生活中越來越不可或缺,人們使用移動APP查找需要的各種信息,如:新聞,購物,視頻、娛樂以及工作事項等已成為現(xiàn)代社會的生活常態(tài)。移動應(yīng)用市場的多樣性要求開發(fā)者們及時獲取用戶需求,快速迭代出符合用戶需求的移動應(yīng)用。原生移動APP的開發(fā)過程中,大部分開發(fā)時間用于處理不同移動平臺間的差異以及底層系統(tǒng)操作上,導(dǎo)致業(yè)務(wù)功能開發(fā)的時間不夠充分。針對這種困境,基于HTML5的Hybrid App開發(fā)模式,即混合應(yīng)用開發(fā)模式,兼具傳統(tǒng)原生開發(fā)模式良好用戶體驗(yàn)的優(yōu)勢以及Web開發(fā)模式跨平臺以及快速迭代的優(yōu)勢,得到了快速的發(fā)展并被開始被開發(fā)者廣泛用于解決移動應(yīng)用快速開發(fā)以及跨平臺的需求。
2研究現(xiàn)狀
每個移動操作系統(tǒng)都有自己的SDK,用于創(chuàng)建移動應(yīng)用。例如,對于IOS平臺來說,開發(fā)者需使用Objective-C和Swift語言創(chuàng)建應(yīng)用,而Android系統(tǒng)的應(yīng)用編程語言是Java,使用這些語言和官方SDK創(chuàng)建的應(yīng)用稱為原生應(yīng)用。但是為了實(shí)現(xiàn)跨平臺,可以通過封裝一個中間層代理原生SDK的調(diào)用,上層應(yīng)用通過中間層代理原生SDK所提供的API,這也就是“跨平臺”應(yīng)用實(shí)現(xiàn)的基本原理。
2.1HTML5 移動 Web 應(yīng)用開發(fā)
隨著HTML5和CSS3逐漸興起,基于HTML5的應(yīng)用將對移動互聯(lián)網(wǎng)領(lǐng)域起到巨大的影響。所謂的HTML5實(shí)際上是指包括HTML、CSS和JavaScript在內(nèi)的一套技術(shù)組合,這些技術(shù)強(qiáng)化了Web網(wǎng)頁的表現(xiàn)能力。目前支持HTML5的主流瀏覽器有Google Chrome、Firefox、Internet Explorer 9和10等。
2.2Hybird 移動應(yīng)用開發(fā)的類型
無論是Android、IOS,還是Windows Phone,在它們的SDK中都包含了一個非常高級的WebView組件,借助這個組件,程序員能夠使用標(biāo)準(zhǔn)的HTML5技術(shù)實(shí)現(xiàn)Hybird應(yīng)用的設(shè)計和編碼。Hybrid移動APP的混合主要包由兩部分組成,底層是基于設(shè)備本地能力的Native應(yīng)用,上層是基于瀏覽器Web應(yīng)用,Web端可以通過接口調(diào)用Native端封裝好的功能。無論是Native端還是Web端,都具有各自的UI和布局能力、數(shù)據(jù)交互能力和腳本調(diào)用能力等。Hybrid APP引擎和框架一般使用HTML5和Javascript作為編程語言,調(diào)用引擎封裝的底層設(shè)備能力如照相機(jī)、通訊錄、文件系統(tǒng)、傳感器以及地圖API等。HTML5和Javascript只是作為一種解析語言,真正調(diào)用的都是基于Native封裝的底層API,這是和Web APP的最大區(qū)別。
3Hybird APP引擎
Hybrid App引擎技術(shù)開發(fā)的移動程序通過Hybrid App引擎的打包服務(wù)可以生成Android、iOS 等不同平臺移動App,還可以生成供移動設(shè)備Web端訪問的代碼。
圖1 Hybird App通用框架
3.1Hybird引擎架構(gòu)設(shè)計
Hybird APP引擎本質(zhì)上是一個原生應(yīng)用,使用平臺相關(guān)語言編寫,針對不同的移動平臺都需要開發(fā)一個Hybird APP引擎,一般情況下如果需要同時支持Android平臺以及IOS平臺,則需要開發(fā)兩個Hybird APP引擎,分別運(yùn)行與這兩個平臺。Hybird APP引擎通過集成系統(tǒng)Webview瀏覽器內(nèi)核組件,起到一個類似于虛擬機(jī)的作用,將原生應(yīng)用和系統(tǒng)級應(yīng)用對上層應(yīng)用隔離起來,同時運(yùn)行于不同移動平臺的Hybird APP引擎對上層應(yīng)用提供原生系統(tǒng)接口調(diào)用時使用統(tǒng)一的接口調(diào)用規(guī)范,從而使得上層應(yīng)用具備基本的跨平臺能力。
3.2引擎通信機(jī)制
通訊機(jī)制是Hybird APP引擎首先應(yīng)該考慮和設(shè)計的一個關(guān)鍵的功能就是Webview和Native原生代碼層之間的相互調(diào)用,比如調(diào)用攝像頭以及本地存儲系統(tǒng)等。Native原生代碼和H5之間的通信有兩個方向,分別是Native原生代碼調(diào)用H5代碼,以及H5代碼調(diào)用Native原生代碼。
Native原生代碼調(diào)用H5是通過調(diào)用Webview對象的“l
OAdUrl”方法直接執(zhí)行Javascript代碼片段,這種調(diào)用方法類似于在瀏覽器地址欄輸入一段Javascript代碼來觸發(fā)H5端代碼的執(zhí)行,具體的調(diào)用方式如下:
webview.loadUrl("javascript:alert('hello world')");
圖2 H5橋接協(xié)議調(diào)用Android本地代碼
H5調(diào)用Native原生代碼的主要原理是通過Webview系統(tǒng)組件攔截H5代碼發(fā)起的url請求,如果被攔截到的url符合H5調(diào)用Native原生代碼的約定規(guī)范,即可實(shí)現(xiàn)H5端調(diào)用Native原生代碼,這種方法本質(zhì)上是一種通過注冊私有協(xié)議實(shí)現(xiàn)系統(tǒng)調(diào)用的方法。以下代碼通過一種名字為“jsbridge://”橋接協(xié)議,具體代碼如下:
var iframe = document.createElement('iframe');
iframe.src = 'jsbridge://class.method?[...args]';
圖3 H5橋接協(xié)議調(diào)用Android本地代碼
3.3引擎插件機(jī)制
Hybird APP應(yīng)用都是有H5端和Native原生代碼兩個部分的程序組成的。本質(zhì)上,H5端和Native原生代碼都能完成界面開發(fā)。為了充分利用二者的優(yōu)勢,應(yīng)該盡可能地將APP的UI展現(xiàn)部分使用H5來實(shí)現(xiàn),而對于JavaScript解釋性語言本身的性能缺陷,應(yīng)該使用Native語言進(jìn)行計算密集型、IO密集型以及安全保障等功能的實(shí)現(xiàn),如轉(zhuǎn)場動畫、多線程作業(yè)、IO網(wǎng)絡(luò)操作以及交易支付等場景。
一般情況下在開發(fā)引擎擴(kuò)展插件時除了需要使用Native原生代碼完成插件所需的功能之外,還需要為擴(kuò)展插件編寫對應(yīng)的JavaScript API,通過 H5 頁面中調(diào)用插件暴露的 JavaScript API觸發(fā)對應(yīng)Native原生方法的調(diào)用,原生方法計算結(jié)束之后將結(jié)果通過JSBridge返回H5端。
4Hybird應(yīng)用調(diào)試
任何應(yīng)用程序在開發(fā)過程中,應(yīng)用調(diào)試都是一個不可或缺的環(huán)節(jié),通過調(diào)試能夠幫助開發(fā)人員準(zhǔn)確的定位程序出現(xiàn)問題的位置,以方便進(jìn)行修復(fù)。而使用Hybird模式開發(fā)的APP其H5端的程序運(yùn)行在系統(tǒng)Webview組件中,無法直接對其進(jìn)行調(diào)試,于是我們引入Weinre作為調(diào)試工具。Weinre(WebInspector Remote)是一款基于 Web Inspector(Webkit)的遠(yuǎn)程調(diào)試工具,在PC上直接調(diào)試運(yùn)行在移動設(shè)備上的遠(yuǎn)程頁面,通過Weinre開發(fā)人員可以在PC上可以即時修改目標(biāo)網(wǎng)頁的HTML/CSS/JavaScript。Weinre 基于Web Inspector開發(fā),兼容WebKit核心的瀏覽器,可以在Chrome/Safari瀏覽器打開Weinre客戶端進(jìn)行調(diào)試。
5結(jié)論
隨著移動互聯(lián)網(wǎng)技術(shù)的快速發(fā)展,越來越多開發(fā)者投入到移動端應(yīng)用開發(fā)領(lǐng)域中。但是移動平臺操作系統(tǒng)的多樣性給APP開發(fā)者帶來了很多困難,開發(fā)一款移動應(yīng)用需要根據(jù)運(yùn)行平臺使用不同的開發(fā)語言,開發(fā)者需要掌握多種平臺開發(fā)的技術(shù),導(dǎo)致開發(fā)成本高和開發(fā)周期長。為了解決這些問題,兼具Native App和Web App優(yōu)勢的Hybrid App開發(fā)模式被開發(fā)者廣泛采用。Hybrid開發(fā)模式的優(yōu)點(diǎn)是顯而易見的,但是這種開發(fā)模式在計算密集型應(yīng)用場景上效率明顯低于原生應(yīng)用,所以未來混合開發(fā)模式的研究重點(diǎn)將是針對UI流暢性和轉(zhuǎn)場動畫等場景進(jìn)行Hybrid APP引擎優(yōu)化的工作。
核心關(guān)注:拓步ERP系統(tǒng)平臺是覆蓋了眾多的業(yè)務(wù)領(lǐng)域、行業(yè)應(yīng)用,蘊(yùn)涵了豐富的ERP管理思想,集成了ERP軟件業(yè)務(wù)管理理念,功能涉及供應(yīng)鏈、成本、制造、CRM、HR等眾多業(yè)務(wù)領(lǐng)域的管理,全面涵蓋了企業(yè)關(guān)注ERP管理系統(tǒng)的核心領(lǐng)域,是眾多中小企業(yè)信息化建設(shè)首選的ERP管理軟件信賴品牌。
轉(zhuǎn)載請注明出處:拓步ERP資訊網(wǎng)http://www.lukmueng.com/
本文標(biāo)題:Hybird移動應(yīng)用框架實(shí)現(xiàn)研究
本文網(wǎng)址:http://www.lukmueng.com/html/solutions/14019321067.html