亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

移動(dòng)終端及應(yīng)用修復(fù)方法與流程

文檔序號(hào):11729188閱讀:210來(lái)源:國(guó)知局
移動(dòng)終端及應(yīng)用修復(fù)方法與流程
本發(fā)明涉及移動(dòng)終端
技術(shù)領(lǐng)域
,具體涉及一種移動(dòng)終端及應(yīng)用修復(fù)方法。
背景技術(shù)
:當(dāng)一個(gè)應(yīng)用發(fā)布之后,突然發(fā)現(xiàn)一個(gè)嚴(yán)重問(wèn)題需要緊急修復(fù)時(shí),按照常規(guī)的做法:應(yīng)用開(kāi)發(fā)商需要對(duì)該應(yīng)用進(jìn)行修復(fù),重新打包應(yīng)用,對(duì)應(yīng)用包進(jìn)行測(cè)試,并在測(cè)試通過(guò)后向各個(gè)應(yīng)用市場(chǎng)和渠道換包,提示用戶(hù)升級(jí),提示用戶(hù)下載修復(fù)后的應(yīng)用包,然后對(duì)已安裝出現(xiàn)問(wèn)題的應(yīng)用進(jìn)行覆蓋安裝。然而,當(dāng)解決這個(gè)問(wèn)題所需要修改的代碼量很小時(shí),也同樣要付出巨大的成本進(jìn)行換包和重新發(fā)布。而且,當(dāng)應(yīng)用開(kāi)發(fā)商發(fā)布修復(fù)問(wèn)題之后的升級(jí)應(yīng)用包后,用戶(hù)也不一定會(huì)馬上升級(jí)到新版本的應(yīng)用??梢钥闯?,現(xiàn)有技術(shù)中存在應(yīng)用修復(fù)效率較低的問(wèn)題。技術(shù)實(shí)現(xiàn)要素:本發(fā)明提供一種移動(dòng)終端及應(yīng)用修復(fù)方法,旨在提高應(yīng)用的修復(fù)效率。為實(shí)現(xiàn)上述發(fā)明目的,本發(fā)明提供一種移動(dòng)終端,該移動(dòng)終端包括:第一獲取模塊,用于在啟動(dòng)待修復(fù)應(yīng)用時(shí),獲取對(duì)應(yīng)所述待修復(fù)應(yīng)用的補(bǔ)丁包,所述補(bǔ)丁包包括唯一可執(zhí)行文件,所述唯一可執(zhí)行文件攜帶所述待修復(fù)應(yīng)用發(fā)生錯(cuò)誤的類(lèi)所對(duì)應(yīng)的修復(fù)后的正確類(lèi);第二獲取模塊,用于獲取對(duì)應(yīng)所述待修復(fù)應(yīng)用各可執(zhí)行文件的第一數(shù)組,并構(gòu)造對(duì)應(yīng)所述唯一可執(zhí)行文件的第二數(shù)組;修復(fù)模塊,用于將所述第一數(shù)組與第二數(shù)組合并為一個(gè)數(shù)組,并將所述唯一可執(zhí)行文件作為合并后數(shù)組的第一個(gè)可執(zhí)行文件,以供加載??蛇x地,所述移動(dòng)終端還包括校驗(yàn)?zāi)K,用于對(duì)獲取的所述補(bǔ)丁包進(jìn)行安全校驗(yàn);所述第二獲取模塊還用于在安全校驗(yàn)通過(guò)后,獲取對(duì)應(yīng)所述待修復(fù)應(yīng)用各可執(zhí)行文件的第一數(shù)組,并構(gòu)造對(duì)應(yīng)所述唯一可執(zhí)行文件的第二數(shù)組??蛇x地,所述校驗(yàn)?zāi)K還用于采用約定的消息摘要算法計(jì)算所述唯一可執(zhí)行文件的消息摘要;還用于將計(jì)算得到的消息摘要與所述補(bǔ)丁包攜帶的消息摘要進(jìn)行比對(duì),其中,在二者比對(duì)一致時(shí),確定所述補(bǔ)丁包通過(guò)安全校驗(yàn)??蛇x地,所述第一獲取模塊還用于發(fā)送補(bǔ)丁包獲取請(qǐng)求至預(yù)設(shè)服務(wù)器,所述補(bǔ)丁包獲取請(qǐng)求包括所述待修復(fù)應(yīng)用的版本信息以及已安裝補(bǔ)丁包的版本信息;還用于接收所述預(yù)設(shè)服務(wù)器基于所述補(bǔ)丁包獲取請(qǐng)求返回的對(duì)應(yīng)所述待修復(fù)應(yīng)用的最新版本的補(bǔ)丁包??蛇x地,所述修復(fù)模塊還用于在偵測(cè)到所述待修復(fù)應(yīng)用運(yùn)行錯(cuò)誤時(shí),確定所述待修復(fù)應(yīng)用發(fā)生錯(cuò)誤的類(lèi);還用于將確定的類(lèi)信息上傳至所述預(yù)設(shè)服務(wù)器,以供其他終端在基于所述類(lèi)信息修復(fù)發(fā)生錯(cuò)誤的類(lèi)之后,將修復(fù)后的正確類(lèi)打包為可執(zhí)行文件,并生成對(duì)應(yīng)的補(bǔ)丁包上傳至所述預(yù)設(shè)服務(wù)器。此外,為實(shí)現(xiàn)上述發(fā)明目的,本發(fā)明還提供一種應(yīng)用修復(fù)方法,該應(yīng)用修復(fù)方法包括:在啟動(dòng)待修復(fù)應(yīng)用時(shí),獲取對(duì)應(yīng)所述待修復(fù)應(yīng)用的補(bǔ)丁包,所述補(bǔ)丁包包括唯一可執(zhí)行文件,所述唯一可執(zhí)行文件攜帶所述待修復(fù)應(yīng)用發(fā)生錯(cuò)誤的類(lèi)所對(duì)應(yīng)的修復(fù)后的正確類(lèi);獲取對(duì)應(yīng)所述待修復(fù)應(yīng)用各可執(zhí)行文件的第一數(shù)組,并構(gòu)造對(duì)應(yīng)所述唯一可執(zhí)行文件的第二數(shù)組;將所述第一數(shù)組與第二數(shù)組合并為一個(gè)數(shù)組,并將所述唯一可執(zhí)行文件作為合并后數(shù)組的第一個(gè)可執(zhí)行文件,以供加載??蛇x地,所述獲取對(duì)應(yīng)所述待修復(fù)應(yīng)用各可執(zhí)行文件的第一數(shù)組,并構(gòu)造對(duì)應(yīng)所述唯一可執(zhí)行文件的第二數(shù)組的步驟之前,還包括:對(duì)獲取的所述補(bǔ)丁包進(jìn)行安全校驗(yàn);在安全校驗(yàn)通過(guò)后,執(zhí)行所述獲取對(duì)應(yīng)所述待修復(fù)應(yīng)用各可執(zhí)行文件的第一數(shù)組,并構(gòu)造對(duì)應(yīng)所述唯一可執(zhí)行文件的第二數(shù)組的步驟。可選地,所述對(duì)獲取的所述補(bǔ)丁包進(jìn)行安全校驗(yàn)的步驟包括:采用約定的消息摘要算法計(jì)算所述唯一可執(zhí)行文件的消息摘要;將計(jì)算得到的消息摘要與所述補(bǔ)丁包攜帶的消息摘要進(jìn)行比對(duì),其中,在二者比對(duì)一致時(shí),確定所述補(bǔ)丁包通過(guò)安全校驗(yàn)??蛇x地,所述獲取對(duì)應(yīng)所述待修復(fù)應(yīng)用的補(bǔ)丁包的步驟包括:發(fā)送補(bǔ)丁包獲取請(qǐng)求至預(yù)設(shè)服務(wù)器,所述補(bǔ)丁包獲取請(qǐng)求包括所述待修復(fù)應(yīng)用的版本信息以及已安裝補(bǔ)丁包的版本信息;接收所述預(yù)設(shè)服務(wù)器基于所述補(bǔ)丁包獲取請(qǐng)求返回的對(duì)應(yīng)所述待修復(fù)應(yīng)用的最新版本的補(bǔ)丁包。可選地,所述在啟動(dòng)待修復(fù)應(yīng)用時(shí),獲取對(duì)應(yīng)所述待修復(fù)應(yīng)用的補(bǔ)丁包的步驟之前,還包括:在偵測(cè)到所述待修復(fù)應(yīng)用運(yùn)行錯(cuò)誤時(shí),確定所述待修復(fù)應(yīng)用發(fā)生錯(cuò)誤的類(lèi);將確定的類(lèi)信息上傳至所述預(yù)設(shè)服務(wù)器,以供其他終端在基于所述類(lèi)信息修復(fù)發(fā)生錯(cuò)誤的類(lèi)之后,將修復(fù)后的正確類(lèi)打包為可執(zhí)行文件,并生成對(duì)應(yīng)的補(bǔ)丁包上傳至所述預(yù)設(shè)服務(wù)器。本發(fā)明提出的移動(dòng)終端及應(yīng)用修復(fù)方法,通過(guò)在啟動(dòng)待修復(fù)應(yīng)用時(shí),獲取到對(duì)應(yīng)待修復(fù)應(yīng)用的補(bǔ)丁包,進(jìn)而構(gòu)造與補(bǔ)丁包攜帶唯一可執(zhí)行文件對(duì)應(yīng)的第二數(shù)組,并將該第二數(shù)組與對(duì)應(yīng)待修復(fù)應(yīng)用各可執(zhí)行文件的第一數(shù)組合并為一個(gè)數(shù)組,將前述唯一可執(zhí)行文件作為合并后數(shù)組的第一個(gè)可執(zhí)行文件,從而在加載類(lèi)文件時(shí),首先加載前述唯一可執(zhí)行文件攜帶的待修復(fù)應(yīng)用發(fā)生錯(cuò)誤的類(lèi)所對(duì)應(yīng)的修復(fù)后的正確類(lèi),而不加載錯(cuò)誤類(lèi),避免了現(xiàn)有技術(shù)在應(yīng)用運(yùn)行錯(cuò)誤時(shí)需要按照新版本的應(yīng)用才能修復(fù)錯(cuò)誤,又不會(huì)中斷用戶(hù)使用應(yīng)用,實(shí)現(xiàn)了應(yīng)用的高效修復(fù)。附圖說(shuō)明圖1為實(shí)現(xiàn)本發(fā)明各個(gè)實(shí)施例的一個(gè)移動(dòng)終端的硬件結(jié)構(gòu)示意圖;圖2為本發(fā)明移動(dòng)終端第一實(shí)施例的模塊示意圖;圖3為本發(fā)明移動(dòng)終端第一實(shí)施例中對(duì)應(yīng)用包進(jìn)行分包的示例圖;圖4為本發(fā)明移動(dòng)終端第一實(shí)施例中待修復(fù)應(yīng)用以及補(bǔ)丁包的結(jié)構(gòu)示意圖;圖5為本發(fā)明移動(dòng)終端第一實(shí)施例中第一數(shù)組的結(jié)構(gòu)示意圖;圖6為本發(fā)明移動(dòng)終端第一實(shí)施例中第二數(shù)組的結(jié)構(gòu)示意圖;圖7為本發(fā)明移動(dòng)終端第一實(shí)施例中合并后數(shù)組的結(jié)構(gòu)示意圖;圖8為本發(fā)明移動(dòng)終端第一實(shí)施例中類(lèi)替換的實(shí)現(xiàn)原理示意圖;圖9為本發(fā)明移動(dòng)終端第一實(shí)施例中的應(yīng)用熱修復(fù)架構(gòu)示意圖;圖10本發(fā)明為本發(fā)明應(yīng)用修復(fù)方法第一實(shí)施例的流程示意圖。具體實(shí)施方式應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。需要說(shuō)明的是,在不沖突的情況下,本發(fā)明中的實(shí)施例及實(shí)施例中的特征可以相互任意結(jié)合?,F(xiàn)在將參考附圖描述實(shí)現(xiàn)本發(fā)明各個(gè)實(shí)施例的移動(dòng)終端。在后續(xù)的描述中,使用用于表示元件的諸如“模塊”、“部件”或“單元”的后綴僅為了有利于本發(fā)明的說(shuō)明,其本身并沒(méi)有特定的意義。因此,"模塊"與"部件"可以混合地使用。移動(dòng)終端可以以各種形式來(lái)實(shí)施。例如,本發(fā)明中描述的移動(dòng)終端可以包括諸如移動(dòng)電話、智能電話、筆記本電腦、數(shù)字廣播接收器、pda(個(gè)人數(shù)字助理)、pad(平板電腦)、pmp(便攜式多媒體播放器)、導(dǎo)航裝置等,本領(lǐng)域技術(shù)人員將理解的是,除了特別用于移動(dòng)目的的元件之外,根據(jù)本發(fā)明的實(shí)施方式的構(gòu)造也能夠應(yīng)用于固定類(lèi)型的終端。圖1為實(shí)現(xiàn)本發(fā)明各個(gè)實(shí)施例的一個(gè)移動(dòng)終端的硬件結(jié)構(gòu)示意圖。移動(dòng)終端100可以包括無(wú)線通信單元110、a/v(音頻/視頻)輸入單元120、用戶(hù)輸入單元130、感測(cè)單元140、輸出單元150、存儲(chǔ)器160、接口單元170、控制器180和電源單元190等等。圖1示出了具有各種組件的移動(dòng)終端,但是應(yīng)理解的是,并不要求實(shí)施所有示出的組件??梢蕴娲貙?shí)施更多或更少的組件。將在下面詳細(xì)描述移動(dòng)終端的元件。無(wú)線通信單元110通常包括一個(gè)或多個(gè)組件,其允許移動(dòng)終端100與無(wú)線通信系統(tǒng)或網(wǎng)絡(luò)之間的無(wú)線電通信。例如,無(wú)線通信單元可以包括移動(dòng)通信模塊111、無(wú)線互聯(lián)網(wǎng)模塊112和短距無(wú)線通信模塊113中的至少一個(gè)。移動(dòng)通信模塊111將無(wú)線電信號(hào)發(fā)送到基站(例如,接入點(diǎn)、節(jié)點(diǎn)b等等)、外部終端以及服務(wù)器中的至少一個(gè)和/或從其接收無(wú)線電信號(hào)。這樣的無(wú)線電信號(hào)可以包括語(yǔ)音通話信號(hào)、視頻通話信號(hào)、或者根據(jù)文本和/或多媒體消息發(fā)送和/或接收的各種類(lèi)型的數(shù)據(jù)。無(wú)線互聯(lián)網(wǎng)模塊112支持移動(dòng)終端的無(wú)線互聯(lián)網(wǎng)接入。該模塊可以?xún)?nèi)部或外部地耦接到終端。該模塊所涉及的無(wú)線互聯(lián)網(wǎng)接入技術(shù)可以包括wibro(無(wú)線寬帶)、wimax(全球微波互聯(lián)接入)、hsdpa(高速下行鏈路分組接入)等等。短距無(wú)線通信模塊113是用于支持短程通信的模塊。短程通信技術(shù)的一些示例包括wlan(無(wú)線lan)(wi-fi)、藍(lán)牙tm、射頻識(shí)別(rfid)、紅外數(shù)據(jù)協(xié)會(huì)(irda)、超寬帶(uwb)、紫蜂tm以及近場(chǎng)通訊(nfc)等等。a/v輸入單元120用于接收音頻或視頻信號(hào)。a/v輸入單元120可以包括相機(jī)121和麥克風(fēng)122,相機(jī)121對(duì)在視頻捕獲模式或圖像捕獲模式中由圖像捕獲裝置獲得的靜態(tài)圖片或視頻的圖像數(shù)據(jù)進(jìn)行處理。處理后的圖像幀可以顯示在顯示單元151上。經(jīng)相機(jī)121處理后的圖像幀可以存儲(chǔ)在存儲(chǔ)器160(或其它存儲(chǔ)介質(zhì))中或者經(jīng)由無(wú)線通信單元110進(jìn)行發(fā)送,可以根據(jù)移動(dòng)終端的構(gòu)造提供兩個(gè)或更多相機(jī)121。麥克風(fēng)122可以在電話通話模式、記錄模式、語(yǔ)音識(shí)別模式等等運(yùn)行模式中經(jīng)由麥克風(fēng)接收聲音(音頻數(shù)據(jù)),并且能夠?qū)⑦@樣的聲音處理為音頻數(shù)據(jù)。處理后的音頻(語(yǔ)音)數(shù)據(jù)可以在電話通話模式的情況下轉(zhuǎn)換為可經(jīng)由移動(dòng)通信模塊112發(fā)送到移動(dòng)通信基站的格式輸出。麥克風(fēng)122可以實(shí)施各種類(lèi)型的噪聲消除(或抑制)算法以消除(或抑制)在接收和發(fā)送音頻信號(hào)的過(guò)程中產(chǎn)生的噪聲或者干擾。用戶(hù)輸入單元130可以根據(jù)用戶(hù)輸入的命令生成鍵輸入數(shù)據(jù)以控制移動(dòng)終端的各種操作。用戶(hù)輸入單元130允許用戶(hù)輸入各種類(lèi)型的信息,并且可以包括鍵盤(pán)、鍋?zhàn)衅?、觸摸板(例如,檢測(cè)由于被接觸而導(dǎo)致的電阻、壓力、電容等等的變化的觸敏組件)、滾輪、搖桿等等。特別地,當(dāng)觸摸板以層的形式疊加在顯示單元151上時(shí),可以形成觸摸屏。感測(cè)單元140檢測(cè)移動(dòng)終端100的當(dāng)前狀態(tài),(例如,移動(dòng)終端100的打開(kāi)或關(guān)閉狀態(tài))、移動(dòng)終端100的位置、用戶(hù)對(duì)于移動(dòng)終端100的接觸(即,觸摸輸入)的有無(wú)、移動(dòng)終端100的取向、移動(dòng)終端100的加速或減速移動(dòng)和方向等等,并且生成用于控制移動(dòng)終端100的操作的命令或信號(hào)。例如,當(dāng)移動(dòng)終端100實(shí)施為滑動(dòng)型移動(dòng)電話時(shí),感測(cè)單元140可以感測(cè)該滑動(dòng)型電話是打開(kāi)還是關(guān)閉。另外,感測(cè)單元140能夠檢測(cè)電源單元190是否提供電力或者接口單元170是否與外部裝置耦接。接口單元170用作至少一個(gè)外部裝置與移動(dòng)終端100連接可以通過(guò)的接口。例如,外部裝置可以包括有線或無(wú)線頭戴式耳機(jī)端口、外部電源(或電池充電器)端口、有線或無(wú)線數(shù)據(jù)端口、存儲(chǔ)卡端口、用于連接具有識(shí)別模塊的裝置的端口、音頻輸入/輸出(i/o)端口、視頻i/o端口、耳機(jī)端口等等。識(shí)別模塊可以是存儲(chǔ)用于驗(yàn)證用戶(hù)使用移動(dòng)終端100的各種信息并且可以包括用戶(hù)識(shí)別模塊(uim)、客戶(hù)識(shí)別模塊(sim)、通用客戶(hù)識(shí)別模塊(usim)等等。另外,具有識(shí)別模塊的裝置(下面稱(chēng)為"識(shí)別裝置")可以采取智能卡的形式,因此,識(shí)別裝置可以經(jīng)由端口或其它連接裝置與移動(dòng)終端100連接。接口單元170可以用于接收來(lái)自外部裝置的輸入(例如,數(shù)據(jù)信息、電力等等)并且將接收到的輸入傳輸?shù)揭苿?dòng)終端100內(nèi)的一個(gè)或多個(gè)元件或者可以用于在移動(dòng)終端和外部裝置之間傳輸數(shù)據(jù)。另外,當(dāng)移動(dòng)終端100與外部底座連接時(shí),接口單元170可以用作允許通過(guò)其將電力從底座提供到移動(dòng)終端100的路徑或者可以用作允許從底座輸入的各種命令信號(hào)通過(guò)其傳輸?shù)揭苿?dòng)終端的路徑。從底座輸入的各種命令信號(hào)或電力可以用作用于識(shí)別移動(dòng)終端是否準(zhǔn)確地安裝在底座上的信號(hào)。輸出單元150被構(gòu)造為以視覺(jué)、音頻和/或觸覺(jué)方式提供輸出信號(hào)(例如,音頻信號(hào)、視頻信號(hào)、警報(bào)信號(hào)、振動(dòng)信號(hào)等等)。輸出單元150可以包括顯示單元151、音頻輸出模塊152等。顯示單元151可以顯示在移動(dòng)終端100中處理的信息。例如,當(dāng)移動(dòng)終端100處于電話通話模式時(shí),顯示單元151可以顯示與通話或其它通信(例如,文本消息收發(fā)、多媒體文件下載等等)相關(guān)的用戶(hù)界面(ui)或圖形用戶(hù)界面(gui)。當(dāng)移動(dòng)終端100處于視頻通話模式或者圖像捕獲模式時(shí),顯示單元151可以顯示捕獲的圖像和/或接收的圖像、顯示出視頻或圖像以及相關(guān)功能的ui或gui等等。同時(shí),當(dāng)顯示單元151和觸摸板以層的形式彼此疊加以形成觸摸屏?xí)r,顯示單元151可以用作輸入裝置和輸出裝置。顯示單元151可以包括液晶顯示器(lcd)、薄膜晶體管lcd(tft-lcd)、有機(jī)發(fā)光二極管(oled)顯示器、柔性顯示器、三維(3d)顯示器等等中的至少一種。這些顯示器中的一些可以被構(gòu)造為透明狀以允許用戶(hù)從外部觀看,這可以稱(chēng)為透明顯示器,典型的透明顯示器可以例如為toled(透明有機(jī)發(fā)光二極管)顯示器等等。根據(jù)特定想要的實(shí)施方式,移動(dòng)終端100可以包括兩個(gè)或更多顯示單元(或其它顯示裝置),例如,移動(dòng)終端可以包括外部顯示單元(未示出)和內(nèi)部顯示單元(未示出)。觸摸屏可用于檢測(cè)觸摸輸入壓力以及觸摸輸入位置和觸摸輸入面積。音頻輸出模塊152可以在移動(dòng)終端處于呼叫信號(hào)接收模式、通話模式、記錄模式、語(yǔ)音識(shí)別模式、廣播接收模式等等模式下時(shí),將無(wú)線通信單元110接收的或者在存儲(chǔ)器160中存儲(chǔ)的音頻數(shù)據(jù)轉(zhuǎn)換音頻信號(hào)并且輸出為聲音。而且,音頻輸出模塊152可以提供與移動(dòng)終端100執(zhí)行的特定功能相關(guān)的音頻輸出(例如,呼叫信號(hào)接收聲音、消息接收聲音等等)。音頻輸出模塊152可以包括揚(yáng)聲器、蜂鳴器等等。存儲(chǔ)器160可以存儲(chǔ)由控制器180執(zhí)行的處理和控制操作的軟件程序等等,例如,可以存儲(chǔ)實(shí)現(xiàn)本發(fā)明應(yīng)用修復(fù)方法的軟件程序,或者可以暫時(shí)地存儲(chǔ)己經(jīng)輸出或?qū)⒁敵龅臄?shù)據(jù)(例如,電話簿、消息、靜態(tài)圖像、視頻等等)。而且,存儲(chǔ)器160可以存儲(chǔ)關(guān)于當(dāng)觸摸施加到觸摸屏?xí)r輸出的各種方式的振動(dòng)和音頻信號(hào)的數(shù)據(jù)。存儲(chǔ)器160可以包括至少一種類(lèi)型的存儲(chǔ)介質(zhì),所述存儲(chǔ)介質(zhì)包括閃存、硬盤(pán)、多媒體卡、卡型存儲(chǔ)器(例如,sd或dx存儲(chǔ)器等等)、隨機(jī)訪問(wèn)存儲(chǔ)器(ram)、靜態(tài)隨機(jī)訪問(wèn)存儲(chǔ)器(sram)、只讀存儲(chǔ)器(rom)、電可擦除可編程只讀存儲(chǔ)器(eeprom)、可編程只讀存儲(chǔ)器(prom)、磁性存儲(chǔ)器、磁盤(pán)、光盤(pán)等等。而且,移動(dòng)終端100可以與通過(guò)網(wǎng)絡(luò)連接執(zhí)行存儲(chǔ)器160的存儲(chǔ)功能的網(wǎng)絡(luò)存儲(chǔ)裝置協(xié)作??刂破?80通??刂埔苿?dòng)終端的總體操作。例如,控制器180執(zhí)行與語(yǔ)音通話、數(shù)據(jù)通信、視頻通話等等相關(guān)的控制和處理??刂破?80可以執(zhí)行模式識(shí)別處理,以將在觸摸屏上執(zhí)行的手寫(xiě)輸入或者圖片繪制輸入識(shí)別為字符或圖像。電源單元190在控制器180的控制下接收外部電力或內(nèi)部電力并且提供操作各元件和組件所需的適當(dāng)?shù)碾娏Α_@里描述的各種實(shí)施方式可以以使用例如計(jì)算機(jī)軟件、硬件或其任何組合的計(jì)算機(jī)可讀介質(zhì)來(lái)實(shí)施。對(duì)于硬件實(shí)施,這里描述的實(shí)施方式可以通過(guò)使用特定用途集成電路(asic)、數(shù)字信號(hào)處理器(dsp)、數(shù)字信號(hào)處理裝置(dspd)、可編程邏輯裝置(pld)、現(xiàn)場(chǎng)可編程門(mén)陣列(fpga)、處理器、控制器、微控制器、微處理器、被設(shè)計(jì)為執(zhí)行這里描述的功能的電子單元中的至少一種來(lái)實(shí)施,在一些情況下,這樣的實(shí)施方式可以在控制器180中實(shí)施。對(duì)于軟件實(shí)施,諸如過(guò)程或功能的實(shí)施方式可以與允許執(zhí)行至少一種功能或操作的單獨(dú)的軟件模塊來(lái)實(shí)施。軟件代碼可以由以任何適當(dāng)?shù)木幊陶Z(yǔ)言編寫(xiě)的軟件應(yīng)用程序(或程序)來(lái)實(shí)施,軟件代碼可以存儲(chǔ)在存儲(chǔ)器160中并且由控制器180執(zhí)行?;谏鲜鲆苿?dòng)終端硬件結(jié)構(gòu),提出本發(fā)明移動(dòng)終端的各個(gè)實(shí)施例。參照?qǐng)D2,在本發(fā)明移動(dòng)終端的第一實(shí)施例中,該移動(dòng)終端包括:第一獲取模塊10,用于在啟動(dòng)待修復(fù)應(yīng)用時(shí),獲取對(duì)應(yīng)待修復(fù)應(yīng)用的補(bǔ)丁包,其中,獲取的補(bǔ)丁包包括唯一可執(zhí)行文件,該唯一可執(zhí)行文件攜帶待修復(fù)應(yīng)用發(fā)生錯(cuò)誤的類(lèi)所對(duì)應(yīng)的修復(fù)后的正確類(lèi);第二獲取模塊20,用于獲取對(duì)應(yīng)待修復(fù)應(yīng)用各可執(zhí)行文件的第一數(shù)組,并構(gòu)造對(duì)應(yīng)前述唯一可執(zhí)行文件的第二數(shù)組;修復(fù)模塊30,用于將第一數(shù)組與第二數(shù)組合并為一個(gè)數(shù)組,并將唯一可執(zhí)行文件作為合并后數(shù)組的第一個(gè)可執(zhí)行文件,以供加載。為便于理解本發(fā)明方案,以下首先結(jié)合附圖對(duì)本發(fā)明采用的multidex分包技術(shù)進(jìn)行簡(jiǎn)要說(shuō)明。在安卓系統(tǒng)中,可執(zhí)行文件都存儲(chǔ)在dex文件中,而dex文件的方法數(shù)量是有限制的,即一個(gè)單一的dex文件的方法總數(shù)最多為65536。為了應(yīng)對(duì)該問(wèn)題,谷歌發(fā)布了multidex分包技術(shù)來(lái)解決該問(wèn)題。簡(jiǎn)單來(lái)說(shuō),multidex分包技術(shù)就是將類(lèi)文件打包成多個(gè)dex文件,以繞過(guò)dex方法數(shù)量的限制以及安裝時(shí)的檢查,然后在運(yùn)行時(shí)再動(dòng)態(tài)加載其它的dex文件(注:安卓系統(tǒng)版本5.0之后,系統(tǒng)在安裝應(yīng)用時(shí)會(huì)掃描和優(yōu)化應(yīng)用包中所有的dex文件),如圖3所示??梢钥闯?,multidex分包實(shí)際上就是把多個(gè)dex文件(即安卓系統(tǒng)的可執(zhí)行文件,等同于windows系統(tǒng)的exe文件)加載到應(yīng)用的類(lèi)加載器中。基于multidex分包技術(shù),提出本發(fā)明移動(dòng)終端的應(yīng)用熱修復(fù)方案,該方案支持類(lèi)方法、變量的改變,適用于緊急情況下的應(yīng)急措施,能夠?qū)崿F(xiàn)無(wú)需升級(jí)應(yīng)用而快速修復(fù)應(yīng)用問(wèn)題的功能。在本實(shí)施例中,預(yù)先在應(yīng)用中埋設(shè)修復(fù)邏輯,當(dāng)應(yīng)用運(yùn)行錯(cuò)誤且需要修復(fù)時(shí),若修復(fù)問(wèn)題的代碼量很少(可設(shè)置門(mén)限值進(jìn)行判決,具體取值本發(fā)明不做限制)并且符合熱修復(fù)的約束條件時(shí),預(yù)埋的修復(fù)邏輯將啟動(dòng),對(duì)待修復(fù)應(yīng)用進(jìn)行熱修復(fù)。其中,熱修復(fù)的約束條件包括:(1)移動(dòng)終端的系統(tǒng)需為安卓系統(tǒng);(2)適用已有正式版本的安卓系統(tǒng),對(duì)未來(lái)的系統(tǒng)版本需要重新適配;(3)對(duì)某些高度定制的移動(dòng)終端可能存在適配問(wèn)題,從而影響修復(fù)成功率;參照?qǐng)D4,首先,假設(shè)某應(yīng)用的b.class(錯(cuò)誤類(lèi))有問(wèn)題,將該應(yīng)用作為待修復(fù)應(yīng)用,并對(duì)b.class進(jìn)行修復(fù)后,得到正確類(lèi)b’.class,我們將b’.class單獨(dú)打包為一個(gè)獨(dú)立的可執(zhí)行文件(即圖示patch.dex文件),得到補(bǔ)丁包,以供移動(dòng)終端在進(jìn)行熱修復(fù)時(shí)進(jìn)行獲取。第一獲取模塊10實(shí)時(shí)對(duì)移動(dòng)終端的應(yīng)用運(yùn)行狀態(tài)進(jìn)行偵測(cè),當(dāng)移動(dòng)終端啟動(dòng)待修復(fù)應(yīng)用時(shí),獲取到對(duì)應(yīng)待修復(fù)應(yīng)用的補(bǔ)丁包。其中,獲取到的補(bǔ)丁包包括唯一可執(zhí)行文件,該唯一可執(zhí)行文件攜帶待修復(fù)應(yīng)用發(fā)生錯(cuò)誤的類(lèi)所對(duì)應(yīng)的修復(fù)后的正確類(lèi)。其中,補(bǔ)丁包可從移動(dòng)終端本地獲取也可從云端服務(wù)器實(shí)時(shí)獲取,本發(fā)明不做具體限制。如圖5所示,在第一獲取模塊10獲取到補(bǔ)丁包之后,第二獲取模塊20通過(guò)當(dāng)前的類(lèi)加載器pathclassloader(路徑類(lèi)加載器,安卓系統(tǒng)的默認(rèn)類(lèi)加載器)獲取待修復(fù)應(yīng)用各可執(zhí)行文件的第一數(shù)組,即當(dāng)前dexpathlist(dex路徑列表)下的dexelements(dex元素)數(shù)組110,可以看出,該第一數(shù)組包括兩個(gè)元素:classes.dex和classes2.dex。具體的代碼實(shí)現(xiàn)如下所示:如圖6所示,第二獲取模塊20進(jìn)一步構(gòu)造對(duì)應(yīng)前述唯一可執(zhí)行文件(patch.dex)的第二數(shù)組,具體的:第二獲取模塊20新建類(lèi)加載器dexclassloader加載補(bǔ)丁包中的唯一可執(zhí)行文件(patch.dex),首先,獲取patch.dex的路徑,具體的代碼實(shí)現(xiàn)如下(假設(shè)第一獲取模塊10將獲取的補(bǔ)丁包存儲(chǔ)在移動(dòng)終端的sd卡上):stringpatchpath=environment.getexternalstoragedirectory().getabsolutepath()+"/patch.dex";dexclassloaderdexclassloader=newdexclassloader(patchpath,defaultdexoptpath,patchpath,getpathclassloader());然后,加載patch.dex,構(gòu)建第二數(shù)組,具體的代碼實(shí)現(xiàn)如下:objectnewdexelements=getdexelements(getpathlist(dexclassloader));如圖6所示,構(gòu)建的第二數(shù)組即新的dex路徑列表下的dex元素?cái)?shù)組120,可以看出,該第二數(shù)組僅包括一個(gè)元素,即patch.dex。在第二獲取模塊20獲取得到第一數(shù)組(圖5所示的原dex元素?cái)?shù)組110)以及第二數(shù)組(圖6所示的新的dex元素?cái)?shù)組120)之后,由修復(fù)模塊30作進(jìn)一步處理。具體的,如圖7所示,修復(fù)模塊30通過(guò)反射機(jī)制實(shí)現(xiàn)第一數(shù)組和第二數(shù)組的合并,得到合并后的dex元素?cái)?shù)組130,并將前述唯一可執(zhí)行文件patch.dex作為合并后的dex元素?cái)?shù)組130的第一個(gè)可執(zhí)行文件,可以看出,合并后的dex元素?cái)?shù)組130包括三個(gè)元素:分別為排列數(shù)組首位的patch.dex,以及排列靠后的classes.dex和classes2.dex。具體的代碼實(shí)現(xiàn)如下所示:objectpathlist=getpathlist(getpathclassloader());reflectionutils.setfield(pathlist,pathlist.getclass(),"dexelements",alldexelements);結(jié)合參照?qǐng)D8,對(duì)本發(fā)明的類(lèi)替換原理進(jìn)行說(shuō)明:如圖8所示,在修復(fù)前加載類(lèi)文件時(shí),會(huì)遍歷修復(fù)前的dex元素?cái)?shù)組210,得到原可執(zhí)行文件2101(即圖示原.dex),根據(jù)類(lèi)名獲取到原類(lèi)(原.class),即錯(cuò)誤類(lèi);在修復(fù)后加載類(lèi)文件時(shí),遍歷修復(fù)后的dex元素?cái)?shù)組220,將首先得到補(bǔ)丁包中的可執(zhí)行文件2201(即圖示patch.dex),再根據(jù)類(lèi)名獲取到正確類(lèi)(正確.class),而不會(huì)去加載錯(cuò)誤的原可執(zhí)行文件2101。以錯(cuò)誤類(lèi)b.class和修復(fù)后的正確類(lèi)b’.class為例,由于原可執(zhí)行文件classes.dex與補(bǔ)丁包中的可執(zhí)行文件patch.dex中都有同樣的b.class類(lèi),而通過(guò)替換,將patch.dex中的b’.class放到了數(shù)組的前面,在加載時(shí)會(huì)首先會(huì)找到b’.class進(jìn)行加載,從而實(shí)現(xiàn)了對(duì)錯(cuò)誤類(lèi)b.class的熱修復(fù)。本發(fā)明提出的移動(dòng)終端,通過(guò)在啟動(dòng)待修復(fù)應(yīng)用時(shí),獲取到對(duì)應(yīng)待修復(fù)應(yīng)用的補(bǔ)丁包,進(jìn)而構(gòu)造與補(bǔ)丁包攜帶唯一可執(zhí)行文件對(duì)應(yīng)的第二數(shù)組,并將該第二數(shù)組與對(duì)應(yīng)待修復(fù)應(yīng)用各可執(zhí)行文件的第一數(shù)組合并為一個(gè)數(shù)組,將前述唯一可執(zhí)行文件作為合并后數(shù)組的第一個(gè)可執(zhí)行文件,從而在加載類(lèi)文件時(shí),首先加載前述唯一可執(zhí)行文件攜帶的待修復(fù)應(yīng)用發(fā)生錯(cuò)誤的類(lèi)所對(duì)應(yīng)的修復(fù)后的正確類(lèi),而不加載錯(cuò)誤類(lèi),避免了現(xiàn)有技術(shù)在應(yīng)用運(yùn)行錯(cuò)誤時(shí)需要按照新版本的應(yīng)用才能修復(fù)錯(cuò)誤,又不會(huì)中斷用戶(hù)使用應(yīng)用,實(shí)現(xiàn)了應(yīng)用的高效修復(fù)。進(jìn)一步地,為了確保補(bǔ)丁包的有效性,提出了本發(fā)明移動(dòng)終端的第二實(shí)施例,與前述第一實(shí)施例的區(qū)別在于,在本實(shí)施例中,移動(dòng)終端還包括校驗(yàn)?zāi)K,用于對(duì)獲取的補(bǔ)丁包進(jìn)行安全校驗(yàn);第二獲取模塊20還用于在安全校驗(yàn)通過(guò)后,獲取對(duì)應(yīng)待修復(fù)應(yīng)用各可執(zhí)行文件的第一數(shù)組,并構(gòu)造對(duì)應(yīng)前述唯一可執(zhí)行文件的第二數(shù)組。需要說(shuō)明的是,以下僅對(duì)校驗(yàn)?zāi)K的校驗(yàn)操作進(jìn)行說(shuō)明,其他可參照前述第一實(shí)施例,此處不再贅述。在本實(shí)施例中,在第一獲取模塊10獲取到補(bǔ)丁包之后,首先由校驗(yàn)?zāi)K對(duì)獲取的補(bǔ)丁包進(jìn)行安全校驗(yàn),以確定補(bǔ)丁包在傳輸過(guò)程中未被篡改也未被偽造,從而確保補(bǔ)丁包的有效性。在第一獲取模塊10獲取的補(bǔ)丁包通過(guò)安全校驗(yàn)之后,校驗(yàn)?zāi)K指示第二獲取模塊20作進(jìn)一步處理,具體可參照前述第一實(shí)施例,此處不再贅述。進(jìn)一步地,在本實(shí)施例中,校驗(yàn)?zāi)K還用于采用約定的消息摘要算法計(jì)算前述唯一可執(zhí)行文件的消息摘要;還用于將計(jì)算得到的消息摘要與補(bǔ)丁包攜帶的消息摘要進(jìn)行比對(duì),其中,在二者比對(duì)一致時(shí),確定補(bǔ)丁包通過(guò)安全校驗(yàn)。需要說(shuō)明的是,考慮到消息摘要算法不存在密鑰的管理與分發(fā)問(wèn)題,適合于分布式網(wǎng)絡(luò)上使用的特點(diǎn),在本實(shí)施例中采用消息摘要算法確保補(bǔ)丁包的有效性。具體的,由補(bǔ)丁包發(fā)布方與補(bǔ)丁包獲取方預(yù)先約定采用的具體消息摘要算法,如md5算法和sha-1算法等。在補(bǔ)丁包發(fā)布方發(fā)布補(bǔ)丁包時(shí),采用約定的消息摘要算法進(jìn)行消息摘要的計(jì)算,并將計(jì)算的消息摘要與攜帶修復(fù)后的正確類(lèi)的可執(zhí)行文件打包為補(bǔ)丁包進(jìn)行發(fā)布。校驗(yàn)?zāi)K在第一獲取模塊10獲取到補(bǔ)丁包之后,采用約定的消息摘要算法計(jì)算前述唯一可執(zhí)行文件的消息摘要,并將計(jì)算得到的消息摘要與補(bǔ)丁包攜帶的消息摘要進(jìn)行比對(duì),若二者比對(duì)一致,則可確定補(bǔ)丁包中的可執(zhí)行文件未被篡改,也未被偽造,確定第一獲取模塊10獲取的補(bǔ)丁包通過(guò)安全校驗(yàn),是有效的補(bǔ)丁包。進(jìn)一步地,基于前述第一或第二實(shí)施例,提出本發(fā)明移動(dòng)終端的第三實(shí)施例,本實(shí)施例中,第一獲取模塊10還用于發(fā)送補(bǔ)丁包獲取請(qǐng)求至預(yù)設(shè)服務(wù)器,該補(bǔ)丁包獲取請(qǐng)求包括待修復(fù)應(yīng)用的版本信息以及已安裝補(bǔ)丁包的版本信息;還用于接收預(yù)設(shè)服務(wù)器基于補(bǔ)丁包獲取請(qǐng)求返回的對(duì)應(yīng)待修復(fù)應(yīng)用的最新版本的補(bǔ)丁包。需要說(shuō)明的是,本實(shí)施例在前述實(shí)施例的基礎(chǔ)上,進(jìn)一步對(duì)第一獲取模塊10獲取補(bǔ)丁包的操作進(jìn)行描述,其他可參照前述實(shí)施例,此處不再贅述。參照?qǐng)D9,本發(fā)明移動(dòng)終端100的功能實(shí)現(xiàn)需要由預(yù)設(shè)服務(wù)器200配合實(shí)現(xiàn),其中,移動(dòng)終端100負(fù)責(zé)補(bǔ)丁包的下載、更新本地補(bǔ)丁包,應(yīng)用補(bǔ)丁包熱修復(fù)待修復(fù)應(yīng)用;預(yù)設(shè)服務(wù)器端需要對(duì)補(bǔ)丁包進(jìn)行管理與分發(fā)。具體的,第一獲取模塊10在偵測(cè)到移動(dòng)終端100啟動(dòng)待修復(fù)應(yīng)用時(shí),會(huì)向預(yù)設(shè)服務(wù)器200查詢(xún)是否有存在對(duì)應(yīng)待修復(fù)應(yīng)用的補(bǔ)丁包,如果存在則下載。具體的,第一獲取模塊10發(fā)送補(bǔ)丁包獲取請(qǐng)求至預(yù)設(shè)服務(wù)器200,向預(yù)設(shè)服務(wù)器200請(qǐng)求對(duì)應(yīng)待修復(fù)應(yīng)用的最新補(bǔ)丁包,其中,補(bǔ)丁包獲取請(qǐng)求包括待修復(fù)應(yīng)用的版本信息以及已安裝補(bǔ)丁包的版本信息,具體數(shù)據(jù)定義如下表1所示:字段名必選數(shù)據(jù)類(lèi)型描述appversionname是stringandroidmanifest中的版本名稱(chēng)appversioncode是stringandroidmanifest中的版本號(hào)patchversionname是string補(bǔ)丁包的版本名稱(chēng)patchversioncode是string補(bǔ)丁包的版本號(hào)packagename是string待修復(fù)應(yīng)用的包名表1在接收到第一獲取模塊10發(fā)送的補(bǔ)丁包獲取請(qǐng)求之后,預(yù)設(shè)服務(wù)器200基于接收的補(bǔ)丁包獲取請(qǐng)求向第一獲取模塊10返回對(duì)應(yīng)待修復(fù)應(yīng)用的最新版本的補(bǔ)丁包。進(jìn)一步地,為確保預(yù)設(shè)服務(wù)器200分發(fā)補(bǔ)丁包的時(shí)效性,在本實(shí)施例中,修復(fù)模塊30還用于在偵測(cè)到待修復(fù)應(yīng)用運(yùn)行錯(cuò)誤時(shí),確定待修復(fù)應(yīng)用發(fā)生錯(cuò)誤的類(lèi);還用于將確定的類(lèi)信息上傳至預(yù)設(shè)服務(wù)器200,以供其他終端300在基于前述類(lèi)信息修復(fù)發(fā)生錯(cuò)誤的類(lèi)之后,將修復(fù)后的正確類(lèi)打包為可執(zhí)行文件,并生成對(duì)應(yīng)的補(bǔ)丁包上傳至預(yù)設(shè)服務(wù)器200。其中,其他終端在生成補(bǔ)丁包時(shí),可通過(guò)差分工具來(lái)生成,具體可參照現(xiàn)有安卓系統(tǒng)的ota技術(shù)實(shí)現(xiàn),此處不再贅述。進(jìn)一步的,本發(fā)明還提供一種應(yīng)用修復(fù)方法,由圖2所示的移動(dòng)終端執(zhí)行,結(jié)合參照?qǐng)D2和圖10,對(duì)應(yīng)于本發(fā)明移動(dòng)終端的第一實(shí)施例,在本發(fā)明應(yīng)用修復(fù)方法的第一實(shí)施例中,該應(yīng)用修復(fù)方法包括:步驟s10,在啟動(dòng)待修復(fù)應(yīng)用時(shí),獲取對(duì)應(yīng)待修復(fù)應(yīng)用的補(bǔ)丁包,其中,獲取的補(bǔ)丁包包括唯一可執(zhí)行文件,該唯一可執(zhí)行文件攜帶待修復(fù)應(yīng)用發(fā)生錯(cuò)誤的類(lèi)所對(duì)應(yīng)的修復(fù)后的正確類(lèi);步驟s20,獲取對(duì)應(yīng)待修復(fù)應(yīng)用各可執(zhí)行文件的第一數(shù)組,并構(gòu)造對(duì)應(yīng)前述唯一可執(zhí)行文件的第二數(shù)組;步驟s30,將第一數(shù)組與第二數(shù)組合并為一個(gè)數(shù)組,并將唯一可執(zhí)行文件作為合并后數(shù)組的第一個(gè)可執(zhí)行文件,以供加載。為便于理解本發(fā)明方案,以下首先結(jié)合附圖對(duì)本發(fā)明采用的multidex分包技術(shù)進(jìn)行簡(jiǎn)要說(shuō)明。在安卓系統(tǒng)中,可執(zhí)行文件都存儲(chǔ)在dex文件中,而dex文件的方法數(shù)量是有限制的,即一個(gè)單一的dex文件的方法總數(shù)最多為65536。為了應(yīng)對(duì)該問(wèn)題,谷歌發(fā)布了multidex分包技術(shù)來(lái)解決該問(wèn)題。簡(jiǎn)單來(lái)說(shuō),multidex分包技術(shù)就是將類(lèi)文件打包成多個(gè)dex文件,以繞過(guò)dex方法數(shù)量的限制以及安裝時(shí)的檢查,然后在運(yùn)行時(shí)再動(dòng)態(tài)加載其它的dex文件(注:安卓系統(tǒng)版本5.0之后,系統(tǒng)在安裝應(yīng)用時(shí)會(huì)掃描和優(yōu)化應(yīng)用包中所有的dex文件),如圖3所示??梢钥闯?,multidex分包實(shí)際上就是把多個(gè)dex文件(即安卓系統(tǒng)的可執(zhí)行文件,等同于windows系統(tǒng)的exe文件)加載到應(yīng)用的類(lèi)加載器中。基于multidex分包技術(shù),提出本發(fā)明移動(dòng)終端的應(yīng)用熱修復(fù)方案,該方案支持類(lèi)方法、變量的改變,適用于緊急情況下的應(yīng)急措施,能夠?qū)崿F(xiàn)無(wú)需升級(jí)應(yīng)用而快速修復(fù)應(yīng)用問(wèn)題的功能。在本實(shí)施例中,預(yù)先在應(yīng)用中埋設(shè)修復(fù)邏輯,當(dāng)應(yīng)用運(yùn)行錯(cuò)誤且需要修復(fù)時(shí),若修復(fù)問(wèn)題的代碼量很少(可設(shè)置門(mén)限值進(jìn)行判決,具體取值本發(fā)明不做限制)并且符合熱修復(fù)的約束條件時(shí),預(yù)埋的修復(fù)邏輯將啟動(dòng),對(duì)待修復(fù)應(yīng)用進(jìn)行熱修復(fù)。其中,熱修復(fù)的約束條件包括:(3)移動(dòng)終端的系統(tǒng)需為安卓系統(tǒng);(4)適用已有正式版本的安卓系統(tǒng),對(duì)未來(lái)的系統(tǒng)版本需要重新適配;(3)對(duì)某些高度定制的移動(dòng)終端可能存在適配問(wèn)題,從而影響修復(fù)成功率;參照?qǐng)D4,首先,假設(shè)某應(yīng)用的b.class(錯(cuò)誤類(lèi))有問(wèn)題,將該應(yīng)用作為待修復(fù)應(yīng)用,并對(duì)b.class進(jìn)行修復(fù)后,得到正確類(lèi)b’.class,我們將b’.class單獨(dú)打包為一個(gè)獨(dú)立的可執(zhí)行文件(即圖示patch.dex文件),得到補(bǔ)丁包,以供移動(dòng)終端在進(jìn)行熱修復(fù)時(shí)進(jìn)行獲取。第一獲取模塊10實(shí)時(shí)對(duì)移動(dòng)終端的應(yīng)用運(yùn)行狀態(tài)進(jìn)行偵測(cè),當(dāng)移動(dòng)終端啟動(dòng)待修復(fù)應(yīng)用時(shí),獲取到對(duì)應(yīng)待修復(fù)應(yīng)用的補(bǔ)丁包。其中,獲取到的補(bǔ)丁包包括唯一可執(zhí)行文件,該唯一可執(zhí)行文件攜帶待修復(fù)應(yīng)用發(fā)生錯(cuò)誤的類(lèi)所對(duì)應(yīng)的修復(fù)后的正確類(lèi)。其中,補(bǔ)丁包可從移動(dòng)終端本地獲取也可從云端服務(wù)器實(shí)時(shí)獲取,本發(fā)明不做具體限制。如圖5所示,在第一獲取模塊10獲取到補(bǔ)丁包之后,第二獲取模塊20通過(guò)當(dāng)前的類(lèi)加載器pathclassloader(路徑類(lèi)加載器,安卓系統(tǒng)的默認(rèn)類(lèi)加載器)獲取待修復(fù)應(yīng)用各可執(zhí)行文件的第一數(shù)組,即當(dāng)前dexpathlist(dex路徑列表)下的dexelements(dex元素)數(shù)組110,可以看出,該第一數(shù)組包括兩個(gè)元素:classes.dex和classes2.dex。具體的代碼實(shí)現(xiàn)如下所示:如圖6所示,第二獲取模塊20進(jìn)一步構(gòu)造對(duì)應(yīng)前述唯一可執(zhí)行文件(patch.dex)的第二數(shù)組,具體的:第二獲取模塊20新建類(lèi)加載器dexclassloader加載補(bǔ)丁包中的唯一可執(zhí)行文件(patch.dex),首先,獲取patch.dex的路徑,具體的代碼實(shí)現(xiàn)如下(假設(shè)第一獲取模塊10將獲取的補(bǔ)丁包存儲(chǔ)在移動(dòng)終端的sd卡上):stringpatchpath=environment.getexternalstoragedirectory().getabsolutepath()+"/patch.dex";dexclassloaderdexclassloader=newdexclassloader(patchpath,defaultdexoptpath,patchpath,getpathclassloader());然后,加載patch.dex,構(gòu)建第二數(shù)組(即圖6所示新的dexelements數(shù)組),具體的代碼實(shí)現(xiàn)如下:objectnewdexelements=getdexelements(getpathlist(dexclassloader));如圖6所示,構(gòu)建的第二數(shù)組即新的dex路徑列表下的dex元素?cái)?shù)組120,可以看出,該第二數(shù)組僅包括一個(gè)元素,即patch.dex。在第二獲取模塊20獲取得到第一數(shù)組(圖5所示的原dex元素?cái)?shù)組110)以及第二數(shù)組(圖6所示的新的dex元素?cái)?shù)組120)之后,由修復(fù)模塊30作進(jìn)一步處理。具體的,如圖7所示,修復(fù)模塊30通過(guò)反射機(jī)制實(shí)現(xiàn)第一數(shù)組和第二數(shù)組的合并,得到合并后的dex元素?cái)?shù)組130,并將前述唯一可執(zhí)行文件patch.dex作為合并后的dex元素?cái)?shù)組130的第一個(gè)可執(zhí)行文件,可以看出,合并后的dex元素?cái)?shù)組130包括三個(gè)元素:分別為排列數(shù)組首位的patch.dex,以及排列靠后的classes.dex和classes2.dex。具體的代碼實(shí)現(xiàn)如下所示:objectpathlist=getpathlist(getpathclassloader());reflectionutils.setfield(pathlist,pathlist.getclass(),"dexelements",alldexelements);結(jié)合參照?qǐng)D8,對(duì)本發(fā)明的類(lèi)替換原理進(jìn)行說(shuō)明:如圖8所示,在修復(fù)前加載類(lèi)文件時(shí),會(huì)遍歷修復(fù)前的dex元素?cái)?shù)組210,得到原可執(zhí)行文件2101(即圖示原.dex),根據(jù)類(lèi)名獲取到原類(lèi)(原.class),即錯(cuò)誤類(lèi);在修復(fù)后加載類(lèi)文件時(shí),遍歷修復(fù)后的dex元素?cái)?shù)組220,將首先得到補(bǔ)丁包中的可執(zhí)行文件2201(即圖示patch.dex),再根據(jù)類(lèi)名獲取到正確類(lèi)(正確.class),而不會(huì)去加載錯(cuò)誤的原可執(zhí)行文件2101。以錯(cuò)誤類(lèi)b.class和修復(fù)后的正確類(lèi)b’.class為例,由于原可執(zhí)行文件classes.dex與補(bǔ)丁包中的可執(zhí)行文件patch.dex中都有同樣的b.class類(lèi),而通過(guò)替換,將patch.dex中的b’.class放到了數(shù)組的前面,在加載時(shí)會(huì)首先會(huì)找到b’.class進(jìn)行加載,從而實(shí)現(xiàn)了對(duì)錯(cuò)誤類(lèi)b.class的熱修復(fù)。本發(fā)明提出的應(yīng)用修復(fù)方法,通過(guò)在啟動(dòng)待修復(fù)應(yīng)用時(shí),獲取到對(duì)應(yīng)待修復(fù)應(yīng)用的補(bǔ)丁包,進(jìn)而構(gòu)造與補(bǔ)丁包攜帶唯一可執(zhí)行文件對(duì)應(yīng)的第二數(shù)組,并將該第二數(shù)組與對(duì)應(yīng)待修復(fù)應(yīng)用各可執(zhí)行文件的第一數(shù)組合并為一個(gè)數(shù)組,將前述唯一可執(zhí)行文件作為合并后數(shù)組的第一個(gè)可執(zhí)行文件,從而在加載類(lèi)文件時(shí),首先加載前述唯一可執(zhí)行文件攜帶的待修復(fù)應(yīng)用發(fā)生錯(cuò)誤的類(lèi)所對(duì)應(yīng)的修復(fù)后的正確類(lèi),而不加載錯(cuò)誤類(lèi),避免了現(xiàn)有技術(shù)在應(yīng)用運(yùn)行錯(cuò)誤時(shí)需要按照新版本的應(yīng)用才能修復(fù)錯(cuò)誤,又不會(huì)中斷用戶(hù)使用應(yīng)用,實(shí)現(xiàn)了應(yīng)用的高效修復(fù)。進(jìn)一步地,為了確保補(bǔ)丁包的有效性,基于第一實(shí)施例,提出了本發(fā)明應(yīng)用修復(fù)方法的第二實(shí)施例,對(duì)應(yīng)于前述應(yīng)用修復(fù)方法的第二實(shí)施例,在本實(shí)施例中,步驟s20之前,還包括:對(duì)獲取的補(bǔ)丁包進(jìn)行安全校驗(yàn);在安全校驗(yàn)通過(guò)后,轉(zhuǎn)入執(zhí)行步驟s20。需要說(shuō)明的是,以下僅對(duì)補(bǔ)丁包的安全校驗(yàn)操作進(jìn)行說(shuō)明,其他可參照前述第一實(shí)施例,此處不再贅述。在本實(shí)施例中,移動(dòng)終端還包括校驗(yàn)?zāi)K,用于對(duì)獲取的補(bǔ)丁包進(jìn)行安全校驗(yàn);第二獲取模塊20還用于在安全校驗(yàn)通過(guò)后,獲取對(duì)應(yīng)待修復(fù)應(yīng)用各可執(zhí)行文件的第一數(shù)組,并構(gòu)造對(duì)應(yīng)前述唯一可執(zhí)行文件的第二數(shù)組。具體的,在第一獲取模塊10獲取到補(bǔ)丁包之后,首先由校驗(yàn)?zāi)K對(duì)獲取的補(bǔ)丁包進(jìn)行安全校驗(yàn),以確定補(bǔ)丁包在傳輸過(guò)程中未被篡改也未被偽造,從而確保補(bǔ)丁包的有效性。在第一獲取模塊10獲取的補(bǔ)丁包通過(guò)安全校驗(yàn)之后,校驗(yàn)?zāi)K指示第二獲取模塊20作進(jìn)一步處理,具體可參照前述第一實(shí)施例,此處不再贅述。進(jìn)一步地,步驟s20包括:采用約定的消息摘要算法計(jì)算前述唯一可執(zhí)行文件的消息摘要;將計(jì)算得到的消息摘要與補(bǔ)丁包攜帶的消息摘要進(jìn)行比對(duì),其中,在二者比對(duì)一致時(shí),確定補(bǔ)丁包通過(guò)安全校驗(yàn)。在本實(shí)施例中,校驗(yàn)?zāi)K還用于采用約定的消息摘要算法計(jì)算前述唯一可執(zhí)行文件的消息摘要;還用于將計(jì)算得到的消息摘要與補(bǔ)丁包攜帶的消息摘要進(jìn)行比對(duì),其中,在二者比對(duì)一致時(shí),確定補(bǔ)丁包通過(guò)安全校驗(yàn)。需要說(shuō)明的是,考慮到消息摘要算法不存在密鑰的管理與分發(fā)問(wèn)題,適合于分布式網(wǎng)絡(luò)上使用的特點(diǎn),在本實(shí)施例中采用消息摘要算法確保補(bǔ)丁包的有效性。具體的,由補(bǔ)丁包發(fā)布方與補(bǔ)丁包獲取方預(yù)先約定采用的具體消息摘要算法,如md5算法和sha-1算法等。在補(bǔ)丁包發(fā)布方發(fā)布補(bǔ)丁包時(shí),采用約定的消息摘要算法進(jìn)行消息摘要的計(jì)算,并將計(jì)算的消息摘要與攜帶修復(fù)后的正確類(lèi)的可執(zhí)行文件打包為補(bǔ)丁包進(jìn)行發(fā)布。校驗(yàn)?zāi)K在第一獲取模塊10獲取到補(bǔ)丁包之后,采用約定的消息摘要算法計(jì)算前述唯一可執(zhí)行文件的消息摘要,并將計(jì)算得到的消息摘要與補(bǔ)丁包攜帶的消息摘要進(jìn)行比對(duì),若二者比對(duì)一致,則可確定補(bǔ)丁包中的可執(zhí)行文件未被篡改,也未被偽造,確定第一獲取模塊10獲取的補(bǔ)丁包通過(guò)安全校驗(yàn),是有效的補(bǔ)丁包。進(jìn)一步地,基于前述第一或第二實(shí)施例,提出本發(fā)明應(yīng)用修復(fù)方法的第三實(shí)施例,對(duì)應(yīng)于前述移動(dòng)終端的第三實(shí)施例,在本實(shí)施例中,步驟s10包括:發(fā)送補(bǔ)丁包獲取請(qǐng)求至預(yù)設(shè)服務(wù)器,該補(bǔ)丁包獲取請(qǐng)求包括待修復(fù)應(yīng)用的版本信息以及已安裝補(bǔ)丁包的版本信息;接收預(yù)設(shè)服務(wù)器基于補(bǔ)丁包獲取請(qǐng)求返回的對(duì)應(yīng)待修復(fù)應(yīng)用的最新版本的補(bǔ)丁包。需要說(shuō)明的是,本實(shí)施例在前述實(shí)施例的基礎(chǔ)上,進(jìn)一步對(duì)獲取補(bǔ)丁包的操作進(jìn)行描述,其他可參照前述實(shí)施例,此處不再贅述。參照?qǐng)D9,本發(fā)明移動(dòng)終端100的功能實(shí)現(xiàn)需要由預(yù)設(shè)服務(wù)器200配合實(shí)現(xiàn),其中,移動(dòng)終端100負(fù)責(zé)補(bǔ)丁包的下載、更新本地補(bǔ)丁包,應(yīng)用補(bǔ)丁包熱修復(fù)待修復(fù)應(yīng)用;預(yù)設(shè)服務(wù)器端需要對(duì)補(bǔ)丁包進(jìn)行管理與分發(fā)。具體的,第一獲取模塊10在偵測(cè)到移動(dòng)終端100啟動(dòng)待修復(fù)應(yīng)用時(shí),會(huì)向預(yù)設(shè)服務(wù)器200查詢(xún)是否有存在對(duì)應(yīng)待修復(fù)應(yīng)用的補(bǔ)丁包,如果存在則下載。具體的,第一獲取模塊10發(fā)送補(bǔ)丁包獲取請(qǐng)求至預(yù)設(shè)服務(wù)器200,向預(yù)設(shè)服務(wù)器200請(qǐng)求對(duì)應(yīng)待修復(fù)應(yīng)用的最新補(bǔ)丁包,其中,補(bǔ)丁包獲取請(qǐng)求包括待修復(fù)應(yīng)用的版本信息以及已安裝補(bǔ)丁包的版本信息,具體數(shù)據(jù)定義如表1所示。在接收到第一獲取模塊10發(fā)送的補(bǔ)丁包獲取請(qǐng)求之后,預(yù)設(shè)服務(wù)器200基于接收的補(bǔ)丁包獲取請(qǐng)求向第一獲取模塊10返回對(duì)應(yīng)待修復(fù)應(yīng)用的最新版本的補(bǔ)丁包。進(jìn)一步地,為確保預(yù)設(shè)服務(wù)器200分發(fā)補(bǔ)丁包的時(shí)效性,在本實(shí)施例中,步驟s10之前,還包括:在偵測(cè)到待修復(fù)應(yīng)用運(yùn)行錯(cuò)誤時(shí),確定待修復(fù)應(yīng)用發(fā)生錯(cuò)誤的類(lèi);將確定的類(lèi)信息上傳至預(yù)設(shè)服務(wù)器200,以供其他終端300在基于前述類(lèi)信息修復(fù)發(fā)生錯(cuò)誤的類(lèi)之后,將修復(fù)后的正確類(lèi)打包為可執(zhí)行文件,并生成對(duì)應(yīng)的補(bǔ)丁包上傳至預(yù)設(shè)服務(wù)器200。在本實(shí)施例中,修復(fù)模塊30還用于在偵測(cè)到待修復(fù)應(yīng)用運(yùn)行錯(cuò)誤時(shí),確定待修復(fù)應(yīng)用發(fā)生錯(cuò)誤的類(lèi);還用于將確定的類(lèi)信息上傳至預(yù)設(shè)服務(wù)器200,以供其他終端300在基于前述類(lèi)信息修復(fù)發(fā)生錯(cuò)誤的類(lèi)之后,將修復(fù)后的正確類(lèi)打包為可執(zhí)行文件,并生成對(duì)應(yīng)的補(bǔ)丁包上傳至預(yù)設(shè)服務(wù)器200。其中,其他終端在生成補(bǔ)丁包時(shí),可通過(guò)差分工具來(lái)生成,具體可參照現(xiàn)有安卓系統(tǒng)的ota技術(shù)實(shí)現(xiàn),此處不再贅述。需要說(shuō)明的是,在本文中,術(shù)語(yǔ)“包括”、“包含”或者其任何其它變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過(guò)程、方法、物品或者裝置不僅包括那些要素,而且還包括沒(méi)有明確列出的其它要素,或者是還包括為這種過(guò)程、方法、物品或者裝置所固有的要素。在沒(méi)有更多限制的情況下,由語(yǔ)句“包括一個(gè)……”限定的要素,并不排除在包括該要素的過(guò)程、方法、物品或者裝置中還存在另外的相同要素。上述本發(fā)明實(shí)施例序號(hào)僅僅為了描述,不代表實(shí)施例的優(yōu)劣。通過(guò)以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到上述實(shí)施例方法可借助軟件加必需的通用硬件平臺(tái)的方式來(lái)實(shí)現(xiàn),當(dāng)然也可以通過(guò)硬件,但很多情況下前者是更佳的實(shí)施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)(如rom/ram、磁碟、光盤(pán))中,包括若干指令用以使得一臺(tái)終端設(shè)備(可以是手機(jī),計(jì)算機(jī),服務(wù)器,空調(diào)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述的方法。出于解釋的目的,前面的描述使用了特定的術(shù)語(yǔ),以提供對(duì)本發(fā)明的透徹理解。然而,對(duì)本領(lǐng)域的技術(shù)人員來(lái)說(shuō)顯而易見(jiàn)的是,為了實(shí)踐本發(fā)明并不需要具體的細(xì)節(jié)。本發(fā)明的具體實(shí)施例的前述描述是為了圖示和說(shuō)明的目的而呈現(xiàn)。它們并不意在詳盡的或?qū)⒈景l(fā)明限于所公開(kāi)的準(zhǔn)確形式。鑒于上面的教義,許多修改和變化是可能的。為了最好地解釋本發(fā)明的原理及其實(shí)際應(yīng)用而示出并描述了這些實(shí)施例,從而使本領(lǐng)域的其他技術(shù)人員能夠最好地利用本發(fā)明和具有適于預(yù)期的特定使用的各種修改的各種實(shí)施例。意在本發(fā)明的范圍由隨后的權(quán)利要求和其等同物來(lái)限定。當(dāng)前第1頁(yè)12
當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1