欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

應(yīng)用的熱修復(fù)裝置及方法與流程

文檔序號:11729187閱讀:174來源:國知局
應(yīng)用的熱修復(fù)裝置及方法與流程

本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及一種應(yīng)用的熱修復(fù)裝置及方法。



背景技術(shù):

隨著智能設(shè)備的發(fā)展,智能設(shè)備上的軟件層出不窮。但是一些軟件在使用的過程中可能會出現(xiàn)一些漏洞(bug),例如功能性或邏輯性的錯誤,如對話框彈出出錯、系統(tǒng)執(zhí)行某功能失敗等,這些bug會影響到用戶的對軟件的正常使用,因此需要及時地進(jìn)行修復(fù)。

目前,在一個應(yīng)用發(fā)布之后,如果發(fā)現(xiàn)出現(xiàn)嚴(yán)重的bug需要進(jìn)行修復(fù),按照常規(guī)的做法一般是:重新打包應(yīng)用、測試、向各個應(yīng)用市場和渠道推出新的安裝包、提示用戶升級、用戶下載、覆蓋安裝。這種方式不僅需要各個應(yīng)用市場及渠道進(jìn)行安裝包的更新,還需要用戶進(jìn)行應(yīng)用的重新覆蓋安裝,不僅為用戶帶來不便,而且成本高且流程過于繁瑣。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明提供一種應(yīng)用的熱修復(fù)裝置及方法,其主要目的在于解決現(xiàn)有技術(shù)中對于應(yīng)用漏洞的修復(fù)成本高且流程過于繁瑣的問題。

為實(shí)現(xiàn)上述目的,本發(fā)明提供一種應(yīng)用的熱修復(fù)裝置,該應(yīng)用的熱修復(fù)裝置包括:

獲取模塊,用于獲取待修復(fù)的應(yīng)用當(dāng)前的應(yīng)用版本信息,以及所述應(yīng)用當(dāng)前的已有補(bǔ)丁版本信息;

下載模塊,用于基于所述應(yīng)用版本信息以及已有補(bǔ)丁版本信息,從服務(wù)器下載待修復(fù)補(bǔ)丁包;

確定模塊,用于根據(jù)下載的待修復(fù)補(bǔ)丁包以及所述已有補(bǔ)丁版本信息,確定待修復(fù)的目標(biāo)方法;

修復(fù)模塊,用于在所述應(yīng)用的運(yùn)行過程中,基于所述待修復(fù)補(bǔ)丁包以及預(yù)設(shè)的修復(fù)框架,對所述目標(biāo)方法的調(diào)用進(jìn)行攔截并修改處理,以實(shí)現(xiàn)對所述應(yīng)用的修復(fù)。

可選地,所述確定模塊包括:

解壓縮單元,用于對下載的所述待修復(fù)補(bǔ)丁包進(jìn)行解壓縮處理,并將解壓縮得到的補(bǔ)丁文件存儲至所述應(yīng)用的私有文件夾中;

確定單元,用于基于所述私有文件中的所述補(bǔ)丁文件,以及所述已有補(bǔ)丁版本信息,確定待修復(fù)的目標(biāo)方法。

可選地,所述修復(fù)模塊包括:

攔截單元,用于在所述應(yīng)用的運(yùn)行過程中,對所述應(yīng)用的系統(tǒng)調(diào)用信息進(jìn)行監(jiān)測,以在調(diào)用所述目標(biāo)方法之前,在應(yīng)用的native層對所述目標(biāo)方法的地址進(jìn)行攔截;

修改單元,用于基于所述補(bǔ)丁文件以及預(yù)設(shè)的修復(fù)框架,對所述目標(biāo)方法的執(zhí)行邏輯進(jìn)行修改,以實(shí)現(xiàn)對所述應(yīng)用的修復(fù)。

可選地,所述下載模塊包括:

請求單元,用于根據(jù)獲取的應(yīng)用版本信息以及所述已有補(bǔ)丁版本信息向所述應(yīng)用服務(wù)器發(fā)送查詢請求;

下載單元,用于在接收到所述服務(wù)器基于所述查詢請求返回的應(yīng)答信息,并基于所述應(yīng)答信息判定當(dāng)前具有與所述應(yīng)用適配的待修復(fù)補(bǔ)丁包時,下載所述待修復(fù)補(bǔ)丁包。

可選地,所述應(yīng)用的熱修復(fù)裝置還包括校驗?zāi)K和上報模塊,其中,

所述校驗?zāi)K用于:對所述待修復(fù)補(bǔ)丁包進(jìn)行有效性校驗;

所述上報模塊用于:若校驗通過,則向所述服務(wù)器上報下載成功的狀態(tài)信息;

所述確定模塊還用于:在所述上報模塊向所述服務(wù)器上報下載成功的狀態(tài)信息后,根據(jù)下載的待修復(fù)補(bǔ)丁包以及所述已有補(bǔ)丁版本信息,確定待修復(fù)的目標(biāo)方法;

所述上報模塊還用于:若校驗失敗,則向所述服務(wù)器上報補(bǔ)丁包無效的狀態(tài)信息。

此外,為實(shí)現(xiàn)上述目的,本發(fā)明還提供一種應(yīng)用的熱修復(fù)方法,該應(yīng)用的熱修復(fù)方法包括:

獲取待修復(fù)的應(yīng)用當(dāng)前的應(yīng)用版本信息,以及所述應(yīng)用當(dāng)前的已有補(bǔ)丁版本信息;

基于所述應(yīng)用版本信息以及已有補(bǔ)丁版本信息,從服務(wù)器下載待修復(fù)補(bǔ)丁包;

根據(jù)下載的待修復(fù)補(bǔ)丁包以及所述已有補(bǔ)丁版本信息,確定待修復(fù)的目標(biāo)方法;

在所述應(yīng)用的運(yùn)行過程中,基于所述待修復(fù)補(bǔ)丁包以及預(yù)設(shè)的修復(fù)框架,對所述目標(biāo)方法的調(diào)用進(jìn)行攔截并修改處理,以實(shí)現(xiàn)對所述應(yīng)用的修復(fù)。

可選地,所述根據(jù)下載的待修復(fù)補(bǔ)丁包以及所述已有補(bǔ)丁版本信息,確定待修復(fù)的目標(biāo)方法的步驟包括:

對下載的所述待修復(fù)補(bǔ)丁包進(jìn)行解壓縮處理,并將解壓縮得到的補(bǔ)丁文件存儲至所述應(yīng)用的私有文件夾中;

基于所述私有文件中的所述補(bǔ)丁文件,以及所述已有補(bǔ)丁版本信息,確定待修復(fù)的目標(biāo)方法。

可選地,所述在所述應(yīng)用的運(yùn)行過程中,基于所述待修復(fù)補(bǔ)丁包以及預(yù)設(shè)的修復(fù)框架,對所述目標(biāo)方法的調(diào)用進(jìn)行攔截并修改處理,以實(shí)現(xiàn)對所述應(yīng)用的修復(fù)的步驟包括:

在所述應(yīng)用的運(yùn)行過程中,對所述應(yīng)用的系統(tǒng)調(diào)用信息進(jìn)行監(jiān)測,以在調(diào)用所述目標(biāo)方法之前,在應(yīng)用的native層對所述目標(biāo)方法的地址進(jìn)行攔截;

基于所述補(bǔ)丁文件以及預(yù)設(shè)的修復(fù)框架,對所述目標(biāo)方法的執(zhí)行邏輯進(jìn)行修改,以實(shí)現(xiàn)對所述應(yīng)用的修復(fù)。

可選地,所述基于所述應(yīng)用版本信息以及已有補(bǔ)丁版本信息,從服務(wù)器下載待修復(fù)補(bǔ)丁包的步驟包括:

根據(jù)獲取的應(yīng)用版本信息以及所述已有補(bǔ)丁版本信息向所述應(yīng)用服務(wù)器發(fā)送查詢請求;

在接收到所述服務(wù)器基于所述查詢請求返回的應(yīng)答信息,并基于所述應(yīng)答信息判定當(dāng)前具有與所述應(yīng)用適配的待修復(fù)補(bǔ)丁包時,下載所述待修復(fù)補(bǔ)丁包。

可選地,所述在接收到所述服務(wù)器基于所述查詢請求返回的應(yīng)答信息,并基于所述應(yīng)答信息判定當(dāng)前具有與所述應(yīng)用適配的待修復(fù)補(bǔ)丁包時,下載所述待修復(fù)補(bǔ)丁包的步驟之后,所述應(yīng)用的熱修復(fù)方法還包括步驟:

對所述待修復(fù)補(bǔ)丁包進(jìn)行有效性校驗;

若校驗通過,則向所述服務(wù)器上報下載成功的狀態(tài)信息,并執(zhí)行所述根據(jù)下載的待修復(fù)補(bǔ)丁包以及所述已有補(bǔ)丁版本信息,確定待修復(fù)的目標(biāo)方法的步驟;

若校驗失敗,則向所述服務(wù)器上報補(bǔ)丁包無效的狀態(tài)信息。

本發(fā)明提出的應(yīng)用的熱修復(fù)裝置及方法,獲取待修復(fù)的應(yīng)用當(dāng)前的應(yīng)用版本信息,以及該應(yīng)用當(dāng)前的已有補(bǔ)丁版本信息,基于上述獲取的信息從服務(wù)器下載修復(fù)補(bǔ)丁包,根據(jù)下載的修復(fù)補(bǔ)丁包以及已有補(bǔ)丁版本信息,確定修復(fù)的目標(biāo)方法,在應(yīng)用的運(yùn)行過程中,基于待修復(fù)補(bǔ)丁包和預(yù)設(shè)的修復(fù)框架,對上述目標(biāo)方法的調(diào)用進(jìn)行攔截及修改,以實(shí)現(xiàn)對應(yīng)用的修復(fù)。本發(fā)明獲取待修復(fù)的應(yīng)用的修復(fù)補(bǔ)丁包,通過預(yù)設(shè)的修復(fù)框架對應(yīng)用進(jìn)行方法級的修復(fù),在應(yīng)用的運(yùn)行過程中,對目標(biāo)方法的調(diào)用進(jìn)行攔截、修改即可,不需要下載新的安裝包,修復(fù)可以立即生效,不需要重新啟動應(yīng)用,即可正常使用,滿足了快速修復(fù)應(yīng)用bug的功能,簡化了修復(fù)流程,對于服務(wù)器來說,也不需要發(fā)布新的安裝包即可實(shí)現(xiàn)應(yīng)用的修復(fù),節(jié)約了成本。

附圖說明

圖1為實(shí)現(xiàn)本發(fā)明各個實(shí)施例的移動終端的硬件結(jié)構(gòu)示意圖;

圖2為如圖1所示的移動終端的無線通信裝置示意圖;

圖3為本發(fā)明應(yīng)用的熱修復(fù)裝置第一實(shí)施例的功能模塊示意圖;

圖4為本發(fā)明應(yīng)用的熱修復(fù)裝置第一實(shí)施例中的目標(biāo)方法修復(fù)示意圖;

圖5為本發(fā)明應(yīng)用的熱修復(fù)裝置第二實(shí)施例的功能模塊示意圖;

圖6為本發(fā)明應(yīng)用的熱修復(fù)方法第一實(shí)施例的流程圖。

本發(fā)明目的的實(shí)現(xiàn)、功能特點(diǎn)及優(yōu)點(diǎn)將結(jié)合實(shí)施例,參照附圖做進(jìn)一步說明。

具體實(shí)施方式

應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。

現(xiàn)在將參考附圖描述實(shí)現(xiàn)本發(fā)明各個實(shí)施例的移動終端。在后續(xù)的描述中,使用用于表示元件的諸如“模塊”、“部件”或“單元”的后綴僅為了有利于本發(fā)明的說明,其本身并沒有特定的意義。因此,“模塊”與“部件”可以混合地使用。

移動終端可以以各種形式來實(shí)施。例如,本發(fā)明中描述的終端可以包括諸如移動電話、智能電話、筆記本電腦、數(shù)字廣播接收器、pda(個人數(shù)字助理)、pad(平板電腦)、pmp(便攜式多媒體播放器)、導(dǎo)航裝置等等的移動終端以及諸如數(shù)字tv、臺式計算機(jī)等等的固定終端。下面,假設(shè)終端是移動終端。然而,本領(lǐng)域技術(shù)人員將理解的是,除了特別用于移動目的的元件之外,根據(jù)本發(fā)明的實(shí)施方式的構(gòu)造也能夠應(yīng)用于固定類型的終端。

圖1為實(shí)現(xiàn)本發(fā)明各個實(shí)施例的移動終端的硬件結(jié)構(gòu)示意。

移動終端100可以包括無線通信單元110、用戶輸入單元130、輸出單元150、存儲器160、接口單元170、控制器180和電源單元190等等。圖1示出了具有各種組件的移動終端,但是應(yīng)理解的是,并不要求實(shí)施所有示出的組件。可以替代地實(shí)施更多或更少的組件。將在下面詳細(xì)描述移動終端的元件。

無線通信單元110通常包括一個或多個組件,其允許移動終端100與無線通信裝置或網(wǎng)絡(luò)之間的無線電通信。例如,無線通信單元可以包括廣播接收模塊111、移動通信模塊112、無線互聯(lián)網(wǎng)模塊113、短程通信模塊114和位置信息模塊115中的至少一個。

廣播接收模塊111經(jīng)由廣播信道從外部廣播管理服務(wù)器接收廣播信號和/或廣播相關(guān)信息。廣播信道可以包括衛(wèi)星信道和/或地面信道。廣播管理服務(wù)器可以是生成并發(fā)送廣播信號和/或廣播相關(guān)信息的服務(wù)器或者接收之前生成的廣播信號和/或廣播相關(guān)信息并且將其發(fā)送給終端的服務(wù)器。廣播信號可以包括tv廣播信號、無線電廣播信號、數(shù)據(jù)廣播信號等等。而且,廣播信號可以進(jìn)一步包括與tv或無線電廣播信號組合的廣播信號。廣播相關(guān)信息也可以經(jīng)由移動通信網(wǎng)絡(luò)提供,并且在該情況下,廣播相關(guān)信息可以由移動通信模塊112來接收。廣播信號可以以各種形式存在,例如,其可以以數(shù)字多媒體廣播(dmb)的電子節(jié)目指南(epg)、數(shù)字視頻廣播手持(dvb-h)的電子服務(wù)指南(esg)等等的形式而存在。廣播接收模塊111可以通過使用各種類型的廣播裝置接收信號廣播。特別地,廣播接收模塊111可以通過使用諸如多媒體廣播-地面(dmb-t)、數(shù)字多媒體廣播-衛(wèi)星(dmb-s)、數(shù)字視頻廣播-手持(dvb-h),前向鏈路媒體(mediaflo@)的數(shù)據(jù)廣播裝置、地面數(shù)字廣播綜合服務(wù)(isdb-t)等等的數(shù)字廣播裝置接收數(shù)字廣播。廣播接收模塊111可以被構(gòu)造為適合提供廣播信號的各種廣播裝置以及上述數(shù)字廣播裝置。經(jīng)由廣播接收模塊111接收的廣播信號和/或廣播相關(guān)信息可以存儲在存儲器160(或者其它類型的存儲介質(zhì))中。

移動通信模塊112將無線電信號發(fā)送到基站(例如,接入點(diǎn)、節(jié)點(diǎn)b等等)、外部終端以及服務(wù)器中的至少一個和/或從其接收無線電信號。這樣的無線電信號可以包括語音通話信號、視頻通話信號、或者根據(jù)文本和/或多媒體消息發(fā)送和/或接收的各種類型的數(shù)據(jù)。

無線互聯(lián)網(wǎng)模塊113支持移動終端的無線互聯(lián)網(wǎng)接入。該模塊可以內(nèi)部或外部地耦接到終端。該模塊所涉及的無線互聯(lián)網(wǎng)接入技術(shù)可以包括wlan(無線lan)(wi-fi)、wibro(無線寬帶)、wimax(全球微波互聯(lián)接入)、hsdpa(高速下行鏈路分組接入)等等。

短程通信模塊114是用于支持短程通信的模塊。短程通信技術(shù)的一些示例包括藍(lán)牙tm、射頻識別(rfid)、紅外數(shù)據(jù)協(xié)會(irda)、超寬帶(uwb)、紫蜂tm等等。

位置信息模塊115是用于檢查或獲取移動終端的位置信息的模塊。位置信息模塊的典型示例是gps(全球定位裝置)。根據(jù)當(dāng)前的技術(shù),gps模塊115計算來自三個或更多衛(wèi)星的距離信息和準(zhǔn)確的時間信息并且對于計算的信息應(yīng)用三角測量法,從而根據(jù)經(jīng)度、緯度和高度準(zhǔn)確地計算三維當(dāng)前位置信息。當(dāng)前,用于計算位置和時間信息的方法使用三顆衛(wèi)星并且通過使用另外的一顆衛(wèi)星校正計算出的位置和時間信息的誤差。此外,gps模塊115能夠通過實(shí)時地連續(xù)計算當(dāng)前位置信息來計算速度信息。

用戶輸入單元130可以根據(jù)用戶輸入的命令生成鍵輸入數(shù)據(jù)以控制移動終端的各種操作。用戶輸入單元130允許用戶輸入各種類型的信息,并且可以包括鍵盤、鍋?zhàn)衅?、觸摸板(例如,檢測由于被接觸而導(dǎo)致的電阻、壓力、電容等等的變化的觸敏組件)、滾輪、搖桿等等。特別地,當(dāng)觸摸板以層的形式疊加在顯示單元151上時,可以形成觸摸屏。

接口單元170用作至少一個外部裝置與移動終端100連接可以通過的接口。例如,外部裝置可以包括有線或無線頭戴式耳機(jī)端口、外部電源(或電池充電器)端口、有線或無線數(shù)據(jù)端口、存儲卡端口、用于連接具有識別模塊的裝置的端口、音頻輸入/輸出(i/o)端口、視頻i/o端口、耳機(jī)端口等等。識別模塊可以是存儲用于驗證用戶使用移動終端100的各種信息并且可以包括用戶識別模塊(uim)、客戶識別模塊(sim)、通用客戶識別模塊(usim)等等。另外,具有識別模塊的裝置(下面稱為“識別裝置”)可以采取智能卡的形式,因此,識別裝置可以經(jīng)由端口或其它連接裝置與移動終端100連接。接口單元170可以用于接收來自外部裝置的輸入(例如,數(shù)據(jù)信息、電力等等)并且將接收到的輸入傳輸?shù)揭苿咏K端100內(nèi)的一個或多個元件或者可以用于在移動終端和外部裝置之間傳輸數(shù)據(jù)。

另外,當(dāng)移動終端100與外部底座連接時,接口單元170可以用作允許通過其將電力從底座提供到移動終端100的路徑或者可以用作允許從底座輸入的各種命令信號通過其傳輸?shù)揭苿咏K端的路徑。從底座輸入的各種命令信號或電力可以用作用于識別移動終端是否準(zhǔn)確地安裝在底座上的信號。輸出單元150被構(gòu)造為以視覺、音頻和/或觸覺方式提供輸出信號(例如,音頻信號、視頻信號、警報信號、振動信號等等)。輸出單元150可以包括顯示單元151、音頻輸出模塊152等等。

顯示單元151可以顯示在移動終端100中處理的信息。例如,當(dāng)移動終端100處于電話通話模式時,顯示單元151可以顯示與通話或其它通信(例如,文本消息收發(fā)、多媒體文件下載等等)相關(guān)的用戶界面(ui)或圖形用戶界面(gui)。當(dāng)移動終端100處于視頻通話模式或者圖像捕獲模式時,顯示單元151可以顯示捕獲的圖像和/或接收的圖像、示出視頻或圖像以及相關(guān)功能的ui或gui等等。

同時,當(dāng)顯示單元151和觸摸板以層的形式彼此疊加以形成觸摸屏?xí)r,顯示單元151可以用作輸入裝置和輸出裝置。顯示單元151可以包括液晶顯示器(lcd)、薄膜晶體管lcd(tft-lcd)、有機(jī)發(fā)光二極管(oled)顯示器、柔性顯示器、三維(3d)顯示器等等中的至少一種。這些顯示器中的一些可以被構(gòu)造為透明狀以允許用戶從外部觀看,這可以稱為透明顯示器,典型的透明顯示器可以例如為toled(透明有機(jī)發(fā)光二極管)顯示器等等。根據(jù)特定想要的實(shí)施方式,移動終端100可以包括兩個或更多顯示單元(或其它顯示裝置),例如,移動終端可以包括外部顯示單元(未示出)和內(nèi)部顯示單元(未示出)。觸摸屏可用于檢測觸摸輸入壓力以及觸摸輸入位置和觸摸輸入面積。

音頻輸出模塊152可以在移動終端處于呼叫信號接收模式、通話模式、記錄模式、語音識別模式、廣播接收模式等等模式下時,將無線通信單元110接收的或者在存儲器160中存儲的音頻數(shù)據(jù)轉(zhuǎn)換音頻信號并且輸出為聲音。而且,音頻輸出模塊152可以提供與移動終端100執(zhí)行的特定功能相關(guān)的音頻輸出(例如,呼叫信號接收聲音、消息接收聲音等等)。音頻輸出模塊152可以包括拾音器、蜂鳴器等等。

存儲器160可以存儲由控制器180執(zhí)行的處理和控制操作的軟件程序等等,或者可以暫時地存儲己經(jīng)輸出或?qū)⒁敵龅臄?shù)據(jù)(例如,電話簿、消息、靜態(tài)圖像、視頻等等)。而且,存儲器160可以存儲關(guān)于當(dāng)觸摸施加到觸摸屏?xí)r輸出的各種方式的振動和音頻信號的數(shù)據(jù)。

存儲器160可以包括至少一種類型的存儲介質(zhì),所述存儲介質(zhì)包括閃存、硬盤、多媒體卡、卡型存儲器(例如,sd或dx存儲器等等)、隨機(jī)訪問存儲器(ram)、靜態(tài)隨機(jī)訪問存儲器(sram)、只讀存儲器(rom)、電可擦除可編程只讀存儲器(eeprom)、可編程只讀存儲器(prom)、磁性存儲器、磁盤、光盤等等。而且,移動終端100可以與通過網(wǎng)絡(luò)連接執(zhí)行存儲器160的存儲功能的網(wǎng)絡(luò)存儲裝置協(xié)作。

控制器180通常控制移動終端的總體操作。例如,控制器180執(zhí)行與語音通話、數(shù)據(jù)通信、視頻通話等等相關(guān)的控制和處理。另外,控制器180可以包括用于再現(xiàn)(或回放)多媒體數(shù)據(jù)的多媒體模塊181,多媒體模塊181可以構(gòu)造在控制器180內(nèi),或者可以構(gòu)造為與控制器180分離??刂破?80可以執(zhí)行模式識別處理,以將在觸摸屏上執(zhí)行的手寫輸入或者圖片繪制輸入識別為字符或圖像。

電源單元190在控制器180的控制下接收外部電力或內(nèi)部電力并且提供操作各元件和組件所需的適當(dāng)?shù)碾娏Α?/p>

這里描述的各種實(shí)施方式可以以使用例如計算機(jī)軟件、硬件或其任何組合的計算機(jī)可讀介質(zhì)來實(shí)施。對于硬件實(shí)施,這里描述的實(shí)施方式可以通過使用特定用途集成電路(asic)、數(shù)字信號處理器(dsp)、數(shù)字信號處理裝置(dspd)、可編程邏輯裝置(pld)、現(xiàn)場可編程門陣列(fpga)、處理器、控制器、微控制器、微處理器、被設(shè)計為執(zhí)行這里描述的功能的電子單元中的至少一種來實(shí)施,在一些情況下,這樣的實(shí)施方式可以在控制器180中實(shí)施。對于軟件實(shí)施,諸如過程或功能的實(shí)施方式可以與允許執(zhí)行至少一種功能或操作的單獨(dú)的軟件模塊來實(shí)施。軟件代碼可以由以任何適當(dāng)?shù)木幊陶Z言編寫的軟件應(yīng)用程序(或程序)來實(shí)施,軟件代碼可以存儲在存儲器160中并且由控制器180執(zhí)行。

至此,己經(jīng)按照其功能描述了移動終端。下面,為了簡要起見,將描述諸如折疊型、直板型、擺動型、滑動型移動終端等等的各種類型的移動終端中的滑動型移動終端作為示例。因此,本發(fā)明能夠應(yīng)用于任何類型的移動終端,并且不限于滑動型移動終端。

如圖1中所示的移動終端100可以被構(gòu)造為利用經(jīng)由幀或分組發(fā)送數(shù)據(jù)的諸如有線和無線通信裝置以及基于衛(wèi)星的通信裝置來操作。

現(xiàn)在將參考圖2描述其中根據(jù)本發(fā)明的移動終端能夠操作的通信裝置。

這樣的通信裝置可以使用不同的空中接口和/或物理層。例如,由通信裝置使用的空中接口包括例如頻分多址(fdma)、時分多址(tdma)、碼分多址(cdma)和通用移動通信裝置(umts)(特別地,長期演進(jìn)(lte))、全球移動通信裝置(gsm)等等。作為非限制性示例,下面的描述涉及cdma通信裝置,但是這樣的教導(dǎo)同樣適用于其它類型的裝置。

參考圖2,cdma無線通信裝置可以包括多個移動終端100、多個基站(bs)270、基站控制器(bsc)275和移動交換中心(msc)280。msc280被構(gòu)造為與公共電話交換網(wǎng)絡(luò)(pstn)290形成接口。msc280還被構(gòu)造為與可以經(jīng)由回程線路耦接到基站270的bsc275形成接口。回程線路可以根據(jù)若干己知的接口中的任一種來構(gòu)造,所述接口包括例如e1/t1、atm,ip、ppp、幀中繼、hdsl、adsl或xdsl。將理解的是,如圖2中所示的裝置可以包括多個bsc2750。

每個bs270可以服務(wù)一個或多個分區(qū)(或區(qū)域),由多向天線或指向特定方向的天線覆蓋的每個分區(qū)放射狀地遠(yuǎn)離bs270。或者,每個分區(qū)可以由用于分集接收的兩個或更多天線覆蓋。每個bs270可以被構(gòu)造為支持多個頻率分配,并且每個頻率分配具有特定頻譜(例如,1.25mhz,5mhz等等)。

分區(qū)與頻率分配的交叉可以被稱為cdma信道。bs270也可以被稱為基站收發(fā)器子裝置(bts)或者其它等效術(shù)語。在這樣的情況下,術(shù)語"基站"可以用于籠統(tǒng)地表示單個bsc275和至少一個bs270?;疽部梢员环Q為"蜂窩站"?;蛘?,特定bs270的各分區(qū)可以被稱為多個蜂窩站。

如圖2中所示,廣播發(fā)射器(bt)295將廣播信號發(fā)送給在裝置內(nèi)操作的移動終端100。如圖1中所示的廣播接收模塊111被設(shè)置在移動終端100處以接收由bt295發(fā)送的廣播信號。在圖2中,示出了幾個全球定位裝置(gps)衛(wèi)星300。衛(wèi)星300幫助定位多個移動終端100中的至少一個。

在圖2中,描繪了多個衛(wèi)星300,但是可以理解的是,可以利用任何數(shù)目的衛(wèi)星獲得有用的定位信息。如圖1中所示的gps模塊115通常被構(gòu)造為與衛(wèi)星300配合以獲得想要的定位信息。替代gps跟蹤技術(shù)或者在gps跟蹤技術(shù)之外,可以使用可以跟蹤移動終端的位置的其它技術(shù)。另外,至少一個gps衛(wèi)星300可以選擇性地或者額外地處理衛(wèi)星dmb傳輸。

作為無線通信裝置的一個典型操作,bs270接收來自各種移動終端100的反向鏈路信號。移動終端100通常參與通話、消息收發(fā)和其它類型的通信。特定基站270接收的每個反向鏈路信號被在特定bs270內(nèi)進(jìn)行處理。獲得的數(shù)據(jù)被轉(zhuǎn)發(fā)給相關(guān)的bsc275。bsc提供通話資源分配和包括bs270之間的軟切換過程的協(xié)調(diào)的移動管理功能。bsc275還將接收到的數(shù)據(jù)路由到msc280,其提供用于與pstn290形成接口的額外的路由服務(wù)。類似地,pstn290與msc280形成接口,msc與bsc275形成接口,并且bsc275相應(yīng)地控制bs270以將正向鏈路信號發(fā)送到移動終端100。

基于上述移動終端硬件結(jié)構(gòu)、通信裝置的結(jié)構(gòu),提出本發(fā)明方法各個實(shí)施例。

本發(fā)明提供一種應(yīng)用的熱修復(fù)裝置。

參照圖3所示,為本發(fā)明應(yīng)用的熱修復(fù)裝置的第一實(shí)施例的示意圖。

在第一實(shí)施例中,該應(yīng)用的熱修復(fù)裝置包括:

獲取模塊10,用于獲取待修復(fù)的應(yīng)用當(dāng)前的應(yīng)用版本信息,以及所述應(yīng)用當(dāng)前的已有補(bǔ)丁版本信息。

下載模塊20,用于基于所述應(yīng)用版本信息以及已有補(bǔ)丁版本信息,從服務(wù)器下載待修復(fù)補(bǔ)丁包。

在本發(fā)明的實(shí)施例中,在服務(wù)器端對各個版本的應(yīng)用對應(yīng)版本的補(bǔ)丁包進(jìn)行維護(hù),可以根據(jù)對應(yīng)用中出現(xiàn)的bug發(fā)布補(bǔ)丁包,即patch包,并且,即使在發(fā)布補(bǔ)丁包之后,再次發(fā)現(xiàn)新的bug,也可以再次發(fā)布新的補(bǔ)丁包。可以實(shí)現(xiàn)在服務(wù)器中對補(bǔ)丁包的管理,不僅能夠?qū)δ硞€應(yīng)用追加新的補(bǔ)丁包,還可以撤銷發(fā)布過的補(bǔ)丁包。

本發(fā)明中的終端可以是手機(jī)、平板電腦等配置有智能操作系統(tǒng)的智能終端,如android系統(tǒng)。在本實(shí)施例中,可以在應(yīng)用啟動時,或者在檢測到應(yīng)用出現(xiàn)bug時,執(zhí)行步驟s10。獲取應(yīng)用當(dāng)前的應(yīng)用版本信息以及當(dāng)前的已有補(bǔ)丁版本信息。其中,應(yīng)用版本信息包括appversionname(androidmanifest中的版本名稱),即應(yīng)用的版本名稱,appversioncode(androidmanifest中的版本號),即應(yīng)用的版本號,packagename(應(yīng)用的包名稱);當(dāng)前的已有補(bǔ)丁版本信息包括patchversionname(補(bǔ)丁包版本名稱)和patchversioncode(補(bǔ)丁包版本號)。

在獲取到上述信息后,可以根據(jù)獲取到的上述信息從服務(wù)器下載待修復(fù)補(bǔ)丁包。具體地,作為一種實(shí)施方式,直接根據(jù)上述應(yīng)用版本信息以及已有補(bǔ)丁版本信息向服務(wù)器發(fā)送修復(fù)請求,服務(wù)器根據(jù)接收到的修復(fù)請求中的應(yīng)用版本信息以及已有補(bǔ)丁版本信息判斷是否有與該應(yīng)用當(dāng)前的版本適配的待修復(fù)的補(bǔ)丁包,即該待修復(fù)補(bǔ)丁包中包含有除了應(yīng)用當(dāng)前已有補(bǔ)丁之外,還具有新的補(bǔ)丁文件。若有,則直接將待修復(fù)補(bǔ)丁包發(fā)送給終端以供終端進(jìn)行應(yīng)用修復(fù)?;蛘?,在其他的實(shí)施方式中,根據(jù)獲取的應(yīng)用版本信息以及所述已有補(bǔ)丁版本信息向所述應(yīng)用服務(wù)器發(fā)送查詢請求;在接收到所述服務(wù)器基于所述查詢請求返回的應(yīng)答信息,并基于所述應(yīng)答信息判定當(dāng)前具有與所述應(yīng)用適配的待修復(fù)補(bǔ)丁包時,下載所述待修復(fù)補(bǔ)丁包。也就是說,在獲取到應(yīng)用版本信息以及已有補(bǔ)丁版本信息后,先向服務(wù)器發(fā)送查詢請求,接收服務(wù)器發(fā)送的應(yīng)答信息,根據(jù)應(yīng)答信息判斷服務(wù)器中是否有新的待修復(fù)補(bǔ)丁包,若有,則下載新的待修復(fù)補(bǔ)丁包。

例如,應(yīng)用第一次進(jìn)行修復(fù)時,下載的補(bǔ)丁包修復(fù)了應(yīng)用當(dāng)前的bug,但是隨著應(yīng)用的使用,又發(fā)現(xiàn)了其他3個bug,此時,服務(wù)器根據(jù)應(yīng)用的使用情況更新了新的待修復(fù)補(bǔ)丁包,這個補(bǔ)丁包就可以修復(fù)應(yīng)用目前已經(jīng)出現(xiàn)過的5個bug,此時,應(yīng)用將已經(jīng)安裝過的補(bǔ)丁版本信息以及應(yīng)用版本信息發(fā)送給服務(wù)器,服務(wù)器就可以判斷應(yīng)用目前已經(jīng)安裝的補(bǔ)丁情況,則可以判定當(dāng)前有新的3個適用于該應(yīng)用的補(bǔ)丁,因此,可以應(yīng)終端的修復(fù)請求,將上述新的待修復(fù)補(bǔ)丁包下發(fā)給終端,以供終端修復(fù)應(yīng)用。

確定模塊30,用于根據(jù)下載的待修復(fù)補(bǔ)丁包以及所述已有補(bǔ)丁版本信息,確定待修復(fù)的目標(biāo)方法;

修復(fù)模塊40,用于在所述應(yīng)用的運(yùn)行過程中,基于所述待修復(fù)補(bǔ)丁包以及預(yù)設(shè)的修復(fù)框架,對所述目標(biāo)方法的調(diào)用進(jìn)行攔截并修改處理,以實(shí)現(xiàn)對所述應(yīng)用的修復(fù)。。

本實(shí)施例中,在下載得到待修復(fù)補(bǔ)丁包中,根據(jù)待修復(fù)補(bǔ)丁包確定該應(yīng)用中需要修復(fù)的目標(biāo)方法,即出現(xiàn)bug、導(dǎo)致應(yīng)用的java邏輯執(zhí)行到該目標(biāo)方法時,就無法正常運(yùn)行的文件。

可選地,關(guān)于下載得到的待修復(fù)補(bǔ)丁包,為了補(bǔ)丁包中的補(bǔ)丁文件能夠正常的使用,需要對補(bǔ)丁包進(jìn)行解壓縮處理得到補(bǔ)丁文件,并且得到的補(bǔ)丁文件需要存放在該應(yīng)用的私有文件夾中。具體地,確定模塊30包括:

解壓縮單元,用于對下載的所述待修復(fù)補(bǔ)丁包進(jìn)行解壓縮處理,并將解壓縮得到的補(bǔ)丁文件存儲至所述應(yīng)用的私有文件夾中;

確定單元,用于基于所述私有文件中的所述補(bǔ)丁文件,以及所述已有補(bǔ)丁版本信息,確定待修復(fù)的目標(biāo)方法。

在本實(shí)施例中,還需要在應(yīng)用中預(yù)先配置預(yù)設(shè)的修復(fù)框架,當(dāng)解壓縮得到補(bǔ)丁文件之后,通過該補(bǔ)丁文件對應(yīng)用進(jìn)行修復(fù)時,需要基于上述修復(fù)框架,使用補(bǔ)丁文件對應(yīng)用進(jìn)行修復(fù)。

具體地,修復(fù)模塊40可以包括以下單元:

攔截單元,用于在所述應(yīng)用的運(yùn)行過程中,對所述應(yīng)用的系統(tǒng)調(diào)用信息進(jìn)行監(jiān)測,以在調(diào)用所述目標(biāo)方法之前,在應(yīng)用的native層對所述目標(biāo)方法的地址進(jìn)行攔截;

修改單元,用于基于所述補(bǔ)丁文件以及預(yù)設(shè)的修復(fù)框架,對所述目標(biāo)方法的執(zhí)行邏輯進(jìn)行修改,以實(shí)現(xiàn)對所述應(yīng)用的修復(fù)。

具體地,本實(shí)施例的裝置,主要通過nativehook的方式,對目標(biāo)方法進(jìn)行攔截并修改,其中,hook是一種api(applicationprogramminginterface,應(yīng)用程序編程接口)調(diào)用的攔截機(jī)制,能夠截獲正常的系統(tǒng)調(diào)用,對調(diào)用信息進(jìn)行修改,從而影響調(diào)用的過程或結(jié)果。在該實(shí)施例中,在在java邏輯執(zhí)行到目標(biāo)方法前在native層對目標(biāo)方法的內(nèi)存地址實(shí)施攔截,以修改原始的代碼邏輯,注入補(bǔ)丁包中的新的需要執(zhí)行到的代碼,以實(shí)現(xiàn)對目標(biāo)方法中的補(bǔ)光的修復(fù)。例如,參照圖4所示,當(dāng)應(yīng)用的類文件a.class中的func2方法出現(xiàn)bug時,使用補(bǔ)丁包中的b.class中的fun2’方法來對func2方法加以替換(replace),實(shí)現(xiàn)對a.class的修復(fù)。

具體的操作流程如下:

獲取a.class中的func2方法的數(shù)據(jù)結(jié)構(gòu)的底層實(shí)現(xiàn)代碼,例如:

使用b.class中的fun2’方法來對func2方法中地址實(shí)行攔截并替換:

通過上述方式,在應(yīng)用對目標(biāo)方法進(jìn)行調(diào)用時,對其進(jìn)行攔截,采用補(bǔ)丁包中的新的目標(biāo)方法替換修的方法地址,實(shí)現(xiàn)對目標(biāo)方法的修復(fù)。

本實(shí)施例提出的應(yīng)用的熱修復(fù)裝置,獲取待修復(fù)的應(yīng)用當(dāng)前的應(yīng)用版本信息,以及該應(yīng)用當(dāng)前的已有補(bǔ)丁版本信息,基于上述獲取的信息從服務(wù)器下載修復(fù)補(bǔ)丁包,根據(jù)下載的修復(fù)補(bǔ)丁包以及已有補(bǔ)丁版本信息,確定修復(fù)的目標(biāo)方法,在應(yīng)用的運(yùn)行過程中,基于待修復(fù)補(bǔ)丁包和預(yù)設(shè)的修復(fù)框架,對上述目標(biāo)方法的調(diào)用進(jìn)行攔截及修改,以實(shí)現(xiàn)對應(yīng)用的修復(fù)。本發(fā)明獲取待修復(fù)的應(yīng)用的修復(fù)補(bǔ)丁包,通過預(yù)設(shè)的修復(fù)框架對應(yīng)用進(jìn)行方法級的修復(fù),在應(yīng)用的運(yùn)行過程中,對目標(biāo)方法的調(diào)用進(jìn)行攔截、修改即可,不需要下載新的安裝包,修復(fù)可以立即生效,不需要重新啟動應(yīng)用,即可正常使用,滿足了快速修復(fù)應(yīng)用bug的功能,簡化了修復(fù)流程,對于服務(wù)器來說,也不需要發(fā)布新的安裝包即可實(shí)現(xiàn)應(yīng)用的修復(fù),節(jié)約了成本。

參照圖5所示,基于本發(fā)明應(yīng)用的熱修復(fù)裝置的第一實(shí)施例提出本發(fā)明應(yīng)用的熱修復(fù)裝置的第二實(shí)施例。在本實(shí)施例中,所述裝置與第一實(shí)施例的區(qū)別在于,應(yīng)用的熱修復(fù)裝置還包括校驗?zāi)K50和上報模塊60,其中:

校驗?zāi)K50用于:對所述待修復(fù)補(bǔ)丁包進(jìn)行有效性校驗;

上報模塊60用于:若校驗通過,則向所述服務(wù)器上報下載成功的狀態(tài)信息;

確定模塊30還用于:在所述上報模塊向所述服務(wù)器上報下載成功的狀態(tài)信息后,根據(jù)下載的待修復(fù)補(bǔ)丁包以及所述已有補(bǔ)丁版本信息,確定待修復(fù)的目標(biāo)方法;

上報模塊60還用于:若校驗失敗,則向所述服務(wù)器上報補(bǔ)丁包無效的狀態(tài)信息。

在下載得到待修復(fù)補(bǔ)丁包后,對該補(bǔ)丁包進(jìn)行有效性校驗,例如通過md5校驗的方式,以檢測該補(bǔ)丁包是否在傳輸過程中被修改,以保證應(yīng)用的安全性,過校驗通過,則認(rèn)為該補(bǔ)丁包為有效補(bǔ)丁包,向服務(wù)器上報下載成功的狀態(tài)消息,若校驗失敗,則認(rèn)為該補(bǔ)丁包為無效補(bǔ)丁包,則不再繼續(xù)使用該補(bǔ)丁包進(jìn)行修復(fù),并向服務(wù)器上報補(bǔ)丁包無效的狀態(tài)信息。以便于服務(wù)器端收集待修復(fù)補(bǔ)丁包的下載情況,便于對該應(yīng)用的用戶群對該應(yīng)用的修復(fù)情況進(jìn)行統(tǒng)計,進(jìn)而對該應(yīng)用的修復(fù)補(bǔ)丁包進(jìn)行更好的維護(hù)。

進(jìn)一步地,作為一種實(shí)施方式,上報模塊60用于:將應(yīng)用的修復(fù)結(jié)果上報至服務(wù)器,以供服務(wù)器對應(yīng)用的修復(fù)成功率進(jìn)行統(tǒng)計,以便于更好地對修復(fù)補(bǔ)丁包進(jìn)行維護(hù)。此外,如果下載補(bǔ)丁包失敗,上報模塊60也可以也向服務(wù)器發(fā)送下載失敗的狀態(tài)信息,例如,當(dāng)前的通信狀態(tài)不好,無法正常下載等愿意導(dǎo)致下載失敗。

本實(shí)施例提出的裝置通過對補(bǔ)丁包進(jìn)行有效性檢驗,以提高應(yīng)用修復(fù)的安全性,并且及時地向服務(wù)器上報安裝包的是否有效的狀態(tài)信息,以便于服務(wù)端對補(bǔ)丁包進(jìn)行更好的維護(hù),進(jìn)而提高應(yīng)用修復(fù)的成功率。

本發(fā)明還提出一種應(yīng)用的熱修復(fù)方法。

參照圖6所示,為本發(fā)明應(yīng)用的熱修復(fù)方法第一實(shí)施例的流程圖。

在第一實(shí)施例中,該應(yīng)用的熱修復(fù)方法包括:

步驟s10,獲取待修復(fù)的應(yīng)用當(dāng)前的應(yīng)用版本信息,以及所述應(yīng)用當(dāng)前的已有補(bǔ)丁版本信息。

步驟s20,基于所述應(yīng)用版本信息以及已有補(bǔ)丁版本信息,從服務(wù)器下載待修復(fù)補(bǔ)丁包。

在本發(fā)明的實(shí)施例中,在服務(wù)器端對各個版本的應(yīng)用對應(yīng)版本的補(bǔ)丁包進(jìn)行維護(hù),可以根據(jù)對應(yīng)用中出現(xiàn)的bug發(fā)布補(bǔ)丁包,即patch包,并且,即使在發(fā)布補(bǔ)丁包之后,再次發(fā)現(xiàn)新的bug,也可以再次發(fā)布新的補(bǔ)丁包。可以實(shí)現(xiàn)在服務(wù)器中對補(bǔ)丁包的管理,不僅能夠?qū)δ硞€應(yīng)用追加新的補(bǔ)丁包,還可以撤銷發(fā)布過的補(bǔ)丁包。

本發(fā)明中的終端可以是手機(jī)、平板電腦等配置有智能操作系統(tǒng)的智能終端,如android系統(tǒng)。在本實(shí)施例中,可以在應(yīng)用啟動時,或者在檢測到應(yīng)用出現(xiàn)bug時,執(zhí)行步驟s10。獲取應(yīng)用當(dāng)前的應(yīng)用版本信息以及當(dāng)前的已有補(bǔ)丁版本信息。其中,應(yīng)用版本信息包括appversionname(androidmanifest中的版本名稱),即應(yīng)用的版本名稱,appversioncode(androidmanifest中的版本號),即應(yīng)用的版本號,packagename(應(yīng)用的包名稱);當(dāng)前的已有補(bǔ)丁版本信息包括patchversionname(補(bǔ)丁包版本名稱)和patchversioncode(補(bǔ)丁包版本號)。

在獲取到上述信息后,可以根據(jù)獲取到的上述信息從服務(wù)器下載待修復(fù)補(bǔ)丁包。具體地,作為一種實(shí)施方式,直接根據(jù)上述應(yīng)用版本信息以及已有補(bǔ)丁版本信息向服務(wù)器發(fā)送修復(fù)請求,服務(wù)器根據(jù)接收到的修復(fù)請求中的應(yīng)用版本信息以及已有補(bǔ)丁版本信息判斷是否有與該應(yīng)用當(dāng)前的版本適配的待修復(fù)的補(bǔ)丁包,即該待修復(fù)補(bǔ)丁包中包含有除了應(yīng)用當(dāng)前已有補(bǔ)丁之外,還具有新的補(bǔ)丁文件。若有,則直接將待修復(fù)補(bǔ)丁包發(fā)送給終端以供終端進(jìn)行應(yīng)用修復(fù)?;蛘撸谄渌膶?shí)施方式中,根據(jù)獲取的應(yīng)用版本信息以及所述已有補(bǔ)丁版本信息向所述應(yīng)用服務(wù)器發(fā)送查詢請求;在接收到所述服務(wù)器基于所述查詢請求返回的應(yīng)答信息,并基于所述應(yīng)答信息判定當(dāng)前具有與所述應(yīng)用適配的待修復(fù)補(bǔ)丁包時,下載所述待修復(fù)補(bǔ)丁包。也就是說,在獲取到應(yīng)用版本信息以及已有補(bǔ)丁版本信息后,先向服務(wù)器發(fā)送查詢請求,接收服務(wù)器發(fā)送的應(yīng)答信息,根據(jù)應(yīng)答信息判斷服務(wù)器中是否有新的待修復(fù)補(bǔ)丁包,若有,則下載新的待修復(fù)補(bǔ)丁包。

例如,應(yīng)用第一次進(jìn)行修復(fù)時,下載的補(bǔ)丁包修復(fù)了應(yīng)用當(dāng)前的bug,但是隨著應(yīng)用的使用,又發(fā)現(xiàn)了其他3個bug,此時,服務(wù)器根據(jù)應(yīng)用的使用情況更新了新的待修復(fù)補(bǔ)丁包,這個補(bǔ)丁包就可以修復(fù)應(yīng)用目前已經(jīng)出現(xiàn)過的5個bug,此時,應(yīng)用將已經(jīng)安裝過的補(bǔ)丁版本信息以及應(yīng)用版本信息發(fā)送給服務(wù)器,服務(wù)器就可以判斷應(yīng)用目前已經(jīng)安裝的補(bǔ)丁情況,則可以判定當(dāng)前有新的3個適用于該應(yīng)用的補(bǔ)丁,因此,可以應(yīng)終端的修復(fù)請求,將上述新的待修復(fù)補(bǔ)丁包下發(fā)給終端,以供終端修復(fù)應(yīng)用。

步驟s30,根據(jù)下載的待修復(fù)補(bǔ)丁包以及所述已有補(bǔ)丁版本信息,確定待修復(fù)的目標(biāo)方法。

步驟s40,在所述應(yīng)用的運(yùn)行過程中,基于所述待修復(fù)補(bǔ)丁包以及預(yù)設(shè)的修復(fù)框架,對所述目標(biāo)方法的調(diào)用進(jìn)行攔截并修改處理,以實(shí)現(xiàn)對所述應(yīng)用的修復(fù)。

本實(shí)施例中,在下載得到待修復(fù)補(bǔ)丁包中,根據(jù)待修復(fù)補(bǔ)丁包確定該應(yīng)用中需要修復(fù)的目標(biāo)方法,即出現(xiàn)bug、導(dǎo)致應(yīng)用的java邏輯執(zhí)行到該目標(biāo)方法時,就無法正常運(yùn)行的文件。

可選地,關(guān)于下載得到的待修復(fù)補(bǔ)丁包,為了補(bǔ)丁包中的補(bǔ)丁文件能夠正常的使用,需要對補(bǔ)丁包進(jìn)行解壓縮處理得到補(bǔ)丁文件,并且得到的補(bǔ)丁文件需要存放在該應(yīng)用的私有文件夾中。具體地,對下載的所述待修復(fù)補(bǔ)丁包進(jìn)行解壓縮處理,并將解壓縮得到的補(bǔ)丁文件存儲至所述應(yīng)用的私有文件夾中;基于所述私有文件中的所述補(bǔ)丁文件,以及所述已有補(bǔ)丁版本信息,確定待修復(fù)的目標(biāo)方法。

在本實(shí)施例中,還需要在應(yīng)用中預(yù)先配置預(yù)設(shè)的修復(fù)框架,當(dāng)解壓縮得到補(bǔ)丁文件之后,通過該補(bǔ)丁文件對應(yīng)用進(jìn)行修復(fù)時,需要基于上述修復(fù)框架,使用補(bǔ)丁文件對應(yīng)用進(jìn)行修復(fù)。

在確定待修復(fù)的目標(biāo)方法之后,在所述應(yīng)用的運(yùn)行過程中,對所述應(yīng)用的系統(tǒng)調(diào)用信息進(jìn)行監(jiān)測,以在調(diào)用所述目標(biāo)方法之前,在應(yīng)用的native層對所述目標(biāo)方法的地址進(jìn)行攔截;基于所述補(bǔ)丁文件以及預(yù)設(shè)的修復(fù)框架,對所述目標(biāo)方法的執(zhí)行邏輯進(jìn)行修改,以實(shí)現(xiàn)對所述應(yīng)用的修復(fù)。

本實(shí)施例的方法,主要通過nativehook的方式,對目標(biāo)方法進(jìn)行攔截并修改,其中,hook是一種api(applicationprogramminginterface,應(yīng)用程序編程接口)調(diào)用的攔截機(jī)制,能夠截獲正常的系統(tǒng)調(diào)用,對調(diào)用信息進(jìn)行修改,從而影響調(diào)用的過程或結(jié)果。在該實(shí)施例中,在在java邏輯執(zhí)行到目標(biāo)方法前在native層對目標(biāo)方法的內(nèi)存地址實(shí)施攔截,以修改原始的代碼邏輯,注入補(bǔ)丁包中的新的需要執(zhí)行到的代碼,以實(shí)現(xiàn)對目標(biāo)方法中的補(bǔ)光的修復(fù)。例如,參照圖4所示,當(dāng)應(yīng)用的類文件a.class中的func2方法出現(xiàn)bug時,使用補(bǔ)丁包中的b.class中的fun2’方法來對func2方法加以替換(replace),實(shí)現(xiàn)對a.class的修復(fù)。

具體的操作流程如下:

獲取a.class中的func2方法的數(shù)據(jù)結(jié)構(gòu)的底層實(shí)現(xiàn)代碼,例如:

使用b.class中的fun2’方法來對func2方法中地址實(shí)行攔截并替換:

通過上述方式,在應(yīng)用對目標(biāo)方法進(jìn)行調(diào)用時,對其進(jìn)行攔截,采用補(bǔ)丁包中的新的目標(biāo)方法替換修的方法地址,實(shí)現(xiàn)對目標(biāo)方法的修復(fù)。

本實(shí)施例提出的應(yīng)用的熱修復(fù)方法,獲取待修復(fù)的應(yīng)用當(dāng)前的應(yīng)用版本信息,以及該應(yīng)用當(dāng)前的已有補(bǔ)丁版本信息,基于上述獲取的信息從服務(wù)器下載修復(fù)補(bǔ)丁包,根據(jù)下載的修復(fù)補(bǔ)丁包以及已有補(bǔ)丁版本信息,確定修復(fù)的目標(biāo)方法,在應(yīng)用的運(yùn)行過程中,基于待修復(fù)補(bǔ)丁包和預(yù)設(shè)的修復(fù)框架,對上述目標(biāo)方法的調(diào)用進(jìn)行攔截及修改,以實(shí)現(xiàn)對應(yīng)用的修復(fù)。本發(fā)明獲取待修復(fù)的應(yīng)用的修復(fù)補(bǔ)丁包,通過預(yù)設(shè)的修復(fù)框架對應(yīng)用進(jìn)行方法級的修復(fù),在應(yīng)用的運(yùn)行過程中,對目標(biāo)方法的調(diào)用進(jìn)行攔截、修改即可,不需要下載新的安裝包,修復(fù)可以立即生效,不需要重新啟動應(yīng)用,即可正常使用,滿足了快速修復(fù)應(yīng)用bug的功能,簡化了修復(fù)流程,對于服務(wù)器來說,也不需要發(fā)布新的安裝包即可實(shí)現(xiàn)應(yīng)用的修復(fù),節(jié)約了成本。

基于本發(fā)明應(yīng)用的熱修復(fù)方法的第一實(shí)施例提出本發(fā)明應(yīng)用的熱修復(fù)方法的第二實(shí)施例。在本實(shí)施例中,所述方法與第一實(shí)施例的區(qū)別在于,在步驟s20之后、步驟s30之前,該應(yīng)用的熱修復(fù)方法還包括:

對所述待修復(fù)補(bǔ)丁包進(jìn)行有效性校驗;

若校驗通過,則向所述服務(wù)器上報下載成功的狀態(tài)信息,并執(zhí)行步驟s30;

若校驗失敗,則向所述服務(wù)器上報補(bǔ)丁包無效的狀態(tài)信息。

在下載得到待修復(fù)補(bǔ)丁包后,對該補(bǔ)丁包進(jìn)行有效性校驗,例如通過md5校驗的方式,以檢測該補(bǔ)丁包是否在傳輸過程中被修改,以保證應(yīng)用的安全性,過校驗通過,則認(rèn)為該補(bǔ)丁包為有效補(bǔ)丁包,向服務(wù)器上報下載成功的狀態(tài)消息,若校驗失敗,則認(rèn)為該補(bǔ)丁包為無效補(bǔ)丁包,則不再繼續(xù)使用該補(bǔ)丁包進(jìn)行修復(fù),并向服務(wù)器上報補(bǔ)丁包無效的狀態(tài)信息。以便于服務(wù)器端收集待修復(fù)補(bǔ)丁包的下載情況,便于對該應(yīng)用的用戶群對該應(yīng)用的修復(fù)情況進(jìn)行統(tǒng)計,進(jìn)而對該應(yīng)用的修復(fù)補(bǔ)丁包進(jìn)行更好的維護(hù)。

進(jìn)一步地,作為一種實(shí)施方式,在步驟s40之后,該方法還包括步驟:

將應(yīng)用的修復(fù)結(jié)果上報至服務(wù)器,以供服務(wù)器對應(yīng)用的修復(fù)成功率進(jìn)行統(tǒng)計,以便于更好地對修復(fù)補(bǔ)丁包進(jìn)行維護(hù)。此外,在步驟s20之后,如果下載補(bǔ)丁包失敗,也向服務(wù)器發(fā)送下載失敗的狀態(tài)信息,例如,當(dāng)前的通信狀態(tài)不好,無法正常下載等愿意導(dǎo)致下載失敗。

本實(shí)施例提出的方法通過對補(bǔ)丁包進(jìn)行有效性檢驗,以提高應(yīng)用修復(fù)的安全性,并且及時地向服務(wù)器上報安裝包的是否有效的狀態(tài)信息,以便于服務(wù)端對補(bǔ)丁包進(jìn)行更好的維護(hù),進(jìn)而提高應(yīng)用修復(fù)的成功率。

需要說明的是,在本文中,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者裝置不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者裝置所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括該要素的過程、方法、物品或者裝置中還存在另外的相同要素。

通過以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到上述實(shí)施例方法可借助軟件加必需的通用硬件平臺的方式來實(shí)現(xiàn),當(dāng)然也可以通過硬件,但很多情況下前者是更佳的實(shí)施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機(jī)軟件產(chǎn)品存儲在一個存儲介質(zhì)(如rom/ram、磁碟、光盤)中,包括若干指令用以使得一臺終端設(shè)備(可以是手機(jī),計算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實(shí)施例所述的方法。

以上僅為本發(fā)明的優(yōu)選實(shí)施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運(yùn)用在其他相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護(hù)范圍內(nèi)。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
武威市| 荃湾区| 盐津县| 平陆县| 卫辉市| 门头沟区| 改则县| 尉犁县| 长沙县| 商都县| 阳高县| 永善县| 连山| 浑源县| 礼泉县| 满城县| 甘孜县| 南皮县| 永善县| 武川县| 玉环县| 明光市| 峨眉山市| 德清县| 浦北县| 富蕴县| 交口县| 宽甸| 尚义县| 唐山市| 涞源县| 桐柏县| 清水河县| 临沧市| 河东区| 浑源县| 黎城县| 灵山县| 辽阳市| 五家渠市| 泾川县|