一種構(gòu)建智能終端應(yīng)用程序的方法、裝置及智能終端的制作方法
【技術(shù)領(lǐng)域】
[0001]本申請涉及無線通訊終端,具體涉及一種構(gòu)建智能終端應(yīng)用程序的方法及裝置。本申請同時(shí)涉及一種智能終端。
【背景技術(shù)】
[0002]在智能終端更新應(yīng)用程序是指從服務(wù)器端下載新版本的應(yīng)用程序安裝到智能終端本地。對于應(yīng)用程序開發(fā)商而言,通常會(huì)在每周或者每個(gè)雙周發(fā)布最新版本的應(yīng)用程序。而并不是每個(gè)用戶都會(huì)及時(shí)更新自己的應(yīng)用程序,因此,應(yīng)用程序開發(fā)人員始終需要面對以下困難:
[0003]1)后臺(tái)服務(wù)要適配多個(gè)不同新舊版本的應(yīng)用程序;
[0004]2)如果某個(gè)版本的應(yīng)用程序有bug,一旦發(fā)布后將無法回滾,即使在其后又發(fā)布了新的版本,也必須等待用戶逐步升級(jí)到最新版本。
[0005]可見,在智能終端上動(dòng)態(tài)地更新應(yīng)用程序是一件非常有價(jià)值而同時(shí)在技術(shù)上又有些困難的事情。
[0006]一方面,從更新技術(shù)方面而言,動(dòng)態(tài)更新應(yīng)用程序在不同操作系統(tǒng)上的實(shí)現(xiàn)技術(shù)是不一樣的。安卓操作系統(tǒng)允許動(dòng)態(tài)更新原生的應(yīng)用程序,一般采用Plugin更新的方式,比如apkplug提供的插件托管。安卓操作系統(tǒng)更新應(yīng)用程序的過程為:應(yīng)用程序擁有Loader模塊,在啟動(dòng)或者運(yùn)行過程中與服務(wù)器保持通信,當(dāng)發(fā)現(xiàn)有新的plugin時(shí),Loader模塊用某種方式提示用戶后,更新plugin并且加載新插件,從而更新應(yīng)用程序的邏輯。但是,采用這種方式存在以下問題:
[0007]1)技術(shù)實(shí)現(xiàn)比較復(fù)雜;
[0008]2)應(yīng)用程序中需要更新的邏輯必須放到plugin中,導(dǎo)致應(yīng)用程序的完整邏輯被分割,破壞了原有代碼的可讀性和可維護(hù)性;
[0009]3)應(yīng)用程序邏輯以plugin的形式更新,即使plugin僅僅更新了一行代碼,但是必須整個(gè)plugin進(jìn)行更新,浪費(fèi)了用戶的流量,容易造成用戶的反感。
[0010]10S操作系統(tǒng)不允許更新原生的應(yīng)用程序,而將一部分應(yīng)用程序邏輯實(shí)現(xiàn)在腳本語言中,比如Lua、Javascript等,然后通過下載和加載腳本語言實(shí)現(xiàn)應(yīng)用程序邏輯的更新。10S操作系統(tǒng)更新應(yīng)用程序的過程為:應(yīng)用程序擁有Loader模塊,在啟動(dòng)或者運(yùn)行過程中與服務(wù)器保持通信,當(dāng)發(fā)現(xiàn)有新腳本時(shí),Loader模塊用某種方式提示用戶后,更新腳本并且調(diào)用新腳本,從而更新應(yīng)用程序的邏輯。但是,由于應(yīng)用程序的邏輯被硬性分割成原生部分和腳本部分,原生部分無法更新,因此采用這種方式更加破壞了應(yīng)用程序邏輯代碼的可讀性和可維護(hù)性。
[0011]另一方面,從開發(fā)語言方面而言,安卓操作系統(tǒng)下應(yīng)用程序的開發(fā)語言是JAVA語言,而10S操作系統(tǒng)下應(yīng)用程序的開發(fā)語言是Object-C,這樣開發(fā)人員就不得不維護(hù)兩套完全不同的代碼體系,造成了很多負(fù)擔(dān)。
[0012]綜上所述,當(dāng)前動(dòng)態(tài)更新智能終端應(yīng)用程序可能會(huì)存在以下問題:
[0013]1)不支持應(yīng)用程序的部分更新,因而浪費(fèi)用戶流量,造成用戶反感;
[0014]2)不同操作系統(tǒng)的應(yīng)用程序的更新方式不同,因而開發(fā)要維護(hù)多套代碼,維護(hù)成本高;
[0015]3)應(yīng)用程序的完整邏輯被分割,可能會(huì)降低了應(yīng)用程序代碼的可讀性和可維護(hù)性。
【發(fā)明內(nèi)容】
[0016]本申請?zhí)峁┮环N構(gòu)建智能終端應(yīng)用程序的方法,本申請另外提供一種智能終端。
[0017]本申請?zhí)峁┮环N構(gòu)建智能終端應(yīng)用程序的方法,在智能終端配置下列類型的文件:
[0018]應(yīng)用程序數(shù)據(jù)文件,該類型文件提供所述應(yīng)用程序的運(yùn)行方式的描述;
[0019]程序執(zhí)行文件,用于執(zhí)行所述應(yīng)用程序數(shù)據(jù)文件所描述的運(yùn)行方式,包括:讀取所述應(yīng)用程序數(shù)據(jù)文件,根據(jù)所述應(yīng)用程序數(shù)據(jù)文件,顯示圖形用戶界面,并接收用戶提供的輸入以及對用戶輸入進(jìn)行反饋;
[0020]裝載文件,提供執(zhí)行更新所述應(yīng)用程序數(shù)據(jù)文件的方法。
[0021]可選的,所述裝載文件與所述程序執(zhí)行文件均為可執(zhí)行文件。
[0022]可選的,所述應(yīng)用程序數(shù)據(jù)文件包括:
[0023]用戶界面文件,用于定義所述圖形用戶界面,所述圖形用戶界面接收用戶提供的輸入;
[0024]用戶界面事件響應(yīng)文件,用于定義所述圖形用戶界面中組件的事件處理程序;
[0025]業(yè)務(wù)邏輯文件,用于定義所述應(yīng)用程序的業(yè)務(wù)邏輯;
[0026]流程控制文件,用于定義所述應(yīng)用程序的窗口控制流程。
[0027]可選的,所述用戶界面文件是HTML5文件,所述程序執(zhí)行文件是瀏覽器。
[0028]可選的,所述窗口控制流程包括:初始窗口的啟動(dòng),所述窗口之間的流程關(guān)系,和所述用戶界面事件響應(yīng)文件與所述用戶界面文件的對應(yīng)關(guān)系。
[0029]可選的,所述程序執(zhí)行文件執(zhí)行所述應(yīng)用程序數(shù)據(jù)文件所描述的運(yùn)行方式,其步驟包括:
[0030]讀取所述應(yīng)用程序數(shù)據(jù)文件;
[0031]根據(jù)所述流程控制文件和所述用戶界面文件,顯示所述應(yīng)用程序的初始窗口 ;
[0032]接收用戶提供的輸入,根據(jù)所述用戶界面事件響應(yīng)文件和所述流程控制文件調(diào)用所述業(yè)務(wù)邏輯文件的業(yè)務(wù)邏輯,獲取對用戶輸入的反饋結(jié)果;
[0033]根據(jù)所述反饋結(jié)果,顯示對應(yīng)的圖形用戶界面。
[0034]可選的,所述裝載文件提供的執(zhí)行更新所述應(yīng)用程序數(shù)據(jù)文件的方法包括:
[0035]與服務(wù)器建立連接,獲取所述服務(wù)器端的應(yīng)用程序數(shù)據(jù)文件列表;
[0036]根據(jù)獲取的所述服務(wù)器端的應(yīng)用程序數(shù)據(jù)文件列表,判斷是否存在應(yīng)用程序數(shù)據(jù)文件更新,若是,則進(jìn)一步判斷所述應(yīng)用程序數(shù)據(jù)文件的更新類型,標(biāo)識(shí)所述應(yīng)用程序數(shù)據(jù)文件的更新類型;
[0037]根據(jù)所述更新類型,更新所述智能終端的應(yīng)用程序數(shù)據(jù)文件。
[0038]可選的,所述應(yīng)用程序數(shù)據(jù)文件列表包括:應(yīng)用程序數(shù)據(jù)文件名和版本號(hào)。
[0039]可選的,所述更新類型包括:新增,升級(jí),刪除。
[0040]可選的,所述標(biāo)識(shí)所述應(yīng)用程序數(shù)據(jù)文件的更新類型采用以下規(guī)則之一:
[0041]若所述服務(wù)器端的應(yīng)用程序數(shù)據(jù)文件在所述智能終端中不存在,則標(biāo)識(shí)所述服務(wù)器端的應(yīng)用程序數(shù)據(jù)文件的更新類型為新增;
[0042]若所述服務(wù)器端的應(yīng)用程序數(shù)據(jù)文件的版本號(hào)大于對應(yīng)的所述智能終端的應(yīng)用程序數(shù)據(jù)文件的版本號(hào),則標(biāo)識(shí)所述服務(wù)器端的應(yīng)用程序數(shù)據(jù)文件的更新類型為升級(jí);
[0043]若所述智能終端的應(yīng)用程序數(shù)據(jù)文件在所述服務(wù)器端的應(yīng)用程序數(shù)據(jù)文件列表中不存在,則標(biāo)識(shí)所述智能終端的應(yīng)用程序數(shù)據(jù)文件的更新類型為刪除。
[0044]可選的,所述根據(jù)所述更新類型,更新所述智能終端的應(yīng)用程序數(shù)據(jù)文件包括:
[0045]將所述更新類型為新增的所述應(yīng)用程序數(shù)據(jù)文件增加到所述智能終端;
[0046]將所述更新類型為升級(jí)的所述應(yīng)用程序數(shù)據(jù)文件更新到所述智能終端;
[0047]將所述更新類型為刪除的所述應(yīng)用程序數(shù)據(jù)文件從所述智能終端中刪除。
[0048]可選的,所述與服務(wù)器建立連接是指在所述智能終端應(yīng)用程序啟動(dòng)時(shí),所述應(yīng)用程序的裝載文件與服務(wù)器建立連接,或在智能終端應(yīng)用程序運(yùn)行過程中,所述應(yīng)用程序的裝載文件按預(yù)設(shè)的時(shí)間間隔或者接收用戶的指示,與服務(wù)器建立連接。
[0049]可選的,所述裝載文件提供的執(zhí)行更新所述應(yīng)用程序數(shù)據(jù)文件的方法還包括:
[0050]調(diào)用所述程序執(zhí)行文件,運(yùn)行所述應(yīng)用程序。
[0051]可選的,在判斷存在應(yīng)用程序數(shù)據(jù)文件更新之后,所述更新所述智能終端的應(yīng)用程序數(shù)據(jù)文件之前,還包括:
[0052]提示用戶更新所述應(yīng)用程序,并獲取用戶意見;
[0053]根據(jù)所述用戶意見,判斷是否更新所述應(yīng)用程序,如果用戶同意更新所述應(yīng)用程序,則停止運(yùn)行所述應(yīng)用程序,根據(jù)所述應(yīng)用程序數(shù)據(jù)文件的更新類型,更新所述智能終端的應(yīng)用程序數(shù)據(jù)文件。
[0054]相應(yīng)的,本申請還提供一種構(gòu)建智能終端應(yīng)用程序的裝置,在智能終端包括:
[0055]應(yīng)用程序數(shù)據(jù)文件提供單元,用于提供應(yīng)用程序數(shù)據(jù)文件,所述應(yīng)用程序數(shù)據(jù)文件提供所述應(yīng)用程序的運(yùn)行方式的描述;
[0056]程序執(zhí)行文件提供單元,用于提供程序執(zhí)行文件,所述程序執(zhí)行文件用于執(zhí)行所述應(yīng)用程序數(shù)據(jù)文件所描述的運(yùn)行方式,包括:讀取所述應(yīng)用程序數(shù)據(jù)提供單元提供的所述應(yīng)用程序的運(yùn)行方式的描述,根據(jù)所述描述,顯示圖形用戶界面,并接收用戶提供的輸入以及對用戶輸入進(jìn)行反饋;
[0057]裝載文件提供單元,用于提供裝載文件,所述裝載文件提供執(zhí)行更新所述應(yīng)用程序數(shù)據(jù)文件的方法。
[0058]可選的,所述應(yīng)用程序數(shù)據(jù)文件提供單元包括:
[0059]用戶界面文件提供子單元,用于提供用戶界面文件,所述用戶界面文件用于定義所述圖形用戶界面,所述圖形用戶界面接收用戶提供的輸入;
[0060]用戶界面事