本發(fā)明涉及計(jì)算機(jī)領(lǐng)域,具體而言,涉及一種安裝文件的獲取方法和裝置。
背景技術(shù):
為了避免頻繁的應(yīng)用更新對(duì)用戶造成煩擾,插件開發(fā)技術(shù)顯得越來越重要。插件開發(fā)指將原本獨(dú)立的app(手機(jī)軟件application的縮寫)拆分成一個(gè)宿主app和多個(gè)插件app。插件app內(nèi)置在宿主app中,手機(jī)安裝宿主app,在宿主app運(yùn)行后會(huì)加載、安裝插件app。宿主app也可以通過從應(yīng)用內(nèi)部存儲(chǔ)目錄(如手機(jī)自帶內(nèi)存的目錄)、外部存儲(chǔ)目錄(如sd卡的目錄)中加載插件app。對(duì)于應(yīng)用提供方,可以通過網(wǎng)絡(luò)動(dòng)態(tài)下發(fā)新的插件app,使得用戶無(wú)需安裝新的app,從而更新已安裝的app的功能或修復(fù)線上漏洞bug。
上述的宿主app是指在開發(fā)人員完成編碼后,編譯生成的能夠在移動(dòng)設(shè)備(如android系統(tǒng)手機(jī)、ios系統(tǒng)手機(jī)等)上正常安裝并運(yùn)行的安裝包。上述的插件app是指在編譯生成安裝包后,不能獨(dú)立運(yùn)行而需要依托于宿主app才能運(yùn)行的安裝包。
在編譯過程中,需要開發(fā)人員輸入相關(guān)命令分別對(duì)插件app所在的工程和宿主app所在的工程進(jìn)行編譯,編譯過程中需要大量的重復(fù)勞動(dòng)(如輸入編譯命令、調(diào)整文件位置等),且在開發(fā)階段,例如在界面開發(fā)、設(shè)計(jì)還原等需要頻繁查看界面效果的場(chǎng)景,往往會(huì)面臨只改1個(gè)像素,卻需要編譯整個(gè)項(xiàng)目(如宿主工程),進(jìn)行效果的驗(yàn)證查看,該驗(yàn)證過程嚴(yán)重影響了項(xiàng)目進(jìn)度,降低了開發(fā)效率,在修改其余參數(shù)時(shí)也面臨著同樣的窘境。
針對(duì)相關(guān)技術(shù)中在開發(fā)應(yīng)用安裝包時(shí)開發(fā)編譯的效率較低的技術(shù)問題,目前尚未提出有效的解決方案。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例提供了一種安裝文件的獲取方法和裝置,以至少解決相關(guān)技術(shù)中在開發(fā)應(yīng)用安裝包時(shí)開發(fā)編譯的效率較低的技術(shù)問題。
根據(jù)本發(fā)明實(shí)施例的一個(gè)方面,提供了一種安裝文件的獲取方法,該方法包括:接收到編譯指令,其中,編譯指令用于指示對(duì)第一資源文件和第二資源文件進(jìn)行編譯,得到待安裝的目標(biāo)應(yīng)用的安裝文件;在編譯指令的觸發(fā)下執(zhí)行對(duì)第一資源文件的編譯,得到目標(biāo)應(yīng)用的插件;在完成對(duì)第一資源文件的編譯之后,繼續(xù)執(zhí)行對(duì)第二資源文件和插件的編譯,得到目標(biāo)應(yīng)用的安裝文件。
根據(jù)本發(fā)明實(shí)施例的另一方面,還提供了一種安裝文件的獲取裝置,該裝置包括:接收單元,用于接收到編譯指令,其中,編譯指令用于指示對(duì)第一資源文件和第二資源文件進(jìn)行編譯,得到待安裝的目標(biāo)應(yīng)用的安裝文件;第一編譯單元,用于在編譯指令的觸發(fā)下執(zhí)行對(duì)第一資源文件的編譯,得到目標(biāo)應(yīng)用的插件;第二編譯單元,用于在完成對(duì)第一資源文件的編譯之后,繼續(xù)執(zhí)行對(duì)第二資源文件和插件的編譯,得到目標(biāo)應(yīng)用的安裝文件。
在本發(fā)明實(shí)施例中,在接收到編譯指令時(shí),通過在計(jì)算機(jī)上啟動(dòng)的進(jìn)程對(duì)第一資源文件進(jìn)行編譯,得到目標(biāo)應(yīng)用的插件,并通過該進(jìn)程對(duì)第二資源文件和得到的插件進(jìn)行編譯,得到目標(biāo)應(yīng)用的安裝文件,而不用在編譯的過程中逐個(gè)輸入命令和相關(guān)參數(shù),可以解決了相關(guān)技術(shù)中在開發(fā)應(yīng)用安裝包時(shí)開發(fā)編譯的效率較低的技術(shù)問題,進(jìn)而達(dá)到提高編譯效率的技術(shù)效果。
附圖說明
此處所說明的附圖用來提供對(duì)本發(fā)明的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,本發(fā)明的示意性實(shí)施例及其說明用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定。在附圖中:
圖1是根據(jù)本發(fā)明實(shí)施例的安裝文件的獲取方法的硬件環(huán)境的示意圖;
圖2是根據(jù)本發(fā)明實(shí)施例的一種可選的安裝文件的獲取方法的流程圖;
圖3是根據(jù)本發(fā)明實(shí)施例的一種可選的安裝文件的獲取系統(tǒng)的示意圖;
圖4是根據(jù)本發(fā)明實(shí)施例的一種可選的安裝文件的獲取方法的流程圖;
圖5是根據(jù)本發(fā)明實(shí)施例的一種可選的gradle插件中代碼的示意圖;
圖6是根據(jù)本發(fā)明實(shí)施例的一種可選的gradle插件中代碼的示意圖;
圖7是根據(jù)本發(fā)明實(shí)施例的一種可選的gradle插件中代碼的示意圖;
圖8是根據(jù)本發(fā)明實(shí)施例的一種可選的編譯界面的示意圖;
圖9是根據(jù)本發(fā)明實(shí)施例的一種可選的安裝文件的獲取裝置的示意圖;以及
圖10是根據(jù)本發(fā)明實(shí)施例的一種終端的結(jié)構(gòu)框圖。
具體實(shí)施方式
為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分的實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都應(yīng)當(dāng)屬于本發(fā)明保護(hù)的范圍。
需要說明的是,本發(fā)明的說明書和權(quán)利要求書及上述附圖中的術(shù)語(yǔ)“第一”、“第二”等是用于區(qū)別類似的對(duì)象,而不必用于描述特定的順序或先后次序。應(yīng)該理解這樣使用的數(shù)據(jù)在適當(dāng)情況下可以互換,以便這里描述的本發(fā)明的實(shí)施例能夠以除了在這里圖示或描述的那些以外的順序?qū)嵤?。此外,術(shù)語(yǔ)“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或?qū)τ谶@些過程、方法、產(chǎn)品或設(shè)備固有的其它步驟或單元。
首先,在對(duì)本發(fā)明實(shí)施例進(jìn)行描述的過程中出現(xiàn)的部分名詞或者術(shù)語(yǔ)適用于如下解釋:
app:手機(jī)軟件application的縮寫。
宿主app:在開發(fā)人員完成編碼后,編譯生成能夠在移動(dòng)設(shè)備(如android手機(jī))上正常安裝并運(yùn)行的安裝包。
插件app:編譯生成安裝包后,不能獨(dú)立運(yùn)行,需要依托于宿主app才能運(yùn)行的安裝包。
插件開發(fā):將原本獨(dú)立的app拆分成一個(gè)宿主app和多個(gè)插件app。插件app內(nèi)置在宿主app中,手機(jī)安裝宿主app,在宿主app運(yùn)行后會(huì)加載、安裝插件app。
實(shí)施例1
根據(jù)本發(fā)明實(shí)施例,提供了一種安裝文件的獲取方法的方法實(shí)施例。
可選地,在本實(shí)施例中,上述安裝文件的獲取方法可以應(yīng)用于如圖1所示的由服務(wù)器102和終端104所構(gòu)成的硬件環(huán)境中。如圖1所示,服務(wù)器102通過網(wǎng)絡(luò)與終端104進(jìn)行連接,上述網(wǎng)絡(luò)包括但不限于:廣域網(wǎng)、城域網(wǎng)或局域網(wǎng),終端104并不限定于pc、手機(jī)、平板電腦等。本發(fā)明實(shí)施例的安裝文件的獲取方法可以由服務(wù)器102來執(zhí)行,也可以由終端104來執(zhí)行,還可以是由服務(wù)器102和終端104共同執(zhí)行。其中,終端104執(zhí)行本發(fā)明實(shí)施例的安裝文件的獲取方法也可以是由安裝在其上的客戶端來執(zhí)行。
圖2是根據(jù)本發(fā)明實(shí)施例的一種可選的安裝文件的獲取方法的流程圖,如圖2所示,該方法可以包括以下步驟:
步驟s202,接收到編譯指令,編譯指令用于指示對(duì)第一資源文件和第二資源文件進(jìn)行編譯,得到待安裝的目標(biāo)應(yīng)用的安裝文件;
步驟s204,在編譯指令的觸發(fā)下執(zhí)行對(duì)第一資源文件的編譯,得到目標(biāo)應(yīng)用的插件;
步驟s206,在完成對(duì)第一資源文件的編譯之后,繼續(xù)執(zhí)行對(duì)第二資源文件和插件的編譯,得到目標(biāo)應(yīng)用的安裝文件。
通過上述步驟s202至步驟s208,在接收到編譯指令時(shí),通過在計(jì)算機(jī)上啟動(dòng)的進(jìn)程對(duì)第一資源文件進(jìn)行編譯,得到目標(biāo)應(yīng)用的插件,并通過該進(jìn)程對(duì)第二資源文件和得到的插件進(jìn)行編譯,得到目標(biāo)應(yīng)用的安裝文件,而不用在編譯的過程中逐個(gè)輸入命令和相關(guān)參數(shù),可以解決了相關(guān)技術(shù)中在開發(fā)應(yīng)用安裝包時(shí)開發(fā)編譯的效率較低的技術(shù)問題,進(jìn)而達(dá)到提高編譯效率的技術(shù)效果。
上述的第一資源文件為包括插件應(yīng)用的源代碼的文件;第二資源文件為包括宿主應(yīng)用的源代碼的文件;目標(biāo)應(yīng)用即得到的包括插件應(yīng)用的宿主應(yīng)用。
上述的進(jìn)程可通過執(zhí)行預(yù)先定義好的任務(wù)腳本來完成對(duì)第一資源文件和第二資源文件的編譯,且預(yù)先制定的任務(wù)腳本中包括各種類型的應(yīng)用安裝包(即安裝文件)開發(fā)所涉及的參數(shù),在編譯過程中,可以根據(jù)源代碼文件中的相關(guān)參數(shù)在腳本中選擇對(duì)應(yīng)的參數(shù),從而可以使得任務(wù)腳本具備較強(qiáng)的適應(yīng)性。
在任務(wù)腳本執(zhí)行完編譯之后,還可以通過任務(wù)腳本中的安裝命令自動(dòng)將得到的目標(biāo)應(yīng)用的安裝文件安裝至移動(dòng)終端側(cè),便于對(duì)目標(biāo)應(yīng)用進(jìn)行調(diào)試。
上述的目標(biāo)應(yīng)用是指安裝在移動(dòng)終端上的應(yīng)用,如安卓設(shè)備上的安卓應(yīng)用、ios設(shè)備上ios應(yīng)用等。本申請(qǐng)的上述方法可以在包括cpu等控制器的設(shè)備上執(zhí)行。
在本申請(qǐng)的技術(shù)方案中,應(yīng)用開發(fā)工程師通過在終端terminal上點(diǎn)擊編譯按鈕(產(chǎn)生編譯指令),相應(yīng)的任務(wù)就會(huì)自動(dòng)執(zhí)行,每個(gè)插件工程生成對(duì)應(yīng)的插件app,由于插件app并不能單獨(dú)運(yùn)行,而需要依賴于宿主app運(yùn)行,故可以通過任務(wù)自動(dòng)將此插件app拷貝至宿主app所在工程內(nèi)置的插件目錄,再通過相應(yīng)的任務(wù)編譯宿主工程,生成可獨(dú)立運(yùn)行的app(目標(biāo)應(yīng)用),并安裝到手機(jī)等移動(dòng)設(shè)備上,在移動(dòng)設(shè)備上運(yùn)行該獨(dú)立的app,以對(duì)插件app的功能進(jìn)行驗(yàn)證,在驗(yàn)證通過后即可發(fā)布。為了進(jìn)一步詳述本申請(qǐng)的實(shí)施例,下面結(jié)合圖2詳述本申請(qǐng)的實(shí)施例:
在步驟s202提供的技術(shù)方案中,在接收到編譯指令之前,本申請(qǐng)的方法還包括:創(chuàng)建包括第一代碼集合的第一腳本(即上述的任務(wù)腳本),其中,第一代碼集合用于對(duì)第一資源文件進(jìn)行編譯;創(chuàng)建包括第二代碼集合的第二腳本(即上述的任務(wù)腳本),其中,第二代碼集合用于對(duì)第二資源文件和插件進(jìn)行編譯。
根據(jù)開發(fā)的過程,按照編譯步驟,將各個(gè)編譯步驟中需要使用的編譯命令直接以腳本命令的形式寫入腳本文件中,而無(wú)需在開發(fā)的過程中,由開發(fā)人員記住編譯步驟、以及各個(gè)編譯步驟中需要使用的編譯命令,每次完整的編譯都由開發(fā)人員花費(fèi)時(shí)間去回想編譯命令、手動(dòng)輸入編譯命令,避免大量的重復(fù)勞動(dòng),節(jié)省了工作人員寶貴的時(shí)間。
即使在項(xiàng)目中有新成員加入時(shí),新成員也可快速上手,無(wú)需進(jìn)行大量的培訓(xùn),只需要調(diào)用上述的腳本即可,而無(wú)需去了解編譯的過程,避免了整個(gè)項(xiàng)目的進(jìn)度被影響。
當(dāng)開發(fā)人員在編譯工具(如androidstudio)中點(diǎn)擊編譯按鈕時(shí),隨即產(chǎn)生了一個(gè)編譯指令,該編譯指令可觸發(fā)本申請(qǐng)的編譯過程,也即可以自動(dòng)運(yùn)行目標(biāo)應(yīng)用的編譯和安裝的步驟。
上述的androidstudio是一個(gè)android集成開發(fā)工具,基于intellijidea。與eclipseadt類似,androidstudio提供了集成的android開發(fā)工具,可用于開發(fā)和調(diào)試。
可選地,為了提高與腳本之間的兼容度,在接收到編譯指令之前,本申請(qǐng)的方法還可以包括如下步驟:創(chuàng)建用于在編譯工具中運(yùn)行的調(diào)用工具,其中,調(diào)用工具用于在編譯指令的觸發(fā)下,通過進(jìn)程調(diào)用第一腳本和第二腳本提供的接口,以執(zhí)行第一代碼集合和第二代碼集合。
上述的調(diào)用工具可以在編譯工具中以插件的形式存在,該調(diào)用工具的功能包括檢測(cè)上述的編譯指令,在檢測(cè)到該命令的情況下,直接對(duì)第一腳本和第二腳本進(jìn)行調(diào)用,具體是通過第一腳本和第二腳本提供的接口對(duì)其進(jìn)行調(diào)用。
上述編譯工具中的調(diào)用工具可以在運(yùn)行時(shí)創(chuàng)建一條進(jìn)程(即本申請(qǐng)的所提及的進(jìn)程),通過該進(jìn)程專門處理資源文件的編譯,而不用與其它應(yīng)用(如編譯工具)共用一條進(jìn)程,可以提高處理效率。
在步驟s204提供的技術(shù)方案中,在編譯指令的觸發(fā)下執(zhí)行對(duì)第一資源文件的編譯包括:在進(jìn)程上執(zhí)行第一代碼集合,以對(duì)第一資源文件進(jìn)行編譯。
具體地,在進(jìn)程上執(zhí)行第一代碼集合,以對(duì)第一資源文件進(jìn)行編譯時(shí),可以通過如下方式實(shí)現(xiàn):在進(jìn)程上執(zhí)行第一代碼集合,以指示編譯工具對(duì)第一資源文件所在的項(xiàng)目(即插件工程或者插件項(xiàng)目)進(jìn)行編譯,得到插件。
可選地,在插件為多個(gè)的情況下,在進(jìn)程上執(zhí)行第一代碼集合是指:在進(jìn)程的多個(gè)線程上執(zhí)行多個(gè)第一代碼集合,每個(gè)線程對(duì)應(yīng)于一個(gè)插件的第一代碼集合,也即每個(gè)線程用于跑對(duì)應(yīng)于一個(gè)插件的第一代碼集合,具體就是執(zhí)行第一代碼集合中的編譯命令,進(jìn)而完成對(duì)各個(gè)第一資源文件的編譯。
為了進(jìn)一步提高編譯的效率,上述的多個(gè)線程允許并行運(yùn)行。
在步驟s206提供的技術(shù)方案中,繼續(xù)執(zhí)行對(duì)第二資源文件和插件的編譯包括:在進(jìn)程上執(zhí)行第二代碼集合,以對(duì)第二資源文件和插件進(jìn)行編譯。
需要說明的是,上述編譯得到的插件可以每次輸出時(shí)在指定的位置(便于編譯),也可以輸出至任意的位置。若上述的插件每次輸出的位置不同或者不滿足宿主工程的編譯需求,在進(jìn)程上執(zhí)行第二代碼集合之前,可將編譯得到的插件存放至第二資源文件所在項(xiàng)目中與插件相關(guān)聯(lián)的位置。
在進(jìn)程上執(zhí)行第二代碼集合,以對(duì)第二資源文件和插件進(jìn)行編譯包括:在進(jìn)程上執(zhí)行第二代碼集合,以指示編譯工具對(duì)第二資源文件所在的項(xiàng)目(即宿主工程或宿主項(xiàng)目)進(jìn)行編譯。
需要說明的是,對(duì)于某些存在依賴文件的應(yīng)用,還需要對(duì)這些依賴文件(即第三資源文件)進(jìn)行相應(yīng)的處理,在接收到編譯指令之后,通過計(jì)算機(jī)設(shè)備對(duì)第三資源文件進(jìn)行打包,得到目標(biāo)數(shù)據(jù)包,其中,第三資源文件為目標(biāo)應(yīng)用在運(yùn)行時(shí)需要用到的資源文件。
例如,對(duì)于安卓應(yīng)用而言,在androidlibrary中抽取android項(xiàng)目的通用功能,獨(dú)立成為一個(gè)組件,可供其它android項(xiàng)目使用,在應(yīng)用編譯的過程中,可將上述androidlibrary導(dǎo)出為jar文件(全稱為javaarchive,即java歸檔文件),jar文件是與平臺(tái)無(wú)關(guān)的文件格式,它允許將許多文件組合成一個(gè)壓縮文件,主要是將編寫好的類,打包編譯獨(dú)立的jar包,供其它應(yīng)用程序(即上述的目標(biāo)應(yīng)用)使用。
在得到目標(biāo)應(yīng)用的安裝文件和目標(biāo)數(shù)據(jù)包之后,即可安裝目標(biāo)應(yīng)用的安裝文件至移動(dòng)終端,以對(duì)目標(biāo)應(yīng)用進(jìn)行測(cè)試。
相關(guān)技術(shù)中,在開發(fā)編譯插件app的過程中效率較低,在開發(fā)階段,例如在界面開發(fā)、設(shè)計(jì)還原等需要頻繁查看界面效果的場(chǎng)景,往往會(huì)面臨只改1個(gè)像素,卻需要編譯整個(gè)項(xiàng)目(宿主工程),驗(yàn)證影響了項(xiàng)目進(jìn)度,降低了開發(fā)效率,在修改其余參數(shù)時(shí)也面臨著同樣的窘境,由于不能修改單個(gè)插件工程,僅編譯單個(gè)插件并快速在手機(jī)驗(yàn)證插件上功能,嚴(yán)重影響開發(fā)效率和開發(fā)人員的積極性。
而使用本申請(qǐng)?zhí)峁┑募夹g(shù)方案,在編譯驗(yàn)證的過程中,僅僅只需要點(diǎn)擊編譯工具上的編譯按鈕,即可通過調(diào)用腳本的形式自動(dòng)運(yùn)行相關(guān)的指令,調(diào)用編譯工具進(jìn)行編譯,并自動(dòng)將安裝包安裝至移動(dòng)設(shè)備上,方便開發(fā)人員及時(shí)查看修改后的效果。尤其是在頻繁修改,需要進(jìn)行驗(yàn)證的情況下,本申請(qǐng)可以極大的提高整個(gè)項(xiàng)目的進(jìn)度。
為了進(jìn)一步詳述本申請(qǐng)的實(shí)施例,下面以安卓應(yīng)用(即目標(biāo)應(yīng)用)為例,結(jié)合圖3和圖4詳述本申請(qǐng)的實(shí)施例。
具體的思路如圖3所示:制定好編譯項(xiàng)目的命令協(xié)議,主要包括用于編譯插件項(xiàng)目的第一代碼集合、用于編譯宿主應(yīng)用的第二代碼集合,編寫gradle插件(也即第一腳本和第二腳本),具體即將第一代碼集合和第二代碼集合植入腳本,在android項(xiàng)目根目錄的“build.gradle”文件中引入gradle插件。然后編寫run++插件(即編譯工具中的調(diào)用工具),在編譯平臺(tái)androidstudio中安裝run++插件,運(yùn)行run++插件,選中需要編譯的項(xiàng)目,點(diǎn)擊run按鈕,開始編譯、安裝,此過程中可能會(huì)使用到依賴文件(即文件庫(kù)中的第三資源文件)。
上述的gradle插件是一個(gè)基于apacheant和apachemaven概念的項(xiàng)目自動(dòng)化建構(gòu)工具。它使用一種基于groovy的特定領(lǐng)域語(yǔ)言(dsl)來聲明項(xiàng)目設(shè)置,拋棄了基于xml的各種繁瑣配置。以面向java應(yīng)用為主,當(dāng)前其支持的語(yǔ)言限于java、groovy和scala,未來將支持更多的語(yǔ)言;同時(shí)gradle也是一個(gè)基于jvm的構(gòu)建工具,是一款通用靈活的構(gòu)建工具,支持maven、ivy倉(cāng)庫(kù),支持傳遞性依賴管理,而不需要遠(yuǎn)程倉(cāng)庫(kù)或者是pom.xml和ivy.xml配置文件,基于groovy、build腳本使用groovy編寫。
由此可見,使用gradle插件便于進(jìn)行項(xiàng)目管理,使得構(gòu)建更為靈活。
需要說明的是,對(duì)于ios等其它類型的應(yīng)用而言,也可以選擇對(duì)應(yīng)的工具應(yīng)用來編譯腳本。
下面結(jié)合圖4詳述本申請(qǐng)的實(shí)現(xiàn)步驟:
步驟s402,定義編譯、安裝、啟動(dòng)及導(dǎo)出jar包等命令協(xié)議。
將編譯、安裝、啟動(dòng)及導(dǎo)出jar包等命令以及相互之間邏輯根據(jù)定義好。
步驟s404,基于第一步的協(xié)議,編寫gradle插件,提供gradle進(jìn)行編譯的接口。
根據(jù)上述定義好的邏輯關(guān)系將編譯、安裝、啟動(dòng)及導(dǎo)出jar包等命令編寫為gradle插件(即第一腳本和第二腳本)。
對(duì)于導(dǎo)出jar包、安裝應(yīng)用相關(guān)的命令也可以一并寫入gradle插件中,以便于相關(guān)流程的自動(dòng)運(yùn)行。
上述的gradle插件提供有如下調(diào)用接口:
(1)assemblereleaserun接口:用于編譯宿主工程、插件工程,生成app(目標(biāo)應(yīng)用的安裝文件);
(2)installreleaserun接口:調(diào)用并安裝目標(biāo)應(yīng)用的安裝文件至手機(jī);
(3)exportlibraryrun接口:用于導(dǎo)出jar,提供給宿主app或插件app使用。
步驟s406,在android項(xiàng)目中引入編寫的gradle插件。具體包括如下幾個(gè)子步驟:
步驟s4062,在android工程根目錄添加代碼依賴,具體代碼如圖5所示,圖5示出了一種可選地建立android工程根目錄的代碼依賴的代碼;
步驟s4064,在宿主工程聲明引入host插件,具體代碼如圖6所示;
步驟s4066,在宿主工程聲明引入plugin插件,具體代碼如圖7所示。
步驟s408,編寫androidstudio插件(即run++插件,也即調(diào)用工具),提供可視化操作界面。
對(duì)于工作人員而言,在使用本申請(qǐng)的技術(shù)方案進(jìn)行應(yīng)用驗(yàn)證的過程中,先啟動(dòng)編譯工具androidstudio,如圖8所示,安裝步驟s408編寫的androidstudio(即run++插件)插件,點(diǎn)擊工具欄編譯圖標(biāo),運(yùn)行插件。插件啟動(dòng)后,默認(rèn)選中開發(fā)人員正在編輯的android工程,直接點(diǎn)擊“run”編譯當(dāng)前工程。
圖8中,cdk為通用開發(fā)工具庫(kù),host為宿主工程,jjc表示競(jìng)技彩插件工程,kpc表示快頻彩插件工程,szc表示數(shù)字彩插件工程。library即為androidlibrary;plugin表示為插件工程;host表示為宿主工程。如圖8中所示,選中jjc插件工程,直接點(diǎn)擊“run”按鈕,即可快速安裝至手機(jī)。
需要說明的是,可以預(yù)先根據(jù)需求對(duì)重啟“restart”、配置“config”以及數(shù)據(jù)庫(kù)“database”進(jìn)行配置。
如需要安裝應(yīng)用后重啟移動(dòng)設(shè)備,即可選中“restart”(即小框內(nèi)存在符號(hào)“√”表示選中)。
在本申請(qǐng)的技術(shù)方案中,開發(fā)人員也可以選擇其它插件工程、宿主工程進(jìn)行編譯,支持多插件并行編譯。整個(gè)編譯過程,不需要開發(fā)人員輸入任何編譯代碼,不需要思考編譯步驟,不需要等待逐個(gè)插件編譯。從而大大節(jié)省時(shí)間,提升工作效率。
通過本申請(qǐng)?zhí)峁┑膶?shí)施例,實(shí)現(xiàn)了androidstudio編譯工具的可視化;提升了android開發(fā)人員進(jìn)行插件開發(fā)的效率,減少編譯等待時(shí)間;本申請(qǐng)的技術(shù)方案簡(jiǎn)單、易用,便于推廣。
需要說明的是,對(duì)于前述的各方法實(shí)施例,為了簡(jiǎn)單描述,故將其都表述為一系列的動(dòng)作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明并不受所描述的動(dòng)作順序的限制,因?yàn)橐罁?jù)本發(fā)明,某些步驟可以采用其他順序或者同時(shí)進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說明書中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動(dòng)作和模塊并不一定是本發(fā)明所必須的。
通過以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到根據(jù)上述實(shí)施例的方法可借助軟件加必需的通用硬件平臺(tái)的方式來實(shí)現(xiàn),當(dāng)然也可以通過硬件,但很多情況下前者是更佳的實(shí)施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)(如rom/ram、磁碟、光盤)中,包括若干指令用以使得一臺(tái)終端設(shè)備(可以是手機(jī),計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述的方法。
實(shí)施例2
根據(jù)本發(fā)明實(shí)施例,還提供了一種用于實(shí)施上述安裝文件的獲取方法的安裝文件的獲取裝置。圖9是根據(jù)本發(fā)明實(shí)施例的一種可選的安裝文件的獲取裝置的示意圖,如圖9所示,該裝置可以包括:接收單元92、第一編譯單元94以及第二編譯單元96。
接收單元92,用于接收到編譯指令,編譯指令用于指示對(duì)第一資源文件和第二資源文件進(jìn)行編譯,得到待安裝的目標(biāo)應(yīng)用的安裝文件;
第一編譯單元94,用于在編譯指令的觸發(fā)下執(zhí)行對(duì)第一資源文件的編譯,得到目標(biāo)應(yīng)用的插件;
第二編譯單元96,用于在完成對(duì)第一資源文件的編譯之后,繼續(xù)執(zhí)行對(duì)第二資源文件和插件的編譯,得到目標(biāo)應(yīng)用的安裝文件。
需要說明的是,該實(shí)施例中的接收單元92可以用于執(zhí)行本申請(qǐng)實(shí)施例1中的步驟s202,該實(shí)施例中的第一編譯單元94可以用于執(zhí)行本申請(qǐng)實(shí)施例1中的步驟s204,該實(shí)施例中的第二編譯單元96可以用于執(zhí)行本申請(qǐng)實(shí)施例1中的步驟s206。
此處需要說明的是,上述模塊與對(duì)應(yīng)的步驟所實(shí)現(xiàn)的示例和應(yīng)用場(chǎng)景相同,但不限于上述實(shí)施例1所公開的內(nèi)容。需要說明的是,上述模塊作為裝置的一部分可以運(yùn)行在如圖1所示的硬件環(huán)境中,可以通過軟件實(shí)現(xiàn),也可以通過硬件實(shí)現(xiàn)。
通過上述模塊,在接收到編譯指令時(shí),通過在計(jì)算機(jī)上啟動(dòng)的進(jìn)程對(duì)第一資源文件進(jìn)行編譯,得到目標(biāo)應(yīng)用的插件,并通過該進(jìn)程對(duì)第二資源文件和得到的插件進(jìn)行編譯,得到目標(biāo)應(yīng)用的安裝文件,而不用在編譯的過程中逐個(gè)輸入命令和相關(guān)參數(shù),可以解決了相關(guān)技術(shù)中在開發(fā)應(yīng)用安裝包時(shí)開發(fā)編譯的效率較低的技術(shù)問題,進(jìn)而達(dá)到提高編譯效率的技術(shù)效果。
上述的第一資源文件為包括插件應(yīng)用的源代碼的文件;第二資源文件為包括宿主應(yīng)用的源代碼的文件;目標(biāo)應(yīng)用即得到的包括插件應(yīng)用的宿主應(yīng)用。
上述的進(jìn)程可通過執(zhí)行預(yù)先定義好的任務(wù)腳本來完成對(duì)第一資源文件和第二資源文件的編譯,且預(yù)先制定的任務(wù)腳本中包括各種類型的應(yīng)用安裝包(即安裝文件)開發(fā)所涉及的參數(shù),在編譯過程中,可以根據(jù)源代碼文件中的相關(guān)參數(shù)在腳本中選擇對(duì)應(yīng)的參數(shù),從而可以使得任務(wù)腳本具備較強(qiáng)的適應(yīng)性。
在任務(wù)腳本執(zhí)行完編譯之后,還可以通過任務(wù)腳本中的安裝命令自動(dòng)將得到的目標(biāo)應(yīng)用的安裝文件安裝至移動(dòng)終端側(cè),便于對(duì)目標(biāo)應(yīng)用進(jìn)行調(diào)試。
上述的目標(biāo)應(yīng)用是指安裝在移動(dòng)終端上的應(yīng)用,如安卓設(shè)備上的安卓應(yīng)用、ios設(shè)備上ios應(yīng)用等。本申請(qǐng)的上述方法可以在包括cpu等控制器的設(shè)備上執(zhí)行。
在本申請(qǐng)的技術(shù)方案中,應(yīng)用開發(fā)工程師通過在終端terminal上點(diǎn)擊編譯按鈕(產(chǎn)生編譯指令),相應(yīng)的任務(wù)就會(huì)自動(dòng)執(zhí)行,每個(gè)插件工程生成對(duì)應(yīng)的插件app,由于插件app并不能單獨(dú)運(yùn)行,而需要依賴于宿主app運(yùn)行,故可以通過任務(wù)自動(dòng)將此插件app拷貝至宿主app所在工程內(nèi)置的插件目錄,再通過相應(yīng)的任務(wù)編譯宿主工程,生成可獨(dú)立運(yùn)行的app(目標(biāo)應(yīng)用),并安裝到手機(jī)等移動(dòng)設(shè)備上,在移動(dòng)設(shè)備上運(yùn)行該獨(dú)立的app,以對(duì)插件app的功能進(jìn)行驗(yàn)證,在驗(yàn)證通過后即可發(fā)布。
可選地,本申請(qǐng)的裝置還可以包括:第一創(chuàng)建單元,用于在接收到編譯指令之前,創(chuàng)建包括第一代碼集合的第一腳本,其中,第一代碼集合用于對(duì)第一資源文件進(jìn)行編譯;第二創(chuàng)建單元,用于創(chuàng)建包括第二代碼集合的第二腳本,其中,第二代碼集合用于對(duì)第二資源文件和插件進(jìn)行編譯。
根據(jù)開發(fā)的過程,按照編譯步驟,將各個(gè)編譯步驟中需要使用的編譯命令直接以腳本命令的形式寫入腳本文件中,而無(wú)需在開發(fā)的過程中,由開發(fā)人員記住編譯步驟、以及各個(gè)編譯步驟中需要使用的編譯命令,每次完整的編譯都由開發(fā)人員花費(fèi)時(shí)間去回想編譯命令、手動(dòng)輸入編譯命令,避免大量的重復(fù)勞動(dòng),節(jié)省了工作人員寶貴的時(shí)間。
可選地,可以通過本申請(qǐng)的裝置包括的如下模塊提高與腳本之間的兼容度:第三創(chuàng)建單元,用于在接收到編譯指令之前,創(chuàng)建用于在編譯工具中運(yùn)行的調(diào)用工具,其中,調(diào)用工具用于在編譯指令的觸發(fā)下,通過進(jìn)程調(diào)用第一腳本和第二腳本提供的接口,以執(zhí)行第一代碼集合和第二代碼集合。
上述的調(diào)用工具可以在編譯工具中以插件的形式存在,該調(diào)用工具的功能包括檢測(cè)上述的編譯指令,在檢測(cè)到該命令的情況下,直接對(duì)第一腳本和第二腳本進(jìn)行調(diào)用,具體是通過第一腳本和第二腳本提供的接口對(duì)其進(jìn)行調(diào)用。
上述編譯工具中的調(diào)用工具可以在運(yùn)行時(shí)創(chuàng)建一條進(jìn)程(即本申請(qǐng)的所提及的進(jìn)程),通過該進(jìn)程專門處理資源文件的編譯,而不用與其它應(yīng)用(如編譯工具)共用一條進(jìn)程,可以提高處理效率。
可選地,第一編譯單元還用于在進(jìn)程上執(zhí)行第一代碼集合,以對(duì)第一資源文件進(jìn)行編譯。
具體地,第一編譯單元在進(jìn)程上執(zhí)行第一代碼集合,以對(duì)第一資源文件進(jìn)行編譯時(shí),可以通過如下模塊實(shí)現(xiàn):第一編譯模塊,用于在進(jìn)程上執(zhí)行第一代碼集合,以指示編譯工具對(duì)第一資源文件所在的項(xiàng)目進(jìn)行編譯,得到插件。
可選地,第一編譯模塊還用于在插件為多個(gè)的情況下,在進(jìn)程的多個(gè)線程上執(zhí)行多個(gè)第一代碼集合,其中,每個(gè)線程對(duì)應(yīng)于一個(gè)插件的第一代碼集合。
為了進(jìn)一步提高編譯的效率,上述的多個(gè)線程允許并行運(yùn)行。
可選地,第二編譯單元還用于在進(jìn)程上執(zhí)行第二代碼集合,以對(duì)第二資源文件和插件進(jìn)行編譯。
需要說明的是,上述編譯得到的插件可以每次輸出時(shí)在指定的位置(便于編譯),也可以輸出至任意的位置。若上述的插件每次輸出的位置不同或者不滿足宿主工程的編譯需求,則在進(jìn)程上執(zhí)行第二代碼集合之前,可通過第二編譯單元包括的保存模塊將編譯得到的插件存放至第二資源文件所在項(xiàng)目中與插件相關(guān)聯(lián)的位置。
可選地,第二編譯單元還可包括第二編譯模塊,用于在進(jìn)程上執(zhí)行第二代碼集合,以指示編譯工具對(duì)第二資源文件所在的項(xiàng)目進(jìn)行編譯。
需要說明的是,對(duì)于某些存在依賴文件的應(yīng)用,還需要對(duì)這些依賴文件(即第三資源文件)進(jìn)行相應(yīng)的處理,具體通過該裝置的打包單元實(shí)現(xiàn),打包單元在接收到編譯指令之后,通過計(jì)算機(jī)設(shè)備對(duì)第三資源文件進(jìn)行打包,得到目標(biāo)數(shù)據(jù)包,其中,第三資源文件為目標(biāo)應(yīng)用在運(yùn)行時(shí)需要用到的資源文件。
例如,對(duì)于安卓應(yīng)用而言,在androidlibrary中抽取android項(xiàng)目的通用功能,獨(dú)立成為一個(gè)組件,可供其它android項(xiàng)目使用,在應(yīng)用編譯的過程中,可將上述androidlibrary導(dǎo)出為jar文件(全稱為javaarchive,即java歸檔文件),jar文件是與平臺(tái)無(wú)關(guān)的文件格式,它允許將許多文件組合成一個(gè)壓縮文件,主要是將編寫好的類,打包編譯獨(dú)立的jar包,供其它應(yīng)用程序(即上述的目標(biāo)應(yīng)用)使用。
在得到目標(biāo)應(yīng)用的安裝文件和目標(biāo)數(shù)據(jù)包之后,可通過該裝置的安裝單元安裝目標(biāo)應(yīng)用的安裝文件至移動(dòng)終端,以對(duì)目標(biāo)應(yīng)用進(jìn)行測(cè)試。
相關(guān)技術(shù)中,在開發(fā)編譯插件app的過程中效率較低,在開發(fā)階段,例如在界面開發(fā)、設(shè)計(jì)還原等需要頻繁查看界面效果的場(chǎng)景,往往會(huì)面臨只改1個(gè)像素,卻需要編譯整個(gè)項(xiàng)目(宿主工程),驗(yàn)證影響了項(xiàng)目進(jìn)度,降低了開發(fā)效率,在修改其余參數(shù)時(shí)也面臨著同樣的窘境,由于不能修改單個(gè)插件工程,僅編譯單個(gè)插件并快速在手機(jī)驗(yàn)證插件上功能,嚴(yán)重影響開發(fā)效率和開發(fā)人員的積極性。
而使用本申請(qǐng)?zhí)峁┑募夹g(shù)方案,在編譯驗(yàn)證的過程中,僅僅只需要點(diǎn)擊編譯工具上的編譯按鈕,即可通過調(diào)用腳本的形式自動(dòng)運(yùn)行相關(guān)的指令,調(diào)用編譯工具進(jìn)行編譯,并自動(dòng)將安裝包安裝至移動(dòng)設(shè)備上,方便開發(fā)人員及時(shí)查看修改后的效果。尤其是在頻繁修改,需要進(jìn)行驗(yàn)證的情況下,本申請(qǐng)可以極大的提高整個(gè)項(xiàng)目的進(jìn)度。
此處需要說明的是,上述模塊與對(duì)應(yīng)的步驟所實(shí)現(xiàn)的示例和應(yīng)用場(chǎng)景相同,但不限于上述實(shí)施例1所公開的內(nèi)容。需要說明的是,上述模塊作為裝置的一部分可以運(yùn)行在如圖1所示的硬件環(huán)境中,可以通過軟件實(shí)現(xiàn),也可以通過硬件實(shí)現(xiàn),其中,硬件環(huán)境包括網(wǎng)絡(luò)環(huán)境。
實(shí)施例3
根據(jù)本發(fā)明實(shí)施例,還提供了一種用于實(shí)施上述安裝文件的獲取方法的服務(wù)器或終端。
圖10是根據(jù)本發(fā)明實(shí)施例的一種終端的結(jié)構(gòu)框圖,如圖10所示,該終端可以包括:一個(gè)或多個(gè)(圖中僅示出一個(gè))處理器1001、存儲(chǔ)器1003、以及傳輸裝置1005(如上述實(shí)施例中的發(fā)送裝置),如圖10所示,該終端還可以包括輸入輸出設(shè)備1007。
其中,存儲(chǔ)器1003可用于存儲(chǔ)軟件程序以及模塊,如本發(fā)明實(shí)施例中的安裝文件的獲取方法和裝置對(duì)應(yīng)的程序指令/模塊,處理器1001通過運(yùn)行存儲(chǔ)在存儲(chǔ)器1003內(nèi)的軟件程序以及模塊,從而執(zhí)行各種功能應(yīng)用以及數(shù)據(jù)處理,即實(shí)現(xiàn)上述的安裝文件的獲取方法。存儲(chǔ)器1003可包括高速隨機(jī)存儲(chǔ)器,還可以包括非易失性存儲(chǔ)器,如一個(gè)或者多個(gè)磁性存儲(chǔ)裝置、閃存、或者其他非易失性固態(tài)存儲(chǔ)器。在一些實(shí)例中,存儲(chǔ)器1003可進(jìn)一步包括相對(duì)于處理器1001遠(yuǎn)程設(shè)置的存儲(chǔ)器,這些遠(yuǎn)程存儲(chǔ)器可以通過網(wǎng)絡(luò)連接至終端。上述網(wǎng)絡(luò)的實(shí)例包括但不限于互聯(lián)網(wǎng)、企業(yè)內(nèi)部網(wǎng)、局域網(wǎng)、移動(dòng)通信網(wǎng)及其組合。
上述的傳輸裝置1005用于經(jīng)由一個(gè)網(wǎng)絡(luò)接收或者發(fā)送數(shù)據(jù),還可以用于處理器與存儲(chǔ)器之間的數(shù)據(jù)傳輸。上述的網(wǎng)絡(luò)具體實(shí)例可包括有線網(wǎng)絡(luò)及無(wú)線網(wǎng)絡(luò)。在一個(gè)實(shí)例中,傳輸裝置1005包括一個(gè)網(wǎng)絡(luò)適配器(networkinterfacecontroller,nic),其可通過網(wǎng)線與其他網(wǎng)絡(luò)設(shè)備與路由器相連從而可與互聯(lián)網(wǎng)或局域網(wǎng)進(jìn)行通訊。在一個(gè)實(shí)例中,傳輸裝置1005為射頻(radiofrequency,rf)模塊,其用于通過無(wú)線方式與互聯(lián)網(wǎng)進(jìn)行通訊。
其中,具體地,存儲(chǔ)器1003用于存儲(chǔ)應(yīng)用程序。
處理器1001可以通過傳輸裝置1005調(diào)用存儲(chǔ)器1003存儲(chǔ)的應(yīng)用程序,以執(zhí)行下述步驟:接收到編譯指令,其中,編譯指令用于指示對(duì)第一資源文件和第二資源文件進(jìn)行編譯,得到待安裝的目標(biāo)應(yīng)用的安裝文件;在編譯指令的觸發(fā)下執(zhí)行對(duì)第一資源文件的編譯,得到目標(biāo)應(yīng)用的插件;在完成對(duì)第一資源文件的編譯之后,繼續(xù)執(zhí)行對(duì)第二資源文件和插件的編譯,得到目標(biāo)應(yīng)用的安裝文件。
處理器1001還用于執(zhí)行下述步驟:創(chuàng)建包括第一代碼集合的第一腳本,其中,所述第一代碼集合用于對(duì)所述第一資源文件進(jìn)行編譯;創(chuàng)建包括第二代碼集合的第二腳本,其中,所述第二代碼集合用于對(duì)所述第二資源文件和所述插件進(jìn)行編譯。
采用本發(fā)明實(shí)施例,在接收到編譯指令時(shí),通過在計(jì)算機(jī)上啟動(dòng)的進(jìn)程對(duì)第一資源文件進(jìn)行編譯,得到目標(biāo)應(yīng)用的插件,并通過該進(jìn)程對(duì)第二資源文件和得到的插件進(jìn)行編譯,得到目標(biāo)應(yīng)用的安裝文件,而不用在編譯的過程中逐個(gè)輸入命令和相關(guān)參數(shù),可以解決了相關(guān)技術(shù)中在開發(fā)應(yīng)用安裝包時(shí)開發(fā)編譯的效率較低的技術(shù)問題,進(jìn)而達(dá)到提高編譯效率的技術(shù)效果。
可選地,本實(shí)施例中的具體示例可以參考上述實(shí)施例1和實(shí)施例2中所描述的示例,本實(shí)施例在此不再贅述。
本領(lǐng)域普通技術(shù)人員可以理解,圖10所示的結(jié)構(gòu)僅為示意,終端可以是智能手機(jī)(如android手機(jī)、ios手機(jī)等)、平板電腦、掌上電腦以及移動(dòng)互聯(lián)網(wǎng)設(shè)備(mobileinternetdevices,mid)、pad等終端設(shè)備。圖10其并不對(duì)上述電子裝置的結(jié)構(gòu)造成限定。例如,終端還可包括比圖10中所示更多或者更少的組件(如網(wǎng)絡(luò)接口、顯示裝置等),或者具有與圖10所示不同的配置。
本領(lǐng)域普通技術(shù)人員可以理解上述實(shí)施例的各種方法中的全部或部分步驟是可以通過程序來指令終端設(shè)備相關(guān)的硬件來完成,該程序可以存儲(chǔ)于一計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,存儲(chǔ)介質(zhì)可以包括:閃存盤、只讀存儲(chǔ)器(read-onlymemory,rom)、隨機(jī)存取器(randomaccessmemory,ram)、磁盤或光盤等。
實(shí)施例4
本發(fā)明的實(shí)施例還提供了一種存儲(chǔ)介質(zhì)??蛇x地,在本實(shí)施例中,上述存儲(chǔ)介質(zhì)可以用于執(zhí)行安裝文件的獲取方法的程序代碼。
可選地,在本實(shí)施例中,上述存儲(chǔ)介質(zhì)可以位于上述實(shí)施例所示的網(wǎng)絡(luò)中的多個(gè)網(wǎng)絡(luò)設(shè)備中的至少一個(gè)網(wǎng)絡(luò)設(shè)備上。
可選地,在本實(shí)施例中,存儲(chǔ)介質(zhì)被設(shè)置為存儲(chǔ)用于執(zhí)行以下步驟的程序代碼:
s11,接收到編譯指令,編譯指令用于指示對(duì)第一資源文件和第二資源文件進(jìn)行編譯,得到待安裝的目標(biāo)應(yīng)用的安裝文件;
s12,在編譯指令的觸發(fā)下執(zhí)行對(duì)第一資源文件的編譯,得到目標(biāo)應(yīng)用的插件;
s13,在完成對(duì)第一資源文件的編譯之后,繼續(xù)執(zhí)行對(duì)第二資源文件和插件的編譯,得到目標(biāo)應(yīng)用的安裝文件。
可選地,存儲(chǔ)介質(zhì)還被設(shè)置為存儲(chǔ)用于執(zhí)行以下步驟的程序代碼:
s21,創(chuàng)建包括第一代碼集合的第一腳本,其中,第一代碼集合用于對(duì)第一資源文件進(jìn)行編譯;
s22,創(chuàng)建包括第二代碼集合的第二腳本,其中,第二代碼集合用于對(duì)第二資源文件和插件進(jìn)行編譯。
可選地,本實(shí)施例中的具體示例可以參考上述實(shí)施例1和實(shí)施例2中所描述的示例,本實(shí)施例在此不再贅述。
可選地,在本實(shí)施例中,上述存儲(chǔ)介質(zhì)可以包括但不限于:u盤、只讀存儲(chǔ)器(rom,read-onlymemory)、隨機(jī)存取存儲(chǔ)器(ram,randomaccessmemory)、移動(dòng)硬盤、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。
上述本發(fā)明實(shí)施例序號(hào)僅僅為了描述,不代表實(shí)施例的優(yōu)劣。
上述實(shí)施例中的集成的單元如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),可以存儲(chǔ)在上述計(jì)算機(jī)可讀取的存儲(chǔ)介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)或多臺(tái)計(jì)算機(jī)設(shè)備(可為個(gè)人計(jì)算機(jī)、服務(wù)器或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的全部或部分步驟。
在本發(fā)明的上述實(shí)施例中,對(duì)各個(gè)實(shí)施例的描述都各有側(cè)重,某個(gè)實(shí)施例中沒有詳述的部分,可以參見其他實(shí)施例的相關(guān)描述。
在本申請(qǐng)所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的客戶端,可通過其它的方式實(shí)現(xiàn)。其中,以上所描述的裝置實(shí)施例僅僅是示意性的,例如所述單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,單元或模塊的間接耦合或通信連接,可以是電性或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上。可以根據(jù)實(shí)際的需要選擇其中的部分或者全部單元來實(shí)現(xiàn)本實(shí)施例方案的目的。
另外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元的形式實(shí)現(xiàn)。
以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng)視為本發(fā)明的保護(hù)范圍。